MATLAB、Python、Scilab、Julia比較ページはこちら
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/
はじめに
の、
MATLAB,Python,Scilab,Julia比較 第4章 その101【モーメンタム⑪】
を書き直したもの。
ニューラルネットワークの最適化アルゴリズムについて。
実際にプログラムでモーメンタムを動作させたので、
通常の勾配降下法とモーメンタムの差分を確認しておく。
モーメンタムのプログラムを実行してみた感じ
最適化アルゴリズムを通常の勾配降下法からモーメンタムにしてもちゃんと分類はできた。
一見すると特に差分も無いように見えるが、一応差分はある。
モーメンタムにしたことによる差分
大きな差分は、学習の収束速度が大幅に上がっている点。
前回のプログラムに於ける結果として誤差関数の値もグラフにしている。
このグラフの動き方が違うということになる。
勾配降下法でやった場合と、
モーメンタムでやった場合のグラフを比較してみよう。
勾配降下法の場合
モーメンタムの場合
というわけで全然違う。
勾配降下法はおおよそ500エポックあたりで収束だが、
モーメンタムは100エポックあたりで収束。
収束の仕方も一気に進んでいる傾向がある。
これがモーメンタムの勢いをのせた結果だろう。
あとは、モーメンタムの方は初期段階では割と誤差関数の結果が暴れてる。
初期段階だと誤差関数の移動範囲が大き目に出る。
その分大域最適解を探せる可能性があるとも言える。
今回の構造だと、これの効能は目立って出ることはなく、
ネットワークが複雑になると効果が出てくるものとなる。
あとは学習データが大量にあって、
その都合でミニバッチ学習、オンライン学習を採用する際も効果があるのだろう。
※ 今回は学習データを一括で扱うバッチ学習って方式
というわけで、モーメンタムのは話はここで終了。
まとめ
- 最適化アルゴリズムを通常の勾配降下法からモーメンタムに変えた際の差分を確認。
- モーメンタムの方が学習の収束が早い。
- 勾配降下法で500エポックのところ100エポック。
- モーメンタムの場合、初期のパラメータ移動が大き目。
- これにより、大域最適化を見つける可能性が高くなる。
- モーメンタムの方が学習の収束が早い。
MATLAB、Python、Scilab、Julia比較ページはこちら
Pythonで動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロからはじめるPID制御
OpenCVによる画像処理入門
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
Pythonによる制御工学入門
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
コメント