バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia4-backnumber/
はじめに
前回までで各ツール、各言語による最適化アルゴリズムAdamを試したところ。
Adamならではの分類結果が出てきたのでそれの確認を行う。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
Adamならではの結果
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
一応、Adamの動作も確認できたから一通りやり切ったって感じかな。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうだね。
今回は、Adamならではの分類が出てきたのでそれを確認しておこう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
確かに、勾配降下法やモーメンタムでは見れなかった分類結果が出てたね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
この感じだな。
![Adam分類結果(MATLAB)](https://www.simulationroom999.com/blog/wp-content/uploads/2024/05/02_Adam分類結果MATLAB.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
斜めに分ける感じがほとんどだったのに対して、
Adamでは4つの四角で分類された感じで、
これはこれでキレイな分類って感じがする。
Adamの分類をアニメーションで。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
分類の過程をアニメーションgifにしてみた。
そのgifを張っておこう。
![Adam分類結果(MATLAB)アニメーション](https://www.simulationroom999.com/blog/wp-content/uploads/2024/05/02_Adam分類結果MATLABアニメーション.gif)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
ほう!
こんな過程で分類されてたのか!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
最初は単純に直線分類しようとしてるが、
それが難しくなった際に別のセグメントを引っ張り出している。
あとは、可能な限り各点から離れた位置に決定境界線を引けるように学習している感じだな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
しかし、Adamだけなぜこんなのが出てきたんだろう?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
明確にはわからないが、
誤差関数の値は通常だと0.25あたりと開始として、
そこから徐々に落ちてくるのが勾配降下法とモーメンタムの挙動だった。
対して、Adamが今回のような結果を出すときは、一旦0.4まで跳ね上がってるというのはある。
これの影響で大域最適解に至れるルートを見るけられたというのはあるかもね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
大域最適解を特定するもの単純にはいかないってことか。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
これがもっと複雑なネットワークになった際に、Adamのこの特性が強く利いてくるのだと思うよ。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- Adamだけで出てくる分類結果を確認。
- 四角形で分類する理想的な形状。
- この分類結果になる場合は、誤差関数の値が一気に跳ね上がる時。
- これにより大域最適解を引き当てやすくなる。
バックナンバーはこちら。
Pythonで動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロからはじめるPID制御
OpenCVによる画像処理入門
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
Pythonによる制御工学入門
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
コメント