誤差逆伝播(Backpropagation)と自動微分|微分をプログラミングする #3

f:id:lib-arts:20201122221644p:plain

当シリーズでは、近年の深層学習の発展に関連するトレンド的に微分のプログラミングの重要度は増していると思われるので、関連文脈の取りまとめを行なっています。
#1、#2では自動微分の概要やSurvey論文の参照を行いました。

#2の"Reverse mode AD"で誤差逆伝播(Backpropagation)に近しい話題となりましたので、#3ではトップダウン自動微分(Reverse mode AD)と誤差逆伝播について確認していきます。
以下、目次になります。
1. 誤差逆伝播(Backpropagation)の概要
2. 自動微分として見る誤差逆伝播
3. まとめ


1. 誤差逆伝播(Backpropagation)の概要
1節では誤差逆伝播の概要について確認します。日本語版のWikipediaを参照しようと考えたのですが、あまり良い記載ではなかったので英語版を参照します(https://en.wikipedia.org/wiki/Backpropagation)。

f:id:lib-arts:20201122221748p:plain

上記に概要が記載されており、ニューラルネットワークの学習においてバックプロパゲーションを用いることで「誤差関数(loss function)のパラメータ(weights)における勾配(gradient)計算を効率的に行う」と記載されています。これにより、勾配法を用いて多層のニューラルネットワークを学習させることができるとされています。

f:id:lib-arts:20201122222537p:plain

f:id:lib-arts:20201122222649p:plain

具体的な例における最小二乗誤差を考えているのが上記です。y = w_1 x_1 + w_2 x_2として予測した結果と実測のtの比較として二乗誤差関数が定義されています。このように定義した誤差関数をトップダウン自動微分の要領でそれぞれのw_iにおける勾配を計算していくのが誤差逆伝播法です。


2. 自動微分として見る誤差逆伝播
1節では具体的な計算はあまり確認しませんでしたが、理由としては主に#2で取り扱ったトップダウン型自動微分の要領で勾配の導出ができることがわかるからです。
誤差逆伝播の解説は少々ややこしい記載が多いので、自動微分を理解した上で計算グラフを構築し、トップダウン型自動微分の要領で勾配を計算するとだけ理解する方がスムーズだと思います。

f:id:lib-arts:20201121152206p:plain

#2では"Reverse mode AD"として上記について確認しましたが、こちらと同じような要領でw_iについて微分の値を求めているとだけ理解しておけば十分そうです。

f:id:lib-arts:20201122224028p:plain

冒頭部の第二パラグラフでは上記のように、バックプロパゲーション(Backpropagation)は自動微分(Automatic differentiation)の特殊なケースであると記載されています。


3. まとめ
#3は分量自体は少なくなりましたが、自動微分の文脈で誤差逆伝播を考えると非常にシンプルになるということがご理解いただけたのではないかと思います。
#4以降では自動微分バックプロパゲーションについて、実際にプログラミングしてみることで具体的なイメージをつかんでいけたらと思います。