書評:『ゼロから作るDeep Learning 』


スポンサーリンク

もっと早く買えばよかった。そしてもっと早く読み始めればよかったと思う。

すでにいろんな方が書評を書いておられるので無駄な気もしますが、一応。

概要

Pythonをかじったことがある人で、ニューラルネットワークの仕組みをしっかり理解したいという人向け。

ディープラーニング(深層学習)の勉強の最初の取っ掛かりとしては非常にいいと思う。ただ、これ一冊で網羅している訳ではない。

対象読者および本のコンセプトを間違えないこと。ディープラーニング関連の用語と課題については理解できるはずなので、他の本に挑む前に5章辺りまで読んでおくというのもいいかもしれない。

前提知識としてPythonの基礎と、NumPyにある程度慣れている方がいい。 ただ、本文掲載のコードを実際に打ち込んでいるうちにNumPyについてはわかってくるはずなのであまり気にしなくていい。

数式も結構出てくるけど、Pythonのコードと見比べたりしていけば大丈夫。6章から急に学習曲線が跳ね上がっている感じ。この辺で写経をサボった*1

書店で(紙媒体の)実物を見てから購入しようと思いながら、近所の大垣書店にはずっと在庫がなくて躊躇していた*2。迷うぐらいなら買ってしまったほうが早かったと反省している。

感想

5章の計算グラフもそうだけど、数式の羅列で終わらせないように、という著者の努力が素晴らしいと思う。

数学ガールの結城先生の、読者のことを考えるをかなりのレベルで実践しているのかな、と思った。

タイトルに「Deep Learining」とあるけど、解説しているのはあくまでも一部。他の書籍でニューラルネットワークについて理解を深めたい場合に読むと良いのかも。

MNISTの文字認識の逆伝搬による学習事例、高専の学生実験でやった文字認識の実験でも似たようなことをやっていたのを思い出した。 アルファベットの大文字を8x8の配列*3で表現してニューラルネットワークに学習させ流という実験。ポケコンC言語のコードを入力するのが面倒だった記憶がある。

日本人の書いたオライリー本なので図は多め。レイアウトはシンプルでもう人工夫欲しいと感じた。

良書。

問題は私の脳が新しい用語をスムーズに記憶してくれないところ。いかに良書といえども読者の頭脳の問題はカバーできない。

最大の難点は、4章、5章あたりで私自身の知的好奇心がほぼ満足してしまったこと、かな。

学習曲線が跳ね上がる当たりで興味の対象が他に移ってしまった。間を置かずに一気に読めばよかったと思う。

文字認識は興味のあるテーマなんだけど、手書きはちょっと。しかも数字オンリー。

現実には一文字一画像ではないわけで……。

気になった点など

良いところ

他の本に比べてとっつきやすい。想像したより数式が少ない。そしてPythonのコードを入力(もしくはダウンロードして)、実行していくうちに自然と理解が深まっていく感じ。入力は結構めんどいけど。

気になったところ

関数の引数については解説があるけど、関数の内部変数についての説明が欲しかった*4。NumPyの提供するメソッドの返す値についての理解が浅いとどうしても混乱する。

代表的な箇所としては4.4節の勾配のところ。特にp.104掲載のプログラム。多分メモリ消費量を減らそうとしているんだろうけど、ちょっとわかりにくい。

文章中に具体例をコードで示すときは、そのコードの直前に前提条件(例えばN=2とか)を明記して欲しかった。図が挟まっていたりするとページを前後したり視線を行き来する必要があってちょっと不便。

組版というかレイアウトに関してはオライリーはもうちょっと頑張ってほしい。

式変形に詰まったところ(5章)

他にもあったけど特に印象に残ったところのみ。5.12式の式変形。

qiita.com

思いつき

よくある質問とその答え、みたいな付録があると良かったのではなかろうか。詳細は何ページに説明があります、という感じの。

人気ランキングの上位だった分、ブログに感想や疑問点を書いている方は結構いらっしゃるので、そういう方のブログをチェックすると理解が進むと思う。

そのほか

OSXmacOS)環境で、pyenvでインストールしたPythonではそのままではグラフは表示できないので注意されたし。

RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of 'python' with 'pythonw'. See 'Working with Matplotlib on OSX' in the Matplotlib FAQ for more information.

Python公式サイトで配布されているパッケージからインストールするか、matplotlibのバックエンドの設定を変える。

matplotlibの設定ファイルはホームディレクトリの直下でもいいのか?

mac環境ではvenvでインストールしたmatplotlibの場合もホームディレクトリ直下の~/.matplotlib/matplotlibrcが存在する場合はその内容が反映される。優先順位は未確認。 (Linux系は~/.config/matplotlibディレクトリ)

まとめ

ちょっとした数学の知識(微分積分線形代数)とNumPyにある程度慣れ親しんでいるかどうかがポイント。わかりにくいところはググればと誰かのブログ記事なんかに解説があるので十分読める。

確かにオライリーの売れ行きランキング上位に継続して入っただけのことはある。ただし、漠然とディープラーニングを勉強したいとか、取りあえず動くものを作りたい場合は他の本が良いと思う。主にニューラルネットワークとその学習についてディープに理解したい人向けの本なので。

すでにTensorflowなりChainerといったディープラーニング向けのフレームワークを使っていてブラックボックスになっている部分について知りたいとか、あるいは専門用語や固有名詞に混乱している、という人におすすめの本。


なお、6月あたりに続編(自然言語処理編)が登場するらしい(公開レビュー中)。

ゼロから作るDeep Learning ? ―自然言語処理編

ゼロから作るDeep Learning ? ―自然言語処理編

ほかのディープラーニングの応用事例とか、手っ取り早く手を動かして見たいのであればInterfaceの増刊号がいいと思う。もしくはimpressから翻訳されているPacktの本。

[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

*1:多分もう一度読み直すのでそのときでいいかな、ということで

*2:梅田方面に行った時にチェックすれば良かったんだけど興味が機械学習にあまり向いていなかったので

*3:うろ覚えなので違ったかも

*4:自明と判断されたのか、省略されている箇所がある

広告