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

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

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

モーメンタムへ至る道【再掲】

太郎くん
太郎くん

まずはモーメンタムへ至るフローを再掲

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

今回は、この中の「モーメンタムのプログラムフロー」

プログラム化の方針

太郎くん
太郎くん

モーメンタムの更新式も把握できたわけだから、
あとはプログラムで動作を見る感じかな。

フクさん
フクさん

そうだね。
その前に方針を説明しておこう。

太郎くん
太郎くん

方針?
どんなの?

フクさん
フクさん

勾配降下法による多層パーセプトロンは実現できている。
このプログラムの勾配降下法の部分を差し替えるだけだな。
あとは隠れ層のユニット数は直近で試した4ユニットにしよう。

太郎くん
太郎くん

まぁ、あるものは使いまわした方が良いよね。

プログラムフロー

フクさん
フクさん

プログラムのフローだが、以下になる。
まぁ、勾配降下法の時と基本的には一緒だな。

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

「モーメンタム項の初期化」と「パラメータの更新(モーメンタム)」ってところが差分ってことか。

フクさん
フクさん

そうそう。
だから、そこを中心に修正を入れればOKはなずだ。

まとめ

フクさん
フクさん

まとめだよ。

  • モーメンタムを確認するプログラムの方針を確認。
    • 以前の勾配降下法のプログラムをベースにする。
    • 隠れ層のユニット数は4。
  • プログラムのフローを確認。
    • モーメンタム項とパラメータ更新が基本的な差分となる。

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

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