勾配バックプロパゲーション手法は、ネットワーク内の各ニューロンの誤差勾配を最後の層から最初の層まで計算する方法です。バックプロパゲーションを使用した勾配の計算に基づく古典的な誤差修正アルゴリズムは、誤って勾配バックプロパゲーション手法と呼ばれることがよくあります。ここで紹介するのはこの方法です。実際には、他の方法、特に二次導関数の計算を使用してエラー修正を行うことができます。
この技術は、これらのエラーの生成に正確に関与した要素の重要性に応じてエラーを修正することから構成されます。ニューラル ネットワークの場合、重大な誤差の生成に寄与するシナプスの重みは、わずかな誤差を生成した重みよりも大きく変更されます。
この原理は、多層パーセプトロン (MLP) などの多層ニューラル ネットワークで効果的に使用される勾配降下型手法の基礎です。勾配降下法は、シナプス重みの最適化された構成に向かって反復的に収束することを目的としています。この状態は、最適化される関数の局所最小値であり、理想的には、この関数の全体最小値 (コスト関数と呼ばれます) になります。
通常、コスト関数はシナプスの重みに関して非線形です。また、下限もあり、学習中にいくつかの注意を払うことで、最適化手順により最終的にニューラルネットワーク内で安定した構成が得られます。
教師あり学習内での使用
教師あり学習では、データがニューラル ネットワークの入力に与えられ、出力が生成されます。出力の値は、ニューロン間の接続、集合関数、活性化関数、シナプスの重みなど、ニューラル ネットワークの構造にリンクされたパラメーターによって異なります。
これらの出力と望ましい出力との差により誤差が形成され、誤差は逆伝播によって修正され、ニューラル ネットワークの重みが変更されます。この誤差を定量化する方法は、実行する学習の種類によって異なる場合があります。このステップを数回適用すると、誤差が減少する傾向があり、ネットワークはより適切な予測を提供します。ただし、極小値を回避することができない場合があるため、通常、勾配降下法が極小値を回避できるようにバックプロパゲーションの式に慣性項 (運動量) を追加します。

アルゴリズム
ニューラル ネットワークの重みは、最初にランダムな値で初期化されます。次に、学習に使用するデータのセットを検討します。各サンプルには、同じサンプルが提示されたときにニューラル ネットワークが最終的に予測しなければならない目標値があります。アルゴリズムは次のようになります。
- またはサンプル$$ {\vec{x}} $$ニューラル ネットワークの入力に配置したものと、このサンプルで求めた出力$$ {\vec{t}} $$
- ニューラル ネットワークの層内で信号を前方に伝播します。 $$ {x_k^{(n-1)}\mapsto x_j^{(n)}} $$
- 順方向伝播は、活性化関数g 、集約関数h (多くの場合、重みとニューロンの入力の間の内積)、およびシナプス重みを使用して計算されます。 $$ {\vec{w}_{jk}} $$ニューロンの間$$ {x_k^{(n-1)}} $$そしてニューロン$$ {x_j^{(n)}} $$。この反転表記に切り替えるときは注意してください。$$ {\vec{w}_{jk}} $$kからjまでの重みを明確に示します。
- $$ {x_j^{(n)} = g^{(n)}(h_j^{(n)}) = g^{(n)}(\sum_k w_{jk}^{(n)}x_k^{(n-1)})} $$
- 順伝播が完了すると、出力で結果が得られます。 $$ {\vec{y}} $$
- 次に、ネットワークによって与えられた出力間の誤差を計算します。 $$ {\vec{y}} $$そしてベクトル$$ {\vec{t}} $$このサンプルに必要な出力。出力層の各ニューロンiについて、次のように計算します。
- $$ {e_i^{sortie} = g'(h_i^{sortie})[t_i – y_i]} $$
- エラーを逆方向に伝播します$$ {e_i^{(n)} \mapsto e_j^{(n-1)}} $$次の式を使用します。
- $$ {e_j^{(n-1)} = g’^{(n-1)}(h^{(n-1)})\sum_i w_{ij}e_i^{(n)}} $$
- すべてのレイヤーの重みを更新します。
- $$ {\Delta w_{ij}^{(n)} = \lambda e_i^{(n)}x_j^{(n-1)}} $$ここで、 λ は学習率を表します (小さい値で 1.0 未満)。

実装
ここで示されるアルゴリズムは「オンライン」タイプであり、ニューラル ネットワーク内に示される各トレーニング サンプルの重みを更新することを意味します。もう 1 つの方法は「バッチ」と呼ばれます。つまり、最初に重みを更新せずにすべてのサンプルの誤差を計算し (誤差を追加します)、すべてのデータがネットワークを通過したときに、合計誤差を使用してバックプロパゲーションを適用します。 。速度と収束の理由から、この方法が推奨されます。
このアルゴリズムは反復的であり、適切な予測を得るために必要な回数だけ修正が適用されます。ただし、不適切なネットワークサイジングや過剰な学習に関連する過剰適合の問題に注意を払う必要があります。

慣性の追加
局所最小値での安定化に関連する問題を回避するために、慣性項 (運動量) を追加します。これにより、局所最小値を可能な限り回避し、誤差関数の下降を継続することが可能になります。各反復では、重みの変更により、以前の変更からの情報が保持されます。このメモリ効果は発振を防止し、ネットワークの最適化を加速します。前に示した重みを変更する式と比較すると、時間tでの慣性による重みの変化は次のようになります。
- $$ {\Delta w_{ij}^{(n)}(t) = \lambda e_i^{(n)}x_j^{(n-1)} + \alpha \Delta w_{ij}^{(n)}(t-1)} $$
αは 0 ~ 1.0 のパラメータです。

