はじめに
数年前、自分は社内の需要予測モデルを担当していた。精度はそれなりに出ていたのに、なぜその数字になるのかを説明できない状態が半年ほど続いた。特徴量を足し、ハイパーパラメータを振り、交差検証のスコアが上がったら採用する。その繰り返しだった。
限界が来たのはレビューの場だ。「この特徴量を落とすとなぜ悪化するのか」と聞かれて、何も答えられなかった。手は動くが中身を知らない。そのことが一発でバレた瞬間だった。
そこから勉強の仕方を変えた。断片的なチュートリアルを追うのをやめて、本を読む時間を週次の作業に組み込んだ。効いたのは順番だった。まず薄い本で用語の地図を作る。次に実装書でコードを書き切る。最後に理論書で裏付けを取る。この三段構えにしてから、モデルの挙動に対して自分の言葉で説明できることが増えた。
今回紹介する4冊は、その順番のまま並べてある。全部を通読する必要はない。今いちばん詰まっている場所に対応する1冊を開けば十分だ。
日本語で読めるものを優先した。英語の名著も1冊入れたが、こちらは通読前提ではなく辞書として使う想定だ。
① 機械学習 100+ページ エッセンス — Andriy Burkov
著者のBurkovは機械学習チームを率いてきた実務家で、研究と現場の両方を見てきた書き手だ。Peter Norvigが推薦文を寄せていることでも知られる。
扱う範囲は広い。教師あり学習と教師なし学習の基本、線形モデルからニューラルネット、評価指標、特徴量エンジニアリング、そしてプロジェクトの進め方まで一通り通る。
薄さの代わりに何を捨てているかが明快だ。導出はほとんど省き、概念と使い所に紙面を割いている。だから数式で止まることが少ない。
自分はこれを辞書というより索引として使っている。新しいタスクに入る前に該当章を10分読んで、検討すべき選択肢を洗い出す。精度指標の整理は特に何度も戻った。
注意点として、圧縮率が高いので本当の入門書には向かない。用語をぼんやり知っている状態で読むといちばん効く。
こんな人に: 断片的な知識を1本の線につなぎ直したい人
② Python機械学習プログラミング [PyTorch&scikit-learn編] — Sebastian Raschka, Yuxi Liu, Vahid Mirjalili
Raschkaは大学で統計と機械学習を教えてきた研究者で、コードで説明する書き方に定評がある。共著の2人も実務寄りの書き手だ。
前半はscikit-learnでの前処理、モデル選択、評価が中心。後半でPyTorchに移り、ニューラルネットの学習ループ、CNN、RNN、Transformer、グラフニューラルネット、強化学習まで進む。
ありがたいのは、PyTorchの学習ループを自分の手で書かせてから高水準APIを見せる構成だ。中で何が起きているかを一度通っておくと、既存コードのデバッグが段違いに速くなる。
自分は転移学習の章を写経して、そのまま画像分類の社内PoCに転用した。データ拡張と学習率の扱いをここで整理できたのが効いた。
ページ数は多い。通読を目標にすると挫折するので、章単位でつまみ食いするのが現実的だ。
こんな人に: scikit-learnは触れるがPyTorchに踏み出せていない人
③ 統計的学習の基礎 —データマイニング・推論・予測— — Trevor Hastie, Robert Tibshirani, Jerome Friedman
スタンフォードの統計学者3人による古典だ。正則化やブースティングの研究をまさに進めてきた当事者が書いている。
線形モデルの正則化、スプライン、カーネル法、決定木、ブースティング、次元削減あたりが主戦場。バイアスとバリアンスの分解を軸に、手法どうしの関係が見える形で並んでいる。
読んで変わったのは、モデル選択の判断だ。過学習を勘で語らなくなった。Lassoが特徴量を落とす理由、勾配ブースティングが強い理由を数式の水準で追えると、チューニングの手数が減る。
数式の密度は高い。自分は最初から読むのをやめて、直面した手法の章だけ拾う運用に切り替えた。それでも十分に元が取れる。
こんな人に: チューニングを博打から抜け出させたい人
④ Machine Learning: A Probabilistic Perspective — Kevin P. Murphy
著者のMurphyはGoogleで研究を続けてきた人物で、確率モデルの視点から機械学習全体を書き切ったことで評価されている。
全編が確率で貫かれている。ベイズ推論、グラフィカルモデル、変分推論、MCMCといった道具が、分類や回帰と同じ地図の上に置かれる。
自分にとっての転機は不確実性の扱いだった。予測確率を信頼度の気分として眺めていたのを、キャリブレーションできる量として扱うようになった。ベイズ的なA/Bテストの設計にも直接つながった。
英語かつ大部なので通読はすすめない。必要な章を引くための本だ。それでも、確率の言葉で議論できるチームになると意思決定の質が変わる。
こんな人に: 予測の不確実性を定量的に語りたい人
まとめ
| ステップ | 読む本 | 得られるもの |
|---|---|---|
| 地図を作る | 機械学習 100+ページ エッセンス | 用語と手法の全体像 |
| 手を動かす | Python機械学習プログラミング PyTorch&scikit-learn編 | 動くコードと実装の型 |
| 裏付けを取る | 統計的学習の基礎 | モデル選択の理屈 |
| 深く潜る | Machine Learning: A Probabilistic Perspective | 確率と不確実性の扱い |
今の課題別に、選ぶのは1冊でいい。
- 知識が断片的で会話についていけない → 100+ページ エッセンス
- PyTorchのコードが読めない、書けない → PyTorch&scikit-learn編
- 精度が上がった理由を説明できない → 統計的学習の基礎
- 予測確率やベイズ的な検証を扱いたい → Murphy
自分の経験では、実装書と理論書を並行させたときに伸び方が変わった。写経で詰まった箇所を理論書で引く。この往復が、いちばん短い遠回りだった。