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

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

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

分類安定化のもう一つの対策案?

太郎くん
太郎くん

無事、安定して分類ができるようになったからこれで終了だね。

フクさん
フクさん

いや、まだだ。

太郎くん
太郎くん

え゛

フクさん
フクさん

以前、分類の安定化の対策の一つに最適化アルゴリズムを入れる話をしたと思う。

太郎くん
太郎くん

確かにそういうこと言っていた気がする・・・。

フクさん
フクさん

まぁ、本来はもっと複雑なネットワークで起きる問題に対しての対策案だから、
今回の問題に対しては効能は無いと思うのだが、
とりあえずやってみようって話。

太郎くん
太郎くん

しようがねぇ。やるしかねぇのか・・・。

最適化アルゴリズム

太郎くん
太郎くん

で、その最適化アルゴリズムってどんなの?

フクさん
フクさん

端的に言うと、学習率を動的に調整していい感じに学習が進むような仕掛けだな。

太郎くん
太郎くん

確か、学習率ってハイパーパラメータで、動かせない値じゃなかったっけ?

フクさん
フクさん

勾配降下法としてはそうだな。
それ以外の最適化アルゴリズムだと、初期値としての学習率はハイパーパラメータだが、
その後の学習率は状況に応じて変動するのが一般的だ。

太郎くん
太郎くん

学習率って大きいと収束は早くなる半面、発散しやすくなって
小さい場合は、発散はしないけど収束が遅くなるとの局所最適解にハマりやすいって問題があったかな。

フクさん
フクさん

そうそう。

太郎くん
太郎くん

これを動的に変えられるとすると、この特性のいいとこどりができるってことか。

フクさん
フクさん

理想はそうだけど、実際はいろいろうまく行かないパターンも多いようだ。
そのため様々な最適化アルゴリズムが生まれている。

太郎くん
太郎くん

最適化アルゴリズムって一個じゃないのか?!

フクさん
フクさん

むっちゃ大量にある。

太郎くん
太郎くん

それを全部やるとかじゃないよね?

フクさん
フクさん

流石にそれは無理があるな。
比較的シンプルなものを一つ、主流なもののベースとなっているものを一つの計二つくらいが妥当だろう。

太郎くん
太郎くん

じゃー、まずシンプルな一つ目から教えてもらおうか。

フクさん
フクさん

最もシンプルな最適化アルゴリズムは勾配降下法。
そして、それをベースに少し拡張したものがモーメンタム。
今回はこのモーメンタムを扱う。

解説のフロー

太郎くん
太郎くん

どんな感じで説明するの?

フクさん
フクさん

以下の流れかな。

  • 勾配降下法の更新式
  • 勾配降下法の動作イメージ
  • モーメンタムの更新式
  • モーメンタムの動作イメージ
  • モーメンタムのプログラムフロー
  • モーメンタムによる分類の学習プログラム
太郎くん
太郎くん

勾配降下法っていままでやってたやつ?

フクさん
フクさん

そうだね。
具体的な更新式は見せたことなかったと思うから、
復習も兼ねて確認しておこう。

まとめ

フクさん
フクさん

まとめだよ。

  • 最適化アルゴリズムを取り扱う。
    • 今回のネットワークだとさほど恩恵はないが知っていて損はない。
  • まずはモーメンタムから解説&実験をしていく。
    • 最初は復習を兼ねて勾配降下法についても確認する。

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

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をコピーしました