ニューラルネットワークの概要
概要はこちらです。
ニューラルネットワークの最適化課題
ニューラルネットワークモデルの重みパラメータを最適化するためには、誤差の各パラメータに対する偏微分
を求める必要があります。これまで線形識別などで誤差の勾配を求めて最適化したのと同じことです。しかしネットワークモデルが複雑になれば、この偏微分の計算は非常に煩雑になっていきます。この課題を解決するアルゴリズムが誤差逆伝播法です。今回はこの誤差逆伝播法の計算手法についてです。
誤差逆伝播法
以下のようなニューラルネットワークの部分図を考えます。
第番目の層の1つの素子が、重みを介して第番目の層の素子に接続されているとします。それぞれの出力ユニット活性(つまり素子への入力)はであるとします。活性化関数はとします。
上記のモデルにおいて、の重みでの偏微分を考えます。同じ文字を使ってわかりにくくしてしまいましたが、の添字は、層の番号ではなく番目のサンプルデータであることを表しています。
具体的なモデルで示せば、いま下図の黄色の線に関する重みでの偏微分を考えているとします。この重みは、青色の素子を介して出力に影響します。出力は青色素子の関数、そしてさらに青色素子は重み係数の関数という合成関数の関係であるといえます。
図.1の一般的な例でいえば、が黄色の重みに相当し、これは(青色素子)を介してのみに影響を与えるいという合成関数の関係になっています。よって合成関数の微分を適用すれば、
のように計算できます。ここで、
と定義します。このは素子の誤差と呼びます。を用いれば、式(2)は
と書けます。
さて、は、前段の層の全ての出力に対してそれぞれ対応する重みをかけたものであり、出力は活性化関数を通したものですから、
です。これをで微分すると、と接続している以外の項は全て0になりますから、
となります。よって、式(4)は
となります。
これで、目的であった各重みパラメータでの偏微分が求めることができました。ここでというのはニューラルネットワークのある素子の出力ですから簡単に計算可能です。あとはが計算できれば良いことになります。
そこで次に、つまり誤差のでの偏微分を考えます。再び下図のように具体的なモデルで示します。
先程は計算の過程で青色の層の誤差が出てきましたが、今度はその前段の黄色の層の誤差を考えます。そして黄色の素子の入力は、結合する次の層の素子を介してに影響を与えます。さきほどと同様、出力は青色素子の関数、そしてさらに青色素子は黄色素子の関数という合成関数の関係であるといえます。図.1のモデルでいえば、黄色の素子への入力が、それと結合する青色素子が層の素子となり、はこれらの素子を介して出力に影響します。よって、それら素子に対して合成関数の微分則を適用すれば、
と計算でき、ある層の誤差は、その次の層の誤差から求められる関係にあることがわかります。
さて、式(5)をで微分すれば、
ですので、これを式(10)に代入すれば、
となります。
この式は、ある層のが計算できれば、その1つ前の層のも求めることができることを意味しています。が求められれば、式(7)によって各重みに関する偏微分も計算可能です。 以上のような計算手順を誤差逆伝播法と呼びます。最後の層、つまり出力の誤差が後に示すようにで、まさに誤差を表しており、これを使って前の層のを次々に計算していくから誤差逆伝播、、、なのだと思います。
各モデルにおける出力誤差
回帰、2クラス分類、多クラス分類のモデルにおいて、出力のは次の記事で計算しています。この結果を用いれば、最後の層の誤差から辿り、全ての誤差が計算可能になります。