バックナンバーはこちら。
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の動作も確認できたから一通りやり切ったって感じかな。
そうだね。
今回は、Adamならではの分類が出てきたのでそれを確認しておこう。
確かに、勾配降下法やモーメンタムでは見れなかった分類結果が出てたね。
この感じだな。
斜めに分ける感じがほとんどだったのに対して、
Adamでは4つの四角で分類された感じで、
これはこれでキレイな分類って感じがする。
Adamの分類をアニメーションで。
分類の過程をアニメーションgifにしてみた。
そのgifを張っておこう。
ほう!
こんな過程で分類されてたのか!
最初は単純に直線分類しようとしてるが、
それが難しくなった際に別のセグメントを引っ張り出している。
あとは、可能な限り各点から離れた位置に決定境界線を引けるように学習している感じだな。
しかし、Adamだけなぜこんなのが出てきたんだろう?
明確にはわからないが、
誤差関数の値は通常だと0.25あたりと開始として、
そこから徐々に落ちてくるのが勾配降下法とモーメンタムの挙動だった。
対して、Adamが今回のような結果を出すときは、一旦0.4まで跳ね上がってるというのはある。
これの影響で大域最適解に至れるルートを見るけられたというのはあるかもね。
大域最適解を特定するもの単純にはいかないってことか。
これがもっと複雑なネットワークになった際に、Adamのこの特性が強く利いてくるのだと思うよ。
まとめ
まとめだよ。
- Adamだけで出てくる分類結果を確認。
- 四角形で分類する理想的な形状。
- この分類結果になる場合は、誤差関数の値が一気に跳ね上がる時。
- これにより大域最適解を引き当てやすくなる。
バックナンバーはこちら。
Pythonで動かして学ぶ!あたらしい線形代数の教科書
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
ゼロからはじめるPID制御
OpenCVによる画像処理入門
恋する統計学[回帰分析入門(多変量解析1)] 恋する統計学[記述統計入門]
Pythonによる制御工学入門
理工系のための数学入門 ―微分方程式・ラプラス変換・フーリエ解析
コメント