hirolog

20代医大生のブログ。日々の情報収集のアウトプット。

プログラミング初心者が機械学習を1ヶ月勉強し続ける #day12

今日の目標

今日からpythonを使いつつ、「ゼロから作るDeepLearning」を始めていこうと思います。

12日目でやった事

ゼロから作るDeepLearning

かかった時間:11時間

難易度:★★★☆☆

第1章:python入門

ゼロから始めることをこの本のコンセプトとしており、pythonの入門まで付いています。一応python未経験でも理解はできそうですが、基礎を一通りやってから取り組むのが良いと思います。

第2章:パーセプトロン

この辺りはcouseraの機械学習ですでに学んだのでスムーズに進みます。

第3章:ニューラルネットワーク

内容自体はcouseraですでに扱ったものなので理解しやすかったです。あとは、それをpythonでどう実装するかを学んでいるイメージです。aとzの使い方がcouseraの時とは逆だったりとちょっと違和感を感じるところが多々ありましたがこちらで慣れます。。

行列の計算の仕方から丁寧に説明してくれているのでcouseraをやっていなくても十分安心して学べます。

個人的には勾配法の説明はcouseraの方がわかりやすかったかなと思います。

第4章:ニューラルネットワークの学習

この章から実装量も増えてきてだいぶ時間がかかりました。

第5章:誤差逆伝播

この章が今日一番勉強になりました。couseraでは誤差逆伝播法は直感的なイメージをなんとなく理解して最終的には式を覚えようという感じでしたが、この章では具体例を用いてかなり噛み砕いて説明されていたのがわかりやすかったです。

また、couseraと実装の仕方も異なっていました。こちらではlayerごとにクラスを作り、それぞれでforward,backwardのメソッドを作ることによってそれらを、レゴのように組み合わせて一気に作用させるというやり方です。この発想が非常に面白いなあと思いました。pythonだからこそできるやり方ですね。これであればlayerが増えようとも簡単に実装できそうです。

第6章:学習に関するテクニック

パラメータの更新方法の違いや、初期値の設定、batch normalizationなど、実際にニューラルネットワークの学習を行う上でのテクニックが載っています。

この章はcouseraよりもかなり深いところまで説明されているのでおすすめです。論文の結果などを用いて、例えばパラメータ更新方法の違いによって損失関数の値の変化をグラフで見れたりするのでとても参考になります。割と最近できた手法も載っていたりします。

明日に向けて

明日は「ゼロから作るDeepLearning」の続き、「畳み込みニューラルネットワーク」と「ディープラーニング」をやってこの本を終わらせたいと思います。初めて学ぶ分野なので楽しみです。

次の本として「pythonではじめる機械学習」にいこうと思います。