ゆびかわブログ

適当に色々書き残したい。読書、IT、ボルダリング、数学、映画などが好きです

【読んだ】ディープラーニングに超入門した


2冊の書籍によってディープラーニングに超入門したのでただそのことを書きます。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装TensorFlowで学ぶディープラーニング入門 ~畳み込みニューラルネットワーク徹底解説~

超入門の結果

入門前の僕の状態は、だいたい次のような感じでした。

最尤推定法はなんとなく知ってる
・ANN(人工ニューラルネットワーク)という言葉は聞いたことがある
・画像の分類とかに有用らしい噂くらいは知っている
・CNN(畳み込みニューラルネットワーク)は全然わからない

それがだいたい次のような感じになりました。

・ANNの基本形は理解した
・ANNの構成→誤差関数の設定→学習(勾配法でのパラメータ自動調整)までの一連の流れがだいたいわかった
・BackPropagation(誤差逆伝播法)の役割と有用性がわかった
・ANNのごく基礎的なチューニング要素(ハイパーパラメータ、誤差関数、活性化関数等々の選択)がわかった
・CNN(畳み込みニューラルネットワーク)の仕組みがふわっとわかった

それまでニューラルネットワークは自分の中で真っ黒なブラックボックスだったのですが、徐々にそうじゃなくなっていくのが面白くてやってて楽しかったです。

学習方法

ネットで評判の良かった次の2冊の書籍をざっと読みました。


読んでいくうちに、「そもそもどうしてANNでうまくいくのか?」という点の論理的保証について気になったのですが(※後にANNの普遍性定理が関わっていると知る)、これらの本にはその辺の記述が少なかったので、横道に逸れて色々ググって主に次の2つのサイトである程度把握しました。

ニューラルネットワークと深層学習
http://mathetake.hatenablog.com/entry/2016/11/03/194454

主として参照した資料はだいたいこれくらいです。

感想など

書籍の方は、2冊とも浅すぎず深すぎず、適度な深さでわかりやすく説明されており良かったです。
個人的な感想ですが、「ゼロから作る…」の方は6章までは非常にわかりやすかったのですが、7章のCNNの解説部分で突然意味不明になった感がありました。なので、僕はそこで一旦読むのを止めて、「TensorFlowで作る…」の方にシフトしてCNNの理解に努めました。「TensorFlowで…」の方は、CNNの単なるアルゴリズムの説明だけでなく、畳み込み層やプーリング層がどういう役割を持っているのか直感的にイメージできるような説明もあり、CNNの理解にはこちらの方が適していました。その後「ゼロから作る…」の7章から最後まで読んだという感じです。全体的にふわっと理解するだけなら「TensorFlowで…」の一冊だけでも良いかもです。「ゼロから…」の方は解説はやや詳しく、フレームワーク未使用のPythonコードでの実装例まであるので腹落ち感がより大きいです。

ウェブサイトの方はANNの普遍性定理の概要を知りたくて参照しました。上の方はANNで任意の関数が近似できることを視覚的に説明していてわかりやすいです。詳細は証明はなく、証明を知るには原論文を読む必要がありそうです。(僕は読んでません)
下の方は、普遍性定理は凄いけどそれだけじゃダメだよ〜落とし穴あるよ〜的なことが書いてあり参考になります。

おそらくこれらの情報で、初歩的な理屈は概ねカバーできると思います。
あとは必要に応じて、手を動かしてみるもよし、知識を広げるもよし、深めるもよし、という感じなのかなと。

しかし、全くわからなかったことが、霧が晴れていくようにわかっていくのはやっぱり楽しいな〜。
これも、分かりやすい資料を作ってくれた先人のおかげなわけで、ほんと感謝感謝です。