#背景
単純パーセプトロンを勾配降下法で実装したいです。TensorFlowやPyTorchなどのライブラリを使えば動くものは出来るのですが、0からPythonで作りたいです。具体的にはANDゲートで実装したいのですが、出力は0,1です。学習には確率的勾配降下法を使いたいと思っていますが、そのためにバイナリークロスエントロピー誤差を使おうと思っています。ただ、勾配降下法のイメージが掴めないので、簡単な所から可視化してみたいと思います。
#目的
という事で、今回は「勾配降下法の可視化」が目的となります。
#方法
今回は、超一般的な2次関数 $y=x^2$ を使って可視化します。微分した時の傾きが0の所で勾配降下法を終えます。
#結果
matplotlibでの描写をfor文で繰り返すことで、それっぽいのが出来ました。バッテンが少しずつ移動する様子が見てて面白いです。
追加(2021.1.31)
バッテンが移動する様子をアニメーションで保存しました。
修正(2021.1.31)
わかりやすさの為、マーカーを丸にして、学習率を大きくしました。
勾配降下法.ipynb
#課題
- とりあえず報告だけ。この後すぐに動画にしたり、DeepLearningに拡張したりしたい。
- 先日、自分で実装した物を参考に勾配降下法の過程を動画にしました。次はDeepLearningの様子を動画にしたいと思います。クロスエントロピー誤差の様子を動画に出来るとかなり嬉しい気がします。その時は、「なぜディープラーニングをするのか?について調べてみた件2(ロジスティック回帰)」を参考に実装したいと思っています。
- matplotlibで図示しているのですが、意図しない所で描写されたりします。例えば、以下は描写されそうなコードは変数に入れて描写されない様にしているつもりなのですが描写されてしまいます。もし、原因がお分かりの方がいらっしゃると教えて下さると嬉しいです。
- 今回は2次関数の出力が0の所が解となっていますが、それが何なのかも良く分かっていないので今後の課題にします。というか、クロスエントロピー誤差について調べていくと分かる気がしています。