バックナンバーはこちら。
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
プログラム化に向けて

だいたい理屈の部分はやった感じだから、
これからプログラム化かな。

そうだね。
今回も処理のフローを書いておこう。
と言っても、前回の逆伝播のフローとおおよそ一緒だけどね。
- データセットの定義
- ハイパーパラメータの設定
- 学習率
- エポック数
- パラメータの初期値、
- シグモイド関数の導関数の定義
- 順伝播
- 誤差計測
- 逆伝播
- バイアスの逆伝播
- 重みの逆伝播
- パラメータの更新
- 重みの変化の経緯をplot

例によって、順伝播、逆伝播、パラメータの更新で1セットで何回もループする。

前回もそんな感じだったね。

差分はパラメータの初期値がランダムになったこととと、
バイアスも加味して学習するという点かな。
どんな感じに動くのか

プログラムとして実現できそうってことはわかったけど、
結局どんな感じの学習になるのかな?

ここは決定境界線の位置を学習回数(エポック)が進むとどうなるかを見てみよう。


これは面白い動きだね。
最初は全然違うところにあるのが、徐々に適正な境界線に落ち着くって感じか。

こんな感じで、経緯が見れるようにしておくと面白いよね。
まぁ、今回作成するプログラムではアニメーションまではしないけど、
こんな感じに動いているというイメージは持っておいた方が良いかな。
まとめ

まとめだよ。
- 単純パーセプトロンで分類のプログラムのフローを確認。
- 逆伝播の実験のときと流れは一緒。
- 学習が進むと決定境界線がどのように動くか確認。
バックナンバーはこちら。
Pythonで動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロからはじめるPID制御
OpenCVによる画像処理入門
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
Pythonによる制御工学入門
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
コメント