はじめに
数年前、画像分類の社内PoCを任されたとき、自分は転移学習のサンプルコードをほぼそのまま持ってきて動かした。学習は回る。精度は7割で止まる。そこから先、何を触ればいいのか見当がつかなかった。
やったことは、学習率を半分にする、エポックを増やす、Dropoutを足す。どれも効いた理由を説明できない。レビューで「なぜその値にしたのか」と聞かれて黙り込んだのを今でも覚えている。断片的な記事とチュートリアルで得た知識は、動かすところまでしか自分を連れて行ってくれなかった。
そのあと腹を決めて書籍を3冊通した。変わったのは精度ではなく、問題の切り分け方だった。損失が下がらないのは最適化の話、訓練損失だけ下がるのは汎化の話。この区別がつくだけで、試す手順に順番がつく。闇のチューニングが仮説検証に変わった。
今回紹介するのは、その3冊を「実装で手を動かす→理論で裏を取る→応用アーキテクチャに広げる」の順に並べ直したものだ。フレームワークはKeras中心だが、考え方はPyTorchでもそのまま使える。1冊目だけでも現場の見通しはかなり良くなる。
① PythonとKerasによるディープラーニング — François Chollet
著者のFrançois CholletはKerasの作者で、TensorFlowのコントリビューターでもある。コンピュータビジョンと形式推論への機械学習の応用を研究テーマにしてきた人物だ。
内容はテンソルと勾配ベースの最適化という土台から始まる。そこから映画レビューの二値分類、ニュース記事の多クラス分類、住宅価格の回帰と、性質の違う3つのタスクを続けて実装する。この3本立てが効く。出力層と損失関数の選び方が、頭ではなく手に入る。
後半はCNN、テキストと系列データ、Functional APIやコールバックといった実務寄りの話題へ進む。小さなデータセットでスクラッチ学習する章と、学習済みモデルを使う章が並んでいるので、現場でよくある「データが足りない」状況にそのまま当てはめられる。最後はLSTMによる文章生成、スタイル変換、VAE、GANの入口まで届く。
自分に一番刺さったのは、機械学習の汎用ワークフローを扱った章だ。評価指標を決め、検証方法を選び、ベースラインを超えるモデルを作り、そのあとで過学習させてから正則化する。この順番を知っていれば、冒頭のPoCで迷走せずに済んだと思う。
注意点として、コードはKeras前提だ。PyTorch主体のチームなら、APIは読み替える前提で読むといい。概念の説明部分はフレームワークに依存していないので、損にはならない。
こんな人に: チュートリアルは動かせるが、設計の判断理由を自分の言葉で説明できない人
② 深層学習 — Ian Goodfellow, Yoshua Bengio, Aaron Courville
GANの発明者であるIan Goodfellow、モントリオール大学のYoshua BengioとAaron Courvilleによる、この分野の標準的な教科書である。
構成は3部。第1部が線形代数、確率と情報理論、数値計算、機械学習の基礎。第2部が順伝播型ネットワーク、正則化、最適化、畳み込み、系列モデリング、そして実践的方法論。第3部は線形因子モデル、表現学習、構造化確率モデル、モンテカルロ法、近似推論、深層生成モデルと、研究寄りの話題が並ぶ。
1冊目で手を動かしたあとに読むと、効果が段違いになる。Dropoutがなぜ効くのか、バッチ正規化が何を安定させているのか、勾配が消えるとは数式上どういう状態なのか。実装で触った部品に、ひとつずつ裏付けが入っていく感覚がある。
通読はおすすめしない。自分は正則化と最適化の章だけ先に読み、残りは必要になったときに引く辞書として使っている。実践的方法論の章は短いのに密度が高いので、ここだけ先に目を通すのも手だ。
数式はそれなりに出てくる。線形代数と確率の第1部を飛ばさないのが結局の近道だった。
こんな人に: ハイパーパラメータの選択に理論的な根拠を持たせたい人
③ Advanced Deep Learning with Keras — Rowel Atienza
著者のRowel Atienzaはフィリピン大学電気電子工学研究所の准教授。四脚ロボットの歩行制御アルゴリズムや、人とロボットの対話に向けた視線追跡システムを手がけてきた研究者で、コンピュータビジョンと深層学習を教えている。
MLP、CNN、RNNのおさらいから入り、ResNetやDenseNetといった深いアーキテクチャ、オートエンコーダへと進む。そのあとが本題で、GANの章が5つ続く。素のGAN、改良版、disentangled representation、クロスドメイン。さらにVAE、最後にDQNと方針勾配法による深層強化学習まで扱う。
価値はこの構成そのものにある。GANの発展を論文で追うと、どの改良がどの問題を解いたのか見失いやすい。学習が不安定、モードが崩壊する、属性を制御できない。各章がその課題に対応していて、実装付きで一本道に並んでいる。
洋書なので英語で読む必要がある。コードもTensorFlow 1.x世代で、そのまま動かすには手当てがいる。それでもアーキテクチャの設計意図を追う読み方なら、今でも十分に使える。生成モデルを触る前に目を通しておくと、論文の読み速度が変わる。
こんな人に: 生成モデルや強化学習に踏み込みたい、基礎は一通り終えた人
まとめ
| ステップ | 読む本 | 得られるもの |
|---|---|---|
| 実装 | PythonとKerasによるディープラーニング | タスクに応じたモデル設計と評価の型 |
| 理論 | 深層学習 | 正則化・最適化の数学的な裏付け |
| 応用 | Advanced Deep Learning with Keras | GANやDRLのアーキテクチャ設計力 |
今の課題別に1冊だけ選ぶなら、こう考えるといい。
- サンプルを改造できずに手が止まる → PythonとKerasによるディープラーニング
- 精度が伸びない原因を切り分けられない → 深層学習の正則化と最適化の章
- 論文実装を読んでも構造の意図がつかめない → Advanced Deep Learning with Keras
- チームにレビューで理由を説明したい → 1冊目を通して2冊目を辞書に置く
3冊を順番に積むのが理想だが、全部そろえる必要はない。自分が止まっている場所に対応する1冊から始めるほうが、積み上がりは早い。