つぎに中間層の結合荷重の更新についてみていきましょう。
中間層の結合荷重の修正量ΔWjiも、 誤差EをWjiで偏微分することで求められます。
![]()
出力層の結合荷重を更新するときは、k番目の出力Okだけに 注目すればよかったのですが、 中間層の結合荷重を更新するときはn個の出力すべてが関係します。
つまり、出力O1からOnまでのn個を引数とする 合成関数Eを偏微分することになります。
この偏微分をおこなうには連鎖律 というものを使います。連鎖律をもちいると、 中間層の結合荷重の修正量ΔWjiを求める式は次のようになります。
![]()
これなら、すべての出力の変化が考慮されている正しい式になります。 ではこの式を計算していくことにしましょう。 はじめの2つの偏微分は、前のページにでてきたので省略します。
ネット値Uiを中間層の出力Hjで偏微分します。
![]()
中間層の出力Hjをネット値Tjで偏微分します。
![]()
ネット値Tjを結合荷重Wjiで偏微分します。
![]()
よって、修正量ΔWjiをあらわす式は以下のようになります。
![]()
このようにして出力層の結合荷重の修正量ΔWjiを求めることができます。
ここで1つ気をつけておかなければならないことがあります。 それはBPはローカルミニマムに陥りやすいということです。 最急降下法のところで見たように、 BPでは初期設定によってはローカルミニマムに陥り、 うまく答がでないこともあります。
それでは、バックプロパゲーション学習で、先ほどのXOR問題をもう1度解いてみましょう。
自分で学習データを設定して試したい場合はこちらのシミュレーションをしてみましょう。