ディープラーニングについて学ぶならこの2冊を読むしかない

年末年始はこの2冊を読んでいた。

はじめての深層学習プログラミング』清水亮
ゼロからつくるDeep Learning』斎藤康毅

結論から言うと、いま、人工知能やディープラーニングに興味があるひとは、2冊とも必読ではないかと思った。

アプローチが完全に対称的なので、両方読んだら、理論と雰囲気について、見通しがつくようになったのがとてもよかった。

『ゼロからつくるDeep Learning』は、ていねいに書かれたオーソドックスな入門書だ。人工知能開発によく使われる言語・Pythonの基本や数値計算ライブラリの使い方からはじまり、ニューラルネットワーク、ディープラーニング、畳み込みときて、最後に画像認識を解説する。随所に適切な例題やサンプルコードを交えて、理論と実践をバランスよく説明している。

対して、『はじめての深層学習プログラミング』は、まったく真逆のアプローチだ。なんと、理論の解説などはすっとばして、いきなり画像認識のプログラムを動かすところからはじまる(ぼくはこっちから読んだ)。

なにしろ、帰省のための新幹線にのって、サンプルコードを入力しはじめて、30分くらいでAIで画像認識をするプログラムが動いた(ただし、開発環境のインストールまではすませた状態からはじめている。これについてはあとで書く)。

写真は、Macのカメラに写った画像を認識しているところ。リアルタイムで写り込んだものを識別する。もちろん、すでに学習済みのAIを読み込んでいるからこんなことができるわけだけれど、「あるものをつかってさっさと動かす」という著者の思想がはっきり出ていておもしろい。

試してみたいというひとは

自分もやってみたいというひとのために、ハードルの高さも書いておこう。ひととおり試すのに、どれくらいの知識が必要なのかというと、

・ターミナルの操作などUNIXの使い方の基本
・多少のプログラミング経験

は必須だと思う。さすがに、だれでも試せますよ、とはまだ言えない(もちろん、エンジニアならだれでもできる)。以下に、ぼくがつまづいたところのメモを置いておくので、それを見て理解できるかどうかが、自分でも試せるかどうかの分水嶺になるかもしれない。

技術的につまづいたところのメモ:

「ゼロから」はPython3系、「はじめて」はPython2.7系を前提としている。よって、Pythonの複数バージョンの使い分けが必須だ。そのために、

・pyenv
・virtualenv

をインストールして設定する必要がある。やりかたは、

pyenv-virtualenvでディレクトリ単位のpython環境構築 - Qiita
http://qiita.com/niwak2/items/5490607be32202ce1314

↑などが参考になる。その後は、ホームディレクトリ以下にそれぞれの環境が入るので、numpyなどの必要なライブラリはそれぞれにインストールする。

『はじめての深層学習プラグラミング』は、そもそも前提がLinuxなのかもしれないんだけど、Macで使うとけっこうはまった。たとえば、冒頭で画像認識のためにOpenCVを入れろといってくるので、Macの場合はbrewでインストールするのだが、バージョンとかパスとかいろいろ苦労した(詳細忘れた)。

ほかにも、スクリプトの中で呼びだされるwgetをbrewでインストールしたり、PILという画像のためのライブラリをソースコードを持ってきてインストールしたり、エラーがでるたびに原因を探して解決をするということも行っている。

『ゼロからつくるDeep Learning』でも、冒頭の Matplotlib ではまった。インストール自体はpip install matplotlibでいけるのだが、サンプルコードが「画面描画がなんちゃら」というエラーが出て動かない。

pyenvとvirtualenvで環境構築した時にmatplotlib.pyplotが使えなかった時の対処法 - Qiita
http://qiita.com/Kodaira_/items/1a3b801c7a5a41c9ce49

が、ここを見たら解決できた。

それにしても、Qiita、便利すぎるよ、Qiita。ぼくがプログラムを書いていたころはQiitaとかなかったから感動したよ。サービスの運営元は弊社と同じビルの中に入ってる会社なんだけど、こんなにすてきなことをやってたのか(すいませんエンジニアには常識ですよね)。

ということで、環境構築がめんどいけど、試す価値は十分にあると思いました。贅沢を言うと、両方の著者さんか版元さんが学習用のVMとかDockerを配布してくれたら最高なんですが、いかがでしょうか。

でもほんと、AI、おもしろいな。Linuxの黎明期とか、インターネットの黎明期のような感動を思い出す。やっていくにつれ、数学や統計学を勉強しなおしたいなとか、おれにGPUをGPUをくれーーなどと思うようになるが、そこはみなさん、それぞれなんとかしてください。

この記事が参加している募集

コンテンツ会議

読んでくださってありがとうございます。サポートいただいたお金は、noteの他のクリエイターのサポートに使わせていただきますね。