Deep Learning の初歩(ニューラルネットワーク)を学ぶために, 遅ればせながら、ゼロから作る Deep Learning を読んだ.

読んだ理由

なぜ読んだかというと、この本がバカ売れしていて、すこぶる評判がよいから。

今現在(2017.4)、オライリー 5.5 万部売れているらしい。 エンジニアの人口が 90 万人と推定すると、5,6%の人が 20 人に 1 人が読んでいる。

みんな読んでいるので自分も読んでおこうというのが動機。 coursera の Machine Learning の講座で ニューラルネットワークが出てきて追い詰められていたという理由もある。

内容

誰におすすめか

なぜこんなに売れているのかというと、 高校生程度の数学の知識でもニューラルネットワークが理解でき、 さらには Python でニューラルネットのコードが書けるからだ。

  • Python 初心者だ
  • numpy つかったことない
  • 数学苦手

そんな君も大丈夫!すごくわかりやすく初歩の初歩からかかれている。

また、ゼロから自分で作るからこそ、知識を深く吸収することができる(と著者がいっている)。

ディープラーニング(深層学習)に入門

ディープラーニングのニュースが毎日世間を騒がし、 最近の風潮としてエンジニアならとりあえず機械学習かじっとけみたいなのもある。

この波にのっからないわけにはいかない。しかし、どっから取りかかればいいのだろう。 そう迷っているひとが五万といるからこそ、この本がとても売れているのではないかと思う。

ディープラーニング(深層学習)の入門書としては、この本が今のところ一番。

目次

目次は以下の通り。

1. Python 入門
2.パーセプトロン
3.ニューラルネットワーク
4.ニューラルネットワークの学習
5.誤差逆伝搬法
6.学習に関するテクニック
7.畳み込みニューラルネットワーク
8.ディープラーニング

本書は、pyhton と numpy ライブラリのみをつかって、 ニューラルネットワークと畳み込みニューラルネットワーク(CNN)をゼロから実装していく。

逆にいえば、CNN 以上のことは、RNN, LSTM, DCGAN, DQN などはかかれていない。

5 章までニューラルネットワークが続く。 6 章では、パラメータ更新の最適化法、バッチ正規化、正則化などハイパーパラメータ関連のことがかかれている。 7 章では、畳み込みニューラルネットワーク(CNN)を豊富な図と、丁寧な説明で紹介される。 8 章では、ディープラーニングの最新動向が説明される。

私は、coursera Machine Learning のバックプロパゲーションを理解するために 5 章までを 2 回読んだ。 そのあと読むのを止め、時間に余裕ができてから 6,7,8 章を読んだ。

感想

わかりやすいわかりやすいと書きつつ、実は理解できないところもあった。

計算グラフによる誤差逆伝搬法は、2 度読んでようやくなんとなくわかった。 が、誤差逆伝搬法はこっちの本で数式からのアプローチですんなりふに落ちた。

ちなみに、筆者が強く影響を受けている計算グラフによる説明動画は以下。 見てみたけど、英語なのでよくわからない。 日本語で、ニューラルネットワークに関してまとまっている本書はありがたい。

また、CNN の実装も理解できなかった。ライブラリに依存しないということだが、 im2col という謎のユーティリティが出てきて、これが理解できなかった。 もう一度、CNN の章については読み返す必要あり。

6 章や 8 章で、最新の手法が紹介されているところもよいと思った。 また、このディープラーニングという分野は変化が激しいのだなと感じた。

これからどうするか

ニューラルネットワークについてはだいたい理解できた。 いろんな教材であれこれ品を替えて触れているので、さすがに理解できてきた。

今後の目標は、CNN を理解すること。次は、この本を読もうと思っている。

TensorFlow を使って CNN を理解する本だ。 CNN の実装の箇所を読みながら、難しいところは自作するよりもライブラリを使ったほうがいいなと感じた。 引き続き、Deep Learning の知識を深めていきます。