最近、機械学習関連の書籍をいくつか買った。
その中でも、特に良かったのが本書、『ゼロから作る Deep Learning - Pythonで学ぶディープラーニングの理論と実装』だ。
やっと読破してそれなりに消化できたので、本書を紹介したいと思う。
目次
本書の構成
本書は以下のような構成になっていた。パーセプトロンからディープラーニングまでの歴史を辿る構成だ。
- 1章 Python入門
- 2章 パーセプトロン
- 3章 ニューラルネットワーク
- 4章 ニューラルネットワークの学習
- 5章 誤差逆伝播法
- 6章 学習に関するテクニック
- 7章 畳み込みニューラルネットワーク
- 8章 ディープラーニング
- 付録A Softmax-with-Lossレイヤの計算グラフ
深層学習初心者におすすめ
多少のプログラミングの知識があればついていける、わかりやすい書籍だった。
それでいて、書名通りに、本当にゼロからDeep Lerningの実装まで学ぶことができるから驚きだ。
微分や自然対数などについても、わかりやすい説明がされているのが嬉しい。
(本筋ではないが、僕は本書を読んで、やっと『数値微分と解析的微分』の違いが理解できた)
それに、Python自体の文法の説明があるのも良かった。
こんな感じで、Python以外の職業プログラマーが自力でディープラーニングを学ぶ書籍としては、現時点で最良の書籍と言えるものだった。
俯瞰しながら知識を積み上げていける
深層学習に取り組むには、幅広い知識が必要だ。
本書の範囲だけでも、以下のようなキーワードがあり、どれひとつ抜けていても、ディープラーニングを理解できない。
- パーセプトロン
- ニューラルネットワーク
- 恒等関数とソフトマックス関数
- 活性化関数
- 損失関数
- 勾配法
- 誤差逆伝播
- etc
あわせて、上記の理論を実装するための開発環境やライブラリの知識も欠かせない。
そんな中で、本書は各種理論の説明も手厚く、さらに、Pythonの開発環境とライブラリの利用方法に触れているため、理論と実装の両面を俯瞰しながら学ぶことができた。
多くの書籍は、理論の説明については手厚いのだが、プログラムコードへの展開イメージが掴めないことがあった。
そこにきて、本書ではPythonのプログラムコードの解説までされているので、僕のような『偏微分とかよくわからん』というレベルの人間でも、食らいついていけた。
(数式とコードを並べて書いてくれているのが本当にありがたかった)
また、本書は構成がわかりやすかった。
かなり簡単な論理演算の話題からはじまり、『コンピュータはNANDで実装できる』とか、『論理回路の閾値やパラメータの概念が、ニューラルネットワークのwやbになる』みたいな説明が非常にわかりやすかった。
論理演算の初歩から、ディープラーニングの世界まで手を牽いて連れていってくれるような印象があり、楽しかった。
Python自体の知識が身につく
本書を読み進めるうちに、Python3の開発環境や、ライブラリの使い方をある程度習得できる。
(開発環境=Anaconda。ライブラリ=NumPy、Matplotlibが中心)
これらの知識は、Pythonで同種の開発を行っていく上で、役に立つものになるだろう。
あわせて、Pythonが機械学習や科学技術関連のプログラミングにむいていることがよくわかった。
本書では触れられていなかったが、個人的には、Anaconda(Pythonのデータサイエンス関連の開発を支援するパッケージ)を知ることができてよかった。
データサイエンティストを目指す人のpython環境構築 2016 - Qiita
特に、パッケージに含まれていたSpyderという開発環境は便利だった。
Spyder(PythonのIDE)を入れてみたところ、とても使いやすい - StatsBeginner: 初学者の統計学習ノート
Installation — Spyder 3 documentation
githubのサンプルソース
以下より本書で紹介されているコードを参照できる。
GitHub - oreilly-japan/deep-learning-from-scratch: 『ゼロから作る Deep Learning』のリポジトリ
ローカル環境にクローンを作り、実際のコードをいじりながら学習できるスタイルだ。
あと、本書を読むなら以下の正誤表も目を通しておきたい。
errata · oreilly-japan/deep-learning-from-scratch Wiki · GitHub
はじめはこれを知らず、重要なところを誤読していた箇所があった。
まとめ
今回はディープラーニングについての理論と実装を学べる、『ゼロから作る Deep Learning - Pythonで学ぶディープラーニングの理論と実装』を紹介させてもらった。
最後に余談だが、本書は一般的な単行本サイズだった。(ハードカバーの小説本のサイズ)
一般的な技術書に比べて小ぶりなので、持ち運びしやすいし、本を見ながらコーディングするのが楽だった。
(それでも、固定しておかないと、特定のページを開きっぱなしにできなかった。技術書全般について、読みながらコーディングする、という作業がやりやすい体裁などにできないだろうか。Kindleでもいいが、PC版リーダーは微妙だし・・)