どうも、カタミチです。
さて、今日も「最短コースでわかる ディープラーニングの数学」のひとり読書会、やっていきたいと思います。
今日は10章「ディープラーニングモデル」も中盤戦。今日は5節からですね。さぁ…いきましょう!
10-5. 誤差逆伝播
さて、前節で損失関数\(L\)に対する入力層→隠れ層の重み\(v\)についての偏微分が\( \frac {\partial L} {\partial v_{ij}}= x_j \cdot \frac {\partial L} {\partial a_i} \)となるとのことでしたが、ここで…
\( bd_i= \frac {\partial L} {\partial a_i} \)
と置くことにし、これを「隠れ層における誤差」と解釈すると、考えを拡張しやすいようですね。どうやら、隠れ層の数を増やしていっても同じ式で表し続けることができるようです。
合成関数の微分…すなわち連鎖律の考え方を使うことで、ある層における重みの偏微分を計算するにはその層の誤差が分かれば良く、その層の誤差を計算するには次の層の誤差と重みの値が分かれば良い。次の層の誤差と重みを計算するには、さらにその次の層の誤差と重みを…というように、後ろの層の情報が分かれば前の層の計算ができるという流れが成り立ちます。これを繰り返して行き着く先は…最後の出力層ですね。
出力層では、正解値が明確に分かっているので、誤差が計算できます。そうして計算した結果を一つ前の層の計算のインプットとして利用して結果を出し、更にその結果をもう一つ前の層の計算のインプットとして利用して…というように、後ろから計算結果を積み上げて微分式を完成させていく。これが…
誤差逆伝播法
ってやつですね!
名前だけは知っていましたが、数式を通じてようやくその意味するところをきちんと理解することができました。なるほどなぁ。こいつが、ディープラーニングにおける学習の根本原理となるようです。
ちなみに、誤差逆伝播法を英語で言うと「バックプロパゲーション(Backpropagation)」。なんだか、ファンタジー世界のすごい魔法っぽい雰囲気ですね!(声に出して読みたい英語)
10-6. 勾配降下法の適用
さて、話はまた、例題である隠れ層が1層のモデルに戻ります。
「勾配降下法の適用」って名前の節もこれで最後になりますかね。なんだか少し寂しい感じもしますが、見てみましょう。数式はいつものやつですが、重みが\(w,v\)と2種類あるので、式も2つできます。
\( w_{ij}^{(k+1)}= w_{ij}^{(k)}-\frac{\alpha}{M} \sum_{m=0}^{M-1} b_j^{(k)(m)} yd_i^{(k)(m)} \)
\( v_{ij}^{(k+1)}= v_{ij}^{(k)}-\frac{\alpha}{M} \sum_{m=0}^{M-1} x_j^{(k)(m)} bd_i^{(k)(m)} \)
まぁ式が2つあると言っても、式の形は同じです。割り当てられた変数が違うのと、誤差の計算に含まれる活性化関数が違うだけですね。
ちなみに隠れ層が2層の場合の式も掲載されていましたが、誤差を逆伝播させる層の数が増えるだけで、考え方は同じですね。
ということで
これでついに、実践編も最後のプログラム実装を残すのみとなりました。どうやらこれまでと違って、プログラム実装だけで節が4つ設けられているようです。さすがは本書のラスボス。第4形態まであるってわけですね。うなれ、極大魔法…バックプロパゲーション!
ではまた。