脳科学の研究室でニューラルネットワークを書いている大学院生です。
今はそんなにがっつりAIをやっているわけでもないけれど、研究的にフルスクラッチで教師ありの学習を行えるネットワークをコーディングしなくてはいけないので、AIに関する基礎的なアルゴリズムはまあまあわかっているつもりだったりします。
で、いろいろな文献に手を出した僕が、ニューラルネットワークの原理を理解するのに圧倒的に役立った本があります。
ゼロから作るDeep Learning
いままで、もやっと感覚でしかわからないことをコーディングを通してかっちり理解させてくれたのがこの本です。
ライブラリに頼らない学習ができる
ニューラルネットワークの諸学者がまず手を出すネットワークライブラリといえばscikit-learnではないでしょうか。直感的にモデルを組み立てられるし、いろいろなアルゴリズムを簡単に試すことができて、めっちゃとっつきやすくていいですよね。
本格的なネットワークを試したいとなれば、tensorflowやchainer。どれも無料でインストールできるし、レファレンスがたくさんあるのでわからないことがあればすぐ調べられます。
逆に、いまオープンソースで開発されているネットワークってどれも今あげたライブラリに依存しているので、ニューラルネットワークをやりたいと思ったら今あげたライブラリは必須だと思います。
ただ、今のAI用のライブラリってすごすぎるんですよね。余計なことはブラックボックス化して、最短で大規模なネットワークを実装することができる。
ただ、これからニューラルネットワークを学ぶ人間にとって、重要なのが余計なブラックボックスの中にあったりします。
数学的にどのようにアルゴリズムが処理されているかは、レファレンスを読み流すだけではつかむことができない気がするんですよね。少なくともフルスクラッチでネットワークを書くことはできません。
“ゼロから作るDeep Learning”はそのブラックボックスを、パーセプトロンを作るところから始めてすこしづつ拡張していくことで、ものづくりを通して理解することができます。
もちろん、サンプルコードはgit上で管理されていて、いつでもダウンロードすることができるし、すべてコードを書く必要もありません。ただ、一つ一つ形作ることで、ニューラルネットワークを理解していく作業は、エンジニア気質の人間には必要なことだと思うんですよね。
台湾の研究所でも読まれていた
昨年の夏に台湾の研究所で10週間働いていたのですが、その時、先輩研究者の本棚に”ゼロから作るDeep Learning”の第2巻である”ゼロから作るDeep Learning ❷ ―自然言語処理編 “がありました。なんで日本の後の本があるのか聞くと、台湾語版の“ゼロから作るDeep Learning”の内容があまりにもよく、第2巻が翻訳される前に読みたいから日本語版を買ったといっていました。
自動運転のためのCNNを開発するガチの研究者でも、読みごたえがあるのかと思いましたが、この本はあくまで初学者向けの本で、AIの知識がゼロでも読み切ることができます。ちなみにCNNは扱いません。
実際、ニューラルネットワークを2年間勉強してきた今もたまに読みたくなる時があります。
初めて、この本にだあった時は衝撃的で研究を放り出して読んでいました。もちろんゼミで紹介しましたが、言われて読んだ後輩もはまっていましたね。
まぁ、この本が良書あることは今更僕が記事することもなく、読んだ人はみんなわかっていると思います。でも、とりあえず記事にします。
作ること=理解する人のための本
根っからエンジニアという人間にとって、理解することはつまり、作ることだと思います。“ゼロから作るDeep Learning”はそういうエンジニアのための本です。
理屈を知ったら、それを形にして吐き出して、動かすことで初めて理解する。本書はニューラルネットワークを作る経験を提供してくれます。
ハードは作ることが簡単ですが、ソフトやアルゴリズムを作って理解するのってなかなか難しいですよね。そこでこの本の登場というわけです。
ちなみに、文章も読みやすく読んでてわかりやすいと思います。
興味を持った方はぜひ
それでは。