自分用メモ
誤差逆伝播法
得られた出力結果から、教師データとの誤差を算出して、パラメータとしての重みを調整し、調整された値を元にまた後ろのノードへと更新を伝えていきます。
では、具体的にはどのようにして更新していくのでしょうか?
勾配降下法
重みを調整する方法の一つとして、勾配降下法があります。
これは、誤差が誤差関数を利用して算出されることを利用します。この誤差関数は
-出力と教師データとの差が大きければ大きいほど返り値が大きくなるもの
-微分可能であるものであることが
であることが求められます。
例えば、誤差関数をグラフにすると以下の図になるとします。
誤差は重みwによって決まります。
ここで、微分可能であるということは、最小値を求めることができます。そこが最適なwであるwoptです。
なお、傾き0なのが最小値であることを保証するために下に凸になるよう誤差関数を選ぶ必要があるようです。(このあたりはまだ不安)
更新量Δwは、以下の式で求められます。
Δw = -η\frac{δE}{δw}
誤差が大きいほど傾きは大きくなるため、傾きだけ誤差を更新させます。マイナスをとるのは傾きが正であればwを減少、負であれば増加させるためです。
ηは学習係数で、さすがに傾きをそのまま使ってもうまくwoptを求めることはできないため、誤差を元にどの程度更新するかを決める値です。
この学習係数も精度向上のためにうまく設定する必要があります。
参考
山下隆義
イラストでわかるディープラーニング 講談社
新納浩幸
Chainerによる実践深層学習~複雑なNNの実装方法~ オーム社
高卒でもわかる機械学習 (2) 単純パーセプトロン
http://hokuts.com/2015/11/25/ml2_perceptron/
Chainerで始めるニューラルネットワーク
http://qiita.com/icoxfog417/items/96ecaff323434c8d677b