バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia4-backnumber/
はじめに
Adamに至るまでの最適化アルゴリズムの系譜の説明をした。
今回は全体としての依存関係について。
登場人物
博識フクロウのフクさん
イラスト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
最適化アルゴリズムいろいろ【再掲】
まずは説明予定の最適化アルゴリズムを再掲。
- AdaGrad(済)
- RMSprop(Root Mean Square Propagation)(済)
- AdaDelta(済)
- Adam(Adaptive Moment Estimation)(済)
というわけで当初の予定は説明終了。
各最適化アルゴリズムの依存関係
各種最適化アルゴリズムの説明は終わったから
恒例のプログラム化になるのかな?
その前に、これまでの最適化アルゴリズムの依存関係を見てみよう。
あー、確かに何かの拡張がどれとか、あれとそれがくっついてこれになったとかあったからねー。
図で示すとこんな感じだな。
括弧内の数値は登場した年とか活躍していいた期間を表している。
全体を見渡せると分かり易い気がしてくる。
基本的には1次の勾配で勢いをつけて、2次の勾配で抑制って感じなのかな?
そうだね。
その両方を取り込んだのがAdamってことになるな。
Adamのあとも、うっすらとAdaBoundってのが見えるけど・・・。
今回は取り扱わなかったが、Adamの拡張系の最適化アルゴリズムだ。
差分としてはクリッピングで学習率の範囲を指定できる点だな。
Adamでも学習率が下がりすぎて更新が効かなくなるのをクリッピングで更新し続けられるような仕掛けが追加されてる。
まぁ、Adamがベースにはなってると思えばそういうのもあるのかって程度にはなるのか。
まとめ
まとめだよ。
- 各最適化アルゴリズムの依存関係を記載。
- 1次の勾配で勢いをつけて、2次の勾配で抑制するというのが全体を通しての共通点。
- Adamが1次の勾配と2次の勾配を合わせたアルゴリズムとなる。
バックナンバーはこちら。
Pythonで動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロからはじめるPID制御
OpenCVによる画像処理入門
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
Pythonによる制御工学入門
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
コメント