ニューラルネットワークモデルの重みパラメータを最適化するためには、各パラメータに対する偏微分
を求める必要があります。これまで線形識別などで誤差の勾配を求めて最適化したのと同じことですね。この偏微分係数を求めるアルゴリズムとして誤差逆伝播法という手法があります。今回はこの誤差逆伝播法の計算手法についてです。
まず、以下のようなニューラルネットワークの部分図を考えます。

第番目の層の1つの素子が、重み
を介して第
番目の層の素子に接続されているとします。それぞれの出力ユニット活性は
であるとします。活性化関数は
とします。(参考:ニューラルネットワークの概要)
まず誤差の
での偏微分を考えます。
は第
層の出力ユニット活性の関数になっていると考えることができ、第
層の素子の総数を
とすれば、
と書くことができます。ちょっと紛らわしい書き方ですけど、
は第
層の出力ユニット活性を表しており、第
層の
は含まれないとします。また、
は
の関数になっていると考えることができ、これを
とします。
と接続されている全ての第
層の出力ユニット活性に対して同様のことがいえますので、
という合成関数になっているといえます。したがって
です。
次にの重み
での偏微分を考えます。
は
の関数であり、
は
の関数ですから、先ほどと同様にして合成関数の微分より
です。と接続されている素子は1つだけですから、式(5)と違って和ではありません。
さて、出力ユニット活性に活性化関数
を通した
が出力でしたので、
です。そして、
と定義すれば、式(5)、(7)より
です。この式は、ある層のが計算できれば、その1つ前の層の
も求めることができることを意味しています。回帰、2クラス分類、多クラス分類のモデルにおいて、最後の層の
は既に確認済みです。(参考:出力ユニット活性で微分(回帰)、出力ユニット活性で微分(2クラス分類)、出力ユニット活性で微分(多クラス分類))
よって、式(12)を使えば全ての
が計算可能になります。なお
は誤差と呼ばれるようです。
さて、今求めたかったのはではなく式(1)の
でした。これは式(6)、(7)、(8)を使えば
です。
これでニューラルネットワークの誤差の勾配が計算可能になります。以上のような計算手順を誤差逆伝播法と呼びます。最後の層の
が
で、まさに誤差を表しており、これを使って前の層の
を次々に計算していくから誤差逆伝播、、、なのだと思います。