バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia4-backnumber/
はじめに
再び連鎖律の解説に戻る。
今回からは勾配降下法の話。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
【再掲】連鎖律を把握するための知識

多変量関数の連鎖律の話が終わったから、
また元の連鎖律を把握するフローに戻ってくる感じだね。
- 逆数の微分公式(済)
- 積の微分公式(済)
- 商の微分公式(済)
- シグモイド関数の導関数(済)
- 多変量関数の連鎖律(済)
- 勾配降下法

これで残りは勾配降下法のみだ。
勾配降下法

まず勾配降下法の概念的な説明だ。
目的変数と単純パーセプトロンの差を誤差\(E\)とし、
重みを\(W\)とする。
この二つのパラメータの関係をグラフにした場合、
以下の図のようなことをしたいのが勾配降下法。


つまり、誤差を最小化したいってことだよね。

でも、どうやって最小値に行くんだ?
値を振って探す感じ?

それだと、総当たり法とかわなくなっちゃうな。

そういうばそうか。
最小値が分かる方法があるってこと?

微分を使う。
微分は関数の傾きがわかる。
要は以下のことをすればOKだ。
- \(\displaystyle \frac{dE}{dW}\)がマイナス(負の勾配)の場合は\(W\)を増やす。
- \(\displaystyle \frac{dE}{dW}\)がプラス(正の勾配)の場合は\(W\)を減らす。

なるほど。
微分すれば良いのか。

って、どう微分するんだ?
単純パーセプトロンでも結構複雑そうだぞ・・・。

それを実現するために、前回までに「多変量関数の連鎖律」をやったわけだ

そうか。
「多変量関数の連鎖律」が分かるってことは単純パーセプトロン全体の導関数が分かるってことだから、
あらゆる点に於ける微分もわかるってことか。
厄介なシグモイド関数も導関数が分かってるし。

そこらへんの一連の流れを誤差逆伝播法と言ったりするな。
まぁ、実際は多層パーセプトロン以上のモデルで使う用語ではあるので、
単純パーセプトロンで使用する場合は、逆伝播という言い方に留めておこう。

名前は聞いたことあるぞ。
何を試すのか

で、その逆伝播ってのを早速試してみる感じになるのかな?

そうしたいのだが、
その前に勾配降下法のみの実験をやってみるつもりだ。
勾配降下法ならではの問題もあるしね。

(毎度のことながら不穏だな・・・。)
まとめ

まとめだよ。
- 勾配降下法に概念レベルの説明。
- 連鎖律含めた一連の流れを誤差逆伝播法と言う。
- ただし、単純パーセプトロンの段階では逆伝播という言葉にしておく。
- まずは勾配降下法のみの実験をやってみる。
バックナンバーはこちら。
Pythonで動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロからはじめるPID制御
OpenCVによる画像処理入門
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
Pythonによる制御工学入門
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
コメント