wolfmasa's blog

フロンターレとプログラミング関係の話題を、気が向いたときにつぶやくブログです。

ゼロから作るDeep Learning

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

GitHub - oreilly-japan/deep-learning-from-scratch: 『ゼロから作る Deep Learning』のリポジトリ

飛ぶように売れているというDeep Learning本を読んでみた。

Rebuild.fmでもnaoyaさんが絶賛していたけど、その前評判?を裏切らないわかりやすさ。

GitHubリポジトリを見ながら少し写経とかして見たら、たちまちわかった気になれた(笑

難しい内容ではあったが、説明が丁寧でわかりやすいので、詰まることなく読めたので、好評なのも頷ける。

Python入門

インストール方法などを丁寧に解説。この辺が初心者向けっぽくてほのぼのしている感じ。

パーセプトロン

パーセプトロンの基本的な考え方の解説。確かに、画像処理のブロック図と似ているし、自分のバックグラウンドからするととてもわかりやすい。

ニューラルネットワーク

いよいよ、ニューラルネットワークの構築が始まる。多分、一番重要な章ではないか。ここを理解すれば、半分は理解できたと同じ。

ニューラルネットワークの登場人物の説明だけでなく、自分の書いたコードで、実際にMNISTを使って手書き文字の認識ができてしまうのが、地味に感動する。達成感大事。

ニューラルネットワークの学習

ニューラルネットワークを使って、どう学習していくかという基本的な考え方。その後の話につながるもう一つの柱。

勾配法とか、概念は分かっていたけど、改めて実装してみると、こちらもなんだか分かった気になってしまう。

誤差伝搬法

徐々に、どうやって効率的に学習を進めるかという現実的な話になる。

誤差伝搬法の考え方は、ちょっと難易度が上がる気がしたので、繰り返し読んでようやく概要がわかった気がする。

全体を通して、説明が丁寧で素晴らしい。特に数学的な説明を丁寧に行うので、それだけでも精神的に嬉しい。

学習に関するテクニック

いかに学習を早く終わらせるか、という課題の続き。いくつかの方法を提案。

だんだん、理論でスッキリ説明というよりも、実際に動かしてみるとうまくいく、的な話が増えてくる。おそらく内容が難しいので説明しきれないと思うので、その辺のさじ加減も筆者はよく考えていると思う。

畳み込みニューラルネットワーク

ニューラルネットワークと言っても、基本的には今までの考え方と同じだが、pythonのライブラリなどの話を交えつつ、畳み込み計算に持ち込むことでより高速に実行する話を加えてある。どこまでが汎用的(python以外でも同じ)で、どこからがpython独自の話なのか、ちょっとわかりにくかったような気がする。

ただ、事例はよくありそうな話だし、CNNの解説もわかりやすかったので、なんとか話についていくことができた。

ディープラーニング

hotな話題を、軽く流す。

歴史的な話や、今取り組まれている課題など、ディープラーニングにまつわる雑学をまとめた感じ。

ある種、エピローグ的で、おまけ的なので、気軽に読むことができた。