MATLAB,Python,Scilab,Julia比較 第4章 その108【最適化アルゴリズム⑦】

MATLAB,Python,Scilab,Julia比較 第4章 その108【最適化アルゴリズム⑦】 数値計算
MATLAB,Python,Scilab,Julia比較 第4章 その108【最適化アルゴリズム⑦】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia4-backnumber/

はじめに

Adamに至るまでの最適化アルゴリズムの系譜とそれらの依存関係を説明した。
この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

Adamの更新式【再掲】

太郎くん
太郎くん

説明は終わったから、プログラム化に向けての準備だね。

フクさん
フクさん

まずはAdamの更新式を再掲しておこう。

\(
\begin{eqnarray}
m_{t+1}&=&\beta_1 m_{t-1}+(1-\beta_1)\nabla J(\theta_t)\\
v_{t+1}&=&\beta_2 v_{t-1}+(1-\beta_2)(\nabla J(\theta_t))^2\\
\displaystyle\hat{m}_{t+1}&=&\frac{m_{t+1}}{1-\beta_1}\\
\displaystyle\hat{v}_{t+1}&=&\frac{v_{t+1}}{1-\beta_2}\\
\displaystyle\theta_{t+1}&=&\theta_t-\frac{\alpha}{\sqrt{\hat{v}_{t+1}}+\epsilon}\\
m_t&:&1次のモーメント\\
v_t&:&2次のモーメント\\
\hat{m}_t,\hat{v}_t&:&バイアス補正項\\
\beta_1,\beta_2&:&指数移動平均係数(\beta_1=0.9,\beta_2=0.999)
\end{eqnarray}
\)

プログラムフロー

太郎くん
太郎くん

プログラムの流れはモーメンタムの時と一緒になるのかな?

フクさん
フクさん

そうだね、
モーメンタムの更新式の部分をAdamの更新式に置き換えるだけだな。
よって、プログラムのフローはこれになる。

  • シグモイド関数の定義
  • シグモイド関数の導関数の定義
  • データの準備
  • ネットワークの構築
  • 重みとバイアスの初期化
  • モーメンタム項の初期化
  • 学習(4000エポック)
    • 順伝播
    • 誤差計算(平均二乗誤差)
    • 逆伝播
    • パラメータの更新(Adam)
  • 決定境界線の表示

パイパーパラメータについて

フクさん
フクさん

あと、学習率の設定だが、0.001とかなり小さい値を設定する。
これはAdamを使用する際の推奨値みたいなもので、
変更しても構わないのだが、今回はこの推奨値で行く。
その結果として、学習の収束までのエポック数を増やす必要がある。
だいたい20000エポックまで増やす予定。

太郎くん
太郎くん

モーメンタムの時は、学習の収束が早くなったのを確認した感じだったけど、
Adamだと収束までのエポック数が伸びるってこと?

フクさん
フクさん

Adam自体は学習率をモーメンタムのときのように0.5にすると一瞬で終わる
が、モーメンタムでは出てこなかったような結果が拾えることがある。
今回はそれを見ることの方をメインとしたい。

太郎くん
太郎くん

つまり、学習速度が遅くなるけど、Adamならではの最適解を確認したいってことか。

フクさん
フクさん

そうそう。
よって、学習の収束までの速度の比較は行わない予定だ。

太郎くん
太郎くん

まぁ、めずらしい結果がみれるならそっちの方が良さそうだね。

まとめ

フクさん
フクさん

まとめだよ、

  • Adamの更新式を実現するためのプログラムフローを記載。
    • モーメンタムの部分をAdamに差し替えただけ。
  • 学習率は0.001とかなり小さめの値に設定。
    • これにより収束は遅くなる。
    • かわりに特殊な最適解が得られるのでそれを確認する。

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

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

Amazon.co.jp: Pythonで動かして学ぶ!あたらしい線形代数の教科書 eBook : かくあき: Kindleストア
Amazon.co.jp: Pythonで動かして学ぶ!あたらしい線形代数の教科書 eBook : かくあき: Kindleストア

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

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 | 斎藤 康毅 |本 | 通販 | Amazon
Amazonで斎藤 康毅のゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装。アマゾンならポイント還元本が多数。斎藤 康毅作品ほか、お急ぎ便対象商品は当日お届けも可能。またゼロから作るDeep Lea...

ゼロからはじめるPID制御

ゼロからはじめるPID制御 | 熊谷 英樹 |本 | 通販 | Amazon
Amazonで熊谷 英樹のゼロからはじめるPID制御。アマゾンならポイント還元本が多数。熊谷 英樹作品ほか、お急ぎ便対象商品は当日お届けも可能。またゼロからはじめるPID制御もアマゾン配送商品なら通常配送無料。

OpenCVによる画像処理入門

OpenCVによる画像処理入門 改訂第3版 (KS情報科学専門書) | 小枝 正直, 上田 悦子, 中村 恭之 |本 | 通販 | Amazon
Amazonで小枝 正直, 上田 悦子, 中村 恭之のOpenCVによる画像処理入門 改訂第3版 (KS情報科学専門書)。アマゾンならポイント還元本が多数。小枝 正直, 上田 悦子, 中村 恭之作品ほか、お急ぎ便対象商品は当日お届けも可能。...

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

恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門] | 金城俊哉 | 数学 | Kindleストア | Amazon
Amazonで金城俊哉の恋する統計学 恋する統計学。アマゾンならポイント還元本が多数。一度購入いただいた電子書籍は、KindleおよびFire端末、スマートフォンやタブレットなど、様々な端末でもお楽しみいただけます。

Pythonによる制御工学入門

Amazon.co.jp

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

Amazon.co.jp

コメント

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