最近発売されたディープラーニングの本。
基礎的な内容から始まり、主にリカレントネットワークを、TensorFlowとKerasによる実装を通して理解していきます。
結論
今回紹介する本
詳解 ディープラーニング ~TensorFlow・Kerasによる時系列データ処理~
- 作者: 巣籠悠輔
- 出版社/メーカー: マイナビ出版
- 発売日: 2017/05/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
以下を全て満たしていれば確実に読めます。
・大学1年生レベルの数学(微積分や線形代数)がわかる
・Pythonに触れている
・ニューラルネットワークを知っている
これらがそれぞれ欠けていても、学びたいという情熱があれば読みきって、理解することができるでしょう。それくらい丁寧に書かれています。
「ゼロから作るDeepLearning」を彷彿させる丁寧さです(今回紹介する詳解ディープラーニングの方が応用寄りですが)。
誰におすすめか
TensorFlowあるいはKerasを使っていきたいユーザー
TensorFlowとKerasの実装を両方共載せています。従ってKerasを使いたい人にとってもTensorFlowを使いたい人にとっても非常におすすめです。
特に単にニューラルネットワークの話だけでなく、これら2つのライブラリを使った典型的な実装の形を身につけることにも使えるため、ライブラリを少し触ってみたけど自分で設計していくにはどうすればいいのか悩んでいる人にも適していると思われます。
Kerasオンリーのユーザーにとっても、バックエンドでTensorFlowが何をしているのかをコードを通してみると理解が深まるのではないかと思います(TensorFlowは割と計算グラフを数式ベースでダイレクトに書くので)。
リカレントネットワークを使いたいユーザー
TensorFlow系の本は、今までほとんどが画像認識を意識した内容でした。そうなると自然と畳み込みニューラルネットワークが解説の中心になってきます。
今回の本はタイトルにある通り、時系列データ処理を意識した内容であり、応用的なネットワークに関してはリカレントネットワークが中心となってきます。これは現在日本語で出版されているTensorFlow系の本では唯一だと思われます。
誰におすすめでないか
Chainerを使っていきたいユーザー
Chainerでは以下の書籍がおすすめです。以下の書籍では、普通のニューラルネットワークに始まり、応用的な面ではリカレントネットワークが話題の中心となってきます(扱うデータは自然言語)。従って、今回紹介する本と割と内容が似通っており、かつChainerのことが学べます(ただしChainer1.XのTrainerが実装される以前のコードとなっている)。
最近流行りのPytorchに関しても、Chainerをかなり参考にしてライブラリが構築されているため、この波に後々乗り移りたいと思う人はChainerの方がいいでしょう(後々乗り移ろうと思っているなら、最初からPytorchで良いんですけどね)。
既にTensorFlowあるいはKerasを使いこなしている方
リカレントネットワークもLSTMもエンコーダーデコーダーモデルもアテンションも知っており、かつライブラリも自分で既に使いこなしている人にとっては不要だと思われます。決して最新の論文の手法などを紹介しているわけではありませんので、既に使いこなしている人は論文を自分で実装していくほうが良いです。
どちらか一方の知識が掛けている、例えば「アテンションを知っているが、使い方は分からない」とか「ライブラリは熟知しているがアテンションって何?」っていう人にとっては学ぶところがあるでしょう。
ただし、最新の手法を知り尽くしている人にとっては、おそらく公式ドキュメントを読めば自分でなんとかできると思います。むしろライブラリを使ってきたけども、その理論や内容がよくわからないという人にとっては、割と数式面でも丁寧に解説がされているため、参考になるところが多いと感じます。
本の構成
以下で本の構成を紹介していきます。
全体を通して言えることは、数式を通してしっかり理解が深まるように書かれているということです。その数式も理論的に込み入った話ではなく、ディープラーニングを使う上で知っておくべき最小限の知識をカバーしているという感じで、バランスが良いと思います。
もちろんサンプルコードも充実しており、解説していることは、実際に動かして見てみるということも徹底しています。図なども適宜用いられており、普通のパーセプトロンの話からリカレントネットワークの応用的な話まで、実装を通して一気通貫で勉強できる内容になっています。
1章:数学の準備(1〜22ページ)
ここでは微分・積分や、線形代数の基本的な計算を紹介していきます。
何も数学を知らない人が読めるほど丁寧というわけではなく、「やったけど忘れた、くらいの人が思い出すには十分かな」という程度の説明になっています。
ですから、できれば大学1年の数学くらいは触れている状態で読んだほうが良いでしょう。
2章:Pythonの準備(23〜68ページ)
Pythonの軽い話の後、Anaconda(これ入れとけばデータ解析のライブラリが最初から揃う)の導入を行います。その後、データ型やデータ構造の軽い説明が続きます。
Numpyの基本的な計算の例も載っています。
最後のTensorFlowとKerasのインストールの仕方が紹介されて終わりです。
多分、さすがにここを本格的に参考にしなければならない人はあまりいないと思われますが、一応、ディープラーニングを始める上で必要最小限の話が載っているという感じです。
3章:ニューラルネットワーク(69〜140ページ)
ここからが本番です。
「ゼロから丁寧に説明。」と表紙にある通り、論理和や論理積の話から入り、後に単純パーセプトロンの解説が始まっていきます(ここではNumpyを使って実際に動作を確認)。
ロジスティック回帰(これは2値分類の手法)からTensorFlowを使った実装が始まります。同時にKerasでの実装も見せてくれます。後にこれを発展させた多値分類のためのソフトマックス関数を紹介していきます(ニューラルネットではこちらが主役)。
単に「コードを動かして、はいできました。」ではなく、しっかりとニューラルネットの学習に関して丁寧に解説がなされており、誤差逆伝搬法に関しても理解ができるようになることが期待できます。
この章で分類の評価の仕方などについても触れられています。
4章:ディープニューラルネットワーク(141〜207ページ)
まずお決まりMNISTを通じて、ニューラルネットを学習させてみるところから始まります。その後多層化していく上で問題となる勾配消失問題や過学習の話が丁寧に続きます。
この章で、ディープラーニング特有の「ドロップアウト」や「バッチ正規化」、「RMSpropなどの各最適化手法」について解説が行われます。この章までを学べば基本的なディープラーニングの手法を学べたことになると言っていいでしょう。
学習曲線のプロットの仕方なども紹介されています。
5章:リカレントニューラルネットワーク(209〜249ページ)
時系列データを扱うことができるリカレントニューラルネットワークについて、正弦波の学習を通じて紹介があります。
その後、LSTMについて非常に丁寧な解説が入ります。
本当に丁寧に詳しく、ほとんどのページが解説に費やされています。LSTMは時系列データを扱えるようにニューラルネットを進化させた重要な成果物であるため、しっかり理解しておきたいところです。
6章:リカレントニューラルネットワークの応用(251〜293ページ)
「BiredictionalRNN」
「RNN Encoderf-Decoder」
「Attention」
「Memory Networks」
について、「解説→実装」という順に紹介されていきます。
いずれも時系列データを処理するために考案されてきた代表的な手法たちです。
ディープラーニングを既に少し触ってきた人にとっては、ある意味ここの章が一番の目玉かもしれません。大きく飛躍するチャンスでしょう。
付録(295〜310ページ)
モデルの保存の仕方やTensorBoardの使い方について解説が載っています。
最後に
日本語での文献が少ない中で、パーセプトロンの基本的な話から始まり、リカレントネットワークの応用までここまでまとまりよく書かれているものは他にはありません。
素晴らしいの一言です(正直リカレント系は疎かったから、買ってよかった)。