機械学習に独学で挑む

非情報系理系大学生が独学で機械学習に挑みます

『ゼロから作るDeep Learning』は深層学習するなら必読な話

 

総括

 評判が非常に良かったので読んでみたのですが,やはりとても分かりやすかったです。僕が今まで読んできた書籍はDeep Learningを扱っているものはあまりなかったので,ここで理解できて良かったです。

 完了するのに約10時間かかりました。

 機械学習の学習コンテンツとしては

  • 分かりやすさ      ★★★★☆
  • 数式の少なさ      ★★★☆☆
  • プログラミングの簡単さ ★★★★★

です。

 お勧めの対象者は

です。機械学習やったことない!という方はまずは他のリソースから始めてみてはいかがでしょうか。

machine-learning-bymyself.hatenablog.com

 

内容の評価

分かりやすさ ★★★★☆

 「ゼロから作る」という名の通り,ゼロから説明してくれるのでとても分かりやすかったです。必要なことの多くは本の中で説明してくれるので,前提知識は必要ないかもしれませんが,Pythonパーセプトロンの基本的な理解はないと難しいと思います。

 もっと具体的には,計算グラフを用いた誤差逆伝播や,畳み込みニューラルネットワーク(CNN)の説明は非常に分かりやすかったです。特に計算グラフは一度実装してみないと理解できないと思います。

 この本を読む前に『Python機械学習プログラミング』を読んだ際にはさっぱり計算グラフが理解できなかったのですが,ゼロつくを通して実装レベルで理解できました。また,畳み込みニューラルネットワークについても,入力層や畳み込み層のテンソルの次元などさっぱりだったのが納得できました。

 全体的にとても図が多くディープラーニングの複雑な層構造も分かりやすく説明されています。

 

数式の少なさ ★★★☆☆

 数式はそれほどでてきませんし,でてくるものもReluやSigmoidなど比較的簡単なものばかりです。ニューラルネットワークの誤差関数など複雑なものはカットされています。誤差逆伝播法の説明から察するに,この本のコンセプトとして数式で厳密に理解することよりも視覚的,感覚的に理解することを優先しているようです。

 逆に言えば数学的な証明,特定の関数を用いるモチベーションなどの説明はあまりありません。勾配降下法などに関しては,別のリソースで数学的に理解する方が望ましいでしょう。

 読むのに必要な数学は

  • 行列(行列同士の積が理解できれば十分)
  • 微分偏微分が理解できれば十分)

といったところです。

 

プログラミングの簡単さ ★★★★☆

 「ゼロから作る」ので,特別な難しいライブラリは使いません。Pythonの基本文法,Numpyの知識があれば問題ないでしょう。

 一応1章はPython入門に充てられているので多少不安があっても最低限のことはそこをみれば何とかなります。

 繰り返しになりますが,個人的には基本的な関数を計算グラフ上のレイヤとして実装できたのはとても理解の助けになりました。

 

その他の特徴

意外とすぐ読める

 私は10時間で読み終わりました。1冊読むのにかかる時間としてはとても短いです。理由としては実はコード量が少ないことにあると思います。本の中に書いてあるコードはそれほど多くないため,全部写経してもそれほど時間はかかりませんでした。

 ただし,理解しやすくするために省略されているコードは多いです。githubからサンプルをダウンロードできますが,本には載っていないコードがたくさんあります。これらも全部写経するとなるともっと時間はかかると思います。

 

当然だが,内容はニューラルネットワークに関することのみ

 ニューラルネットワーク以外の機械学習アルゴリズムについては全く言及がないです。また,性能の評価の種類やデータの前処理などの話もないので,それらについては別のリソースで学ぶ必要があります(当たり前)。

 

総括

 ニューラルネットワークについての理解はとても深まりました。これを読めばCNNやRNNの更なる学習がスムーズになると思います。

 基礎はなんとなくやった,という人は是非取り組んでみてはいかがでしょうか!

 私は次は2巻をやってみようと思います!