Loading [MathJax]/jax/output/HTML-CSS/jax.js
逆伝播のデモ

逆伝播アルゴリズム

バックプロパゲーション アルゴリズムは、大規模なニューラル ネットワークを迅速にトレーニングするために不可欠です。この記事では、アルゴリズムの仕組みについて説明します。

下にスクロールしてください...

シンプルなニューラル ネットワーク

右側には、入力が 1 つ、出力ノードが 1 つ、2 つのノードの非表示レイヤ 2 つを備えたニューラル ネットワークが表示されています。

隣接するレイヤのノードは、ネットワーク パラメータであるウェイト wijで接続されます。

活性化関数

各ノードには、合計入力 x、アクティベーション関数 f(x)、出力 y=f(x)があります。 f(x) は非線形関数でなければなりません。そうでなければ、ニューラル ネットワークは線形モデルのみを学習できます。

よく使用されるアクティベーション関数は Sigmoid 関数です。 f(x)=11+ex

誤差関数

目標は、 youtput すべての入力 xinputで予測出力が目標に近づくように、データからネットワークの重みを自動的に学習することです。 youtput

目標からどのくらい離れているかを測定するには、エラー関数を使用します E。よく使用されるエラー関数は E(youtput,ytarget)=12(youtputytarget)2です。

転送の伝播

まず、入力例を受け取り、 (xinput,ytarget) ネットワークの入力レイヤを更新します。

一貫性を保つため、入力は他のノードと同様のものですが、活性化関数がないものと仮定して、出力が入力と等しくなるようにします(例: y1=xinput)。

転送の伝播

ここでは、最初の隠しレイヤを更新します。前のレイヤのノードの出力を取得し、 y 重みを使用して次のレイヤのノードの入力を計算します。 x
xj=
iin(j)wijyi+bj

転送の伝播

次に、最初の隠れ層のノードの出力を更新します。これには、アクティベーション関数 f(x)を使用します。
y=f(x)

転送の伝播

この 2 つの数式を使用して、ネットワークの残りの部分に伝播し、ネットワークの最終出力を取得します。
y=f(x)
xj=
iin(j)wijyi+bj

エラーのデリバティブ

逆伝播アルゴリズムは、予測出力を特定の例の目的の出力と比較した後、ネットワークの各重みを更新する量を決定します。このために、各重みに関してエラーがどのように変化するかを計算する必要があります dEdwij
エラーの導関数を取得したら、シンプルな更新ルールを使用して重みを更新できます。
wij=wijαdEdwij
ここで、 α は正の定数です。これは学習率と呼ばれ、経験的に微調整する必要があります。

[注] 更新ルールはきわめてシンプルです。重みが増すとエラーが発生する(dEdwij<0)場合は重みを上げ、重みを上げるとエラーが発生する(dEdwij>0)場合は重みを減らします。

その他のデリバティブ

dEdwijを計算しやすくするため、ノードごとにさらに 2 つのデリバティブ、つまりエラーによる変化を次のように保存します。
  • ノードの合計入力 dEdx
  • ノードの出力 dEdy

逆伝播

エラーのデリバティブの逆伝播を開始します。この特定の入力例の予測出力があるため、その出力によってエラーがどのように変化するかを計算できます。エラー関数から、 E=12(youtputytarget)2 次のようになります。
Eyoutput=youtputytarget

逆伝播

これで、チェーンルールを dEdy 使用して dEdx 取得できます。
Ex=dydxEy=ddxf(x)Ey
ddxf(x)=f(x)(1f(x)) の場合、 f(x) が Sigmoid アクティベーション関数です。

逆伝播

ノードの合計入力に関する誤差導関数を取得したらすぐに、そのノードに入る重みに関するエラー導関数を取得できます。
Ewij=xjwijExj=yiExj

逆伝播

チェーンルールを使うと、前のレイヤからも dEdy 取得できます。丸で囲むように作成しました。
Eyi=jout(i)xjyiExj=jout(i)wijExj

逆伝播

あとは、すべてのエラーの導関数を計算するまで、前の 3 つの数式を繰り返すだけです。

おしまい。

1y1xinput2y2x2dE/dy2dE/dx2fw12dE/dw3y3x3dE/dy3dE/dx3fw13dE/dw4y4x4dE/dy4dE/dx4fw24dE/dww34dE/dw5y5x5dE/dy5dE/dx5fw25dE/dww35dE/dw6youtputx6dE/dy6dE/dx6fw46dE/dww56dE/dwEytarget
コンピューティング...