バックナンバーはこちら。
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で動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロからはじめるPID制御
OpenCVによる画像処理入門
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
Pythonによる制御工学入門
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
コメント