1. 序章

バックプロパゲーション(BP)と確率的勾配降下法(SGD)の違いについては多くの混乱があります。 一部の機械学習(ML)の実践者でさえ間違っていることを考えると、これは驚くべきことではなく、さらに混乱を招きます。

要するに、これが違いです。 SGDは、損失関数を最小化するために予測モデルのパラメーターを更新します。 これは、パラメーターに関する損失関数の勾配を使用することによって行われます。 BPは、これらの勾配を計算する1つの方法を提供します。

このチュートリアルでは、このステートメントにゼロから到達します。 SGDから始めて、BPの支援的役割について説明します。 ただし、SGDの確かな直感を得るには、その前身である最急降下法(GD)から始めることが有益です。

2. 最急降下法

GDは、ターゲット関数を最小化する最適化アルゴリズムです。 これは、関数の入力パラメーターを繰り返し更新し、勾配を使用して更新をガイドすることによって行われます。

ここから始める理由は2つあります。

まず、SGDとGDのアルゴリズムはほぼ同じです。 したがって、GDの直感を身に付けると、SGDが理解しやすくなります。

第二に、SGDはGDの固有の弱点のために開発されました。 この弱点を知ることで、MLにおけるSGDの役割が明らかになります。

2.1. GDフォーミュラ

入力変数を持つターゲット関数を考えてみましょう。

最適化を開始するには、この次元空間の初期点が必要です。

次に、この時点でグラデーションが必要になります。

(1)  

では、このグラデーションを使用して初期点を更新するにはどうすればよいでしょうか。

説明するために、最初のコンポーネントを取り上げましょう。 勾配は入力を増やす方向にあることを忘れないでください。 したがって、の場合は増加し、の場合はその逆になります。

したがって、の現在の値に負の勾配を追加する必要があります。 このようにして、アルゴリズムがターゲット関数の最小値に収束することをお勧めします。

これをすべてまとめましょう:

(2)  

現状では、この方程式は確実に最小値に収束しません。 簡単な例でその理由を理解しましょう。

、単純な1次元2次式を取ります。 から始めると、次のポイントは次のとおりです。

(3)  

その後、、、などがあります。

これを回避するために、調整可能な正の係数を含めます。 それはと呼ばれます 学習率 また 刻み幅

これを方程式2に入れましょう。

(4)  

さて、大きすぎる場合でも、最小値をオーバーシュートしたり、最小値から逸脱したりする可能性があります。 ただし、が小さすぎると、割り当てられた最大反復回数の前に収束しない場合があります。 したがって、学習率の選択では考慮すべきことがたくさんあります。

この方法はうまく機能しますが、固有の弱点があります。勾配の計算は、多くの変数を持つターゲット関数には計算コストがかかりすぎます。

ここでSGDが救いの手を差し伸べます。

3. 確率的勾配降下法

SGDには多くのアプリケーションがあります。 それでも、最も一般的なケースに焦点を当てます。SGDを使用して、基礎となる分布から抽出されたデータを使用して予測モデルをトレーニングする場合。 SGDとMLの一般的な直感をしっかりと理解するには、それが何を意味するのかを説明する価値があります。

3.1. 基礎となる分布

基本的に、宇宙は非常に複雑な方法で相互作用するコンポーネントで構成されています。 それらは、データ生成プロセスと考えることができます。

特定のプロセスの場合、基礎となる分布は、考えられる各結果の確率にすぎません。 ただし、この分布は事実上常に不明です。

幸い、特定のプロセスのコンポーネントは相互作用するため、関連するデータには固有の構造があります。 MLの目標は、この構造、つまりデータの機能を抽出することです。

残念ながら、この構造を抽出することは困難であり、MLが長期間アクティブなフィールドであり続ける主な理由です。

簡単な例でこれをより具体的にしましょう。

手で数字を書くデータ生成プロセスを取ります。 MNISTデータセットには、グリッドで表現されたこのプロセスの画像が含まれています。

このデータセットに隠されている特徴を抽出するために、予測モデル(たとえば、ニューラルネットワーク)をトレーニングできます。 SGDはこれを行う1つの方法です。

ただし、このデータセットは、画像のピクセル化やアンチエイリアスなど、多くの変更の結果です。 有限のサンプルのみを持つことと組み合わせると、データは自然に基礎となる分布のノイズの多い表現を反映します。

持ち帰りのメッセージは次のとおりです。 予測モデルは、基礎となる分布から抽出されたデータを使用してトレーニングされます。 SGDのようなアルゴリズムは効果的ですが、モデルのトレーニングに使用されるデータセットの品質によって基本的に制限されます。

それを念頭に置いて、アルゴリズムを詳しく見ていきましょう。

3.2. SGD式

基礎となる分布から取得したサンプルのデータセットがあるとします。

また、予測モデルがあります。ここで、はモデルのパラメータを表します。

データセットはこのモデルに入力され、出力が生成されます。 これらの出力を使用して、モデルのパラメーターを調整してみましょう。

そのためには、目的の出力を決定する必要があります。 通常はそうではありませんが、これがデータセット全体に対して行われると仮定しましょう。 これで、目的の出力が得られました。

最後に、目的の出力とモデル出力の違いを定量化する方法を決定する必要があります。 最小化を目指すコスト関数を使用します。

モデル予測のタイプは、どのコスト関数が最も適切であるかを通知します。 たとえば、回帰問題の賢明な選択は、平均二乗誤差です。

(5)  

GDを使用して、コスト関数の勾配を計算できます。 ただし、多数のパラメーターとデータサンプルを想定する場合、それは計算上実行可能ではありません。

SGDとGDの違いは、各更新ステップで、データセット全体ではなく、1つのサンプルのみがコスト関数に供給されることです。

これが、SGDで stochastic という用語の理由です。これは、データセット全体の勾配のノイズの多い推定値を提供するためです。

これをすべてまとめると、次のようになります。

(6)  

ここで、は式4のように学習率です。

BPがこの図のどこに当てはまるかを確認するために、モデルが複数の層を持つニューラルネットワークであり、パラメーターがユニット間の接続の重みであると仮定します。

入力データから最初のレイヤーへの接続について考えてみます。 入力の一部が変更され、後続のすべてのレイヤーでさらに変更されます。 したがって、の値を変更すると、後続の各レイヤーの出力に非線形の影響があります。

数学的に言えば、これはの計算が評価するために連鎖律を必要とすることを意味します。 を追加すると、取得は簡単に計算が困難になる可能性があります。

ナイーブなアプローチは、各重みの勾配を個別に計算することです。 ただし、この場合、計算の数はレイヤーの数に応じて指数関数的にスケーリングします。 したがって、SGDを実行可能なオプションにするには、より効率的な方法が必要です。

ここでBPが活躍します。

4. 誤差逆伝播法

何よりも、BPはSGDの勾配を計算する多くの方法の1つにすぎないことを述べることが重要です。

他の場所で説明されている詳細は省略します。

BPは動的プログラミングを活用して、計算の繰り返しを防ぎます。 これは、最終層から始めて、一度に1層ずつ勾配を計算することによって行われます。

たとえば、最後から2番目のレイヤーのグラデーションは、最後のレイヤーのグラデーションを考慮する必要があります。 後者はすでに計算されているので、前者に転用することができます。

このように、計算は層の数に比例してスケーリングします。 ナイーブなアプローチからのかなりの改善。

次の図は、1桁の近似として、1回の更新の時間差を比較しています。

数値的に説明するために、20層のニューラルネットワークを考えます。 この場合、BPは約100万倍高速になります。

重要なのは、この速度の向上は、同じ勾配を計算するためのより高速な方法であるため、パフォーマンスコストを発生させないことです。

5. 結論

SGDを深く理解するために、最初にその前身であるGDについて説明しました。 次に、データセットの基本的な分布を簡単に調査し、予測モデルの開発におけるSGDの役割についての直感を作成しました。 最後に、BPはSGDに必要な勾配を効率的に計算する方法にすぎないことを学びました。

うまくいけば、それぞれの役割が明確になりました。 ただし、注意してください MLの実践者は、BPを使用してネットワークをトレーニングしたと主張することがよくあります。 これは技術的に正しくないため、勾配を計算するためにBPでSGDを使用していると解釈する必要があります