記録帳

クラウド、データ分析、ウイスキーなど。

誤差逆伝播法

1冊の本や1つの映画の記事ではなく、学んだ内容の雑多なアウトプットもしたかったので、記事にする。

[学び]タグで管理しようと思う。

 

ゼロから作るDeepLearningの5章誤差逆伝播法を読んだ。

■重要なこと

誤差逆伝播法は、関数の微分を細かなノードに区切って、そのノードごとの微分を求めていき、最終的に全体の微分を出す方法である。

{\displaystyle \frac{\partial f}{\partial x}\ }{\displaystyle \frac{\partial f}{\partial t}\ } {\displaystyle \frac{\partial t}{\partial s}\ } {\displaystyle \frac{\partial s}{\partial x}\ } 

のように、関数の微分を分ける。この各微分ごとに計算を行う。

誤差逆伝播法を用いると、微分の計算が少ない計算量で実行できる。

・ただし、これは使用する関数を適切に選んで、レイヤからの逆伝播が「y-t」のようにキレイな形になる場合に限る。

・そのキレイな形になるのが、Softmax関数とCrossEntropyErrorの組み合わせや、恒等関数と二乗和誤差の組み合わせである。

・前者は分類問題、後者は回帰問題に使われる関数である。

ニューラルネットワークの計算で誤差逆伝播法を使用するのは、勾配計算である。(普通に実装すると、多大な量の微分計算となり重くなる)

 

■感想

以前に読んだときは飛ばした項。理論だったのでとっつきにくかった。

計算の仕方云々は置いておいて、なぜこれを使うと計算量が少なく微分できるか?を理解しておけば良いと思う。

ただ、どうやって逆伝播をキレイな形にする関数を選んだのだろう。二乗和誤差の式を見ても、特に変な係数をかけたりはせず、その名の通り誤差の二乗の和なだけに見える。

なぜこの式で、逆伝播が綺麗な引き算の形になるのか…?