MATLAB,Python,Scilab,Julia比較 第4章 その101【モーメンタム⑪】

MATLAB,Python,Scilab,Julia比較 第4章 その101【モーメンタム⑪】 数値計算
MATLAB,Python,Scilab,Julia比較 第4章 その101【モーメンタム⑪】

バックナンバーはこちら。
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

モーメンタムのプログラムを実行してみた感じ

太郎くん
太郎くん

最適化アルゴリズムを通常の勾配降下法からモーメンタムにしても
ちゃんと分類はできたね。

太郎くん
太郎くん

でも、そうなると何が差分かというのも良くわからんな・・・。

フクさん
フクさん

差分はある。

モーメンタムにしたことによる差分

太郎くん
太郎くん

どんな差分があったっけ?

フクさん
フクさん

学習の収束速度が大幅に上がってるな。

太郎くん
太郎くん

そういえば、誤差関数の値もグラフにしてたね。
このグラフの動き方が違ってたってこと?

フクさん
フクさん

そうそう。
勾配降下法でやった場合と、
モーメンタムでやった場合のグラフを比較してみよう。

勾配降下法の場合

勾配降下法による誤差関数の値

モーメンタムの場合

モーメンタムパターン1の誤差関数(MATLAB)
太郎くん
太郎くん

なんか全然違う!

フクさん
フクさん

勾配降下法はおおよそ500エポックあたりで収束だが、
モーメンタムは100エポックあたりで収束だな。
収束の仕方も一気に進んでいる。
これがモーメンタムの勢いをのせた結果だろう。

太郎くん
太郎くん

あとは、モーメンタムの方は初期段階では割と誤差関数の結果が暴れてる気がするね。

フクさん
フクさん

初期段階だと誤差関数の移動範囲が大き目に出るからね。
その分大域最適解を探せる可能性があるとも言えるんだろうね。
まぁ、今回の構造だと、これの効能は目立って出ることはないだろうけど。

太郎くん
太郎くん

ネットワークが複雑になると効果ありそうってことか。

フクさん
フクさん

あとは学習データが大量にあって、
その都合でミニバッチ学習、オンライン学習を採用する際も効果があるのだろう。

太郎くん
太郎くん

今回は学習データを一括で扱うバッチ学習って方式だったね。
学習方式によってもそこらへんは変わるのか。

フクさん
フクさん

というわけで、モーメンタムのは話はここで終了。

まとめ

フクさん
フクさん

まとめだよ。

  • 最適化アルゴリズムを通常の勾配降下法からモーメンタムに変えた際の差分を確認。
    • モーメンタムの方が学習の収束が早い。
      • 勾配降下法で500エポックのところ100エポック。
    • モーメンタムの場合、初期のパラメータ移動が大き目。
      • これにより、大域最適化を見つける可能性が高くなる。

バックナンバーはこちら。

Pythonで動かして学ぶ!あたらしい線形代数の教科書

https://amzn.to/3OE5bVp

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

https://amzn.to/3OBiaax

ゼロからはじめるPID制御

https://amzn.to/3SvzuyR

OpenCVによる画像処理入門

https://amzn.to/498ZUgK

恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]

https://amzn.to/3STAe2i

Pythonによる制御工学入門

https://amzn.to/3uskuK5

理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析

https://amzn.to/3UAunQK

コメント

タイトルとURLをコピーしました