はじめに
自分が機械学習を本格的に触りはじめたのは、社内の問い合わせログを分類するという小さな案件がきっかけだった。とりあえずネットの記事をつなぎ合わせてscikit-learnのコードを動かし、精度が出たので満足していた。ところが上司から「なぜそのモデルを選んだのか」と聞かれて何も答えられなかった。動かせることと理解していることは別物だと、そこで初めて痛感した。
その反省から、Web記事を追うのを一旦やめて書籍を軸に学び直した。記事は断片的で、前提が省かれていることが多い。手元に体系的な説明があるかどうかで、詰まったときの復帰速度がまるで変わる。
もうひとつ気づいたのは、順番の重要さだ。理論書から入ると数式で心が折れる。逆に実装本だけで進むと、ハイパーパラメータをなんとなく触るだけの作業になる。全体像をつかんで、理論で裏づけを取り、最後に本番運用まで視野を広げる。この流れで積んでいくと、学習コストの割に身につく量が多い。
ここでは自分が実際に通った順番で5冊を並べる。入門から理論、そして運用まで、それぞれ役割が違う本を選んだ。どれも訳書が出ていて日本語で読める点も選定理由のひとつだ。
① Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎 — Andreas C. Müller, Sarah Guido
著者のMüllerはscikit-learnのコア開発者を務めた人物で、Guidoはデータサイエンス分野の技術編集者として長く活動してきた。ライブラリを作っている側が書いた入門書という点がまず強い。
扱う範囲は教師あり学習、教師なし学習、そして特徴量エンジニアリングとモデル評価まで。アルゴリズムごとに短いコードと可視化が並び、パラメータを動かすと決定境界がどう変わるかを目で確認できる構成になっている。
自分が一番助かったのはパイプラインと交差検証の章だ。前処理をテストデータに漏らしてしまう典型的なミスを、コードレベルで説明してくれる。ここを早い段階で押さえておくと、後々の精度評価で嘘をつかずに済む。
数式はほとんど出てこない。そのぶん理論の深さは期待できないので、あくまで地図として使うのが正しい読み方だと思う。
こんな人に: scikit-learnを雰囲気で書いている状態から抜け出したい人
② [第3版]Python機械学習プログラミング 達人データサイエンティストによる理論と実践 — Sebastian Raschka, Vahid Mirjalili
Raschkaは機械学習ライブラリの開発にも関わる研究者で、教育者としての説明のうまさに定評がある。共著のMirjaliliはコンピュータビジョンが専門だ。
①より一段踏み込んで、パーセプトロンやロジスティック回帰をNumPyでスクラッチ実装するところから始まる。勾配降下法の更新式を自分で書くと、ライブラリの引数がどこに効いているのかが腹に落ちる。
後半はアンサンブル学習、次元削減、さらにPyTorchによるニューラルネットワークまで一気に進む。古典的な手法と深層学習の橋渡しを1冊でやってくれるので、学習が途切れない。
分量は多い。通読を狙うとしんどいので、自分は興味のある章だけ拾って実装し、残りは辞書として置いていた。
こんな人に: ライブラリの中身を一度は手で書いておきたい人
③ パターン認識と機械学習 上 — Christopher M. Bishop
BishopはMicrosoft Researchで長く研究を率いてきた研究者だ。本書はいわゆるPRMLで、確率モデルの視点から機械学習を整理した古典として知られる。
上巻は確率分布、線形回帰、線形識別モデル、そしてニューラルネットワークの基礎まで。ベイズ的な扱いが一貫しているので、正則化や事前分布といった概念がばらばらの知識にならない。
自分がこの本を開くのは、たいてい手法の選択に迷ったときだ。なぜこのモデルがこの仮定の下で妥当なのか、その答えが数式で書かれている。説明責任を求められる場面でかなり効く。
難易度は高い。線形代数と確率の基礎を思い出しながら、1日数ページで進めるくらいの覚悟がちょうどいい。
こんな人に: モデル選択の根拠を数式で語れるようになりたい人
④ 深層学習 — Ian Goodfellow, Yoshua Bengio, Aaron Courville
GANの提案者Goodfellowと、チューリング賞を受けたBengioらによる定番書。深層学習の理論的な背景をまとめた文献として、いまも参照され続けている。
構成は基礎数学、深層ネットワークの設計と最適化、そして生成モデルなどの発展的な話題という流れ。正則化や最適化の章は、学習が収束しない原因を切り分けるときの手がかりになる。
自分の使い方は辞書寄りだ。バッチ正規化やドロップアウトがなぜ効くのかを説明したいとき、該当章を読み返す。最新のアーキテクチャは載っていないが、土台となる考え方は変わっていない。
こんな人に: 深層学習の挙動を原理から説明したい人
⑤ 機械学習による実用アプリケーション構築 ―事例を通じて学ぶ、設計から本番稼働までのプロセス — Emmanuel Ameisen
AmeisenはInsight Data Scienceで多数のML案件を指導し、その後Strideで機械学習エンジニアとして働いてきた。現場でモデルを届けてきた人の知見が詰まっている。
本書はモデルの精度競争から離れて、課題設定、データ収集、デバッグ、デプロイ、監視という一連のプロセスを追う。1つの文章編集アプリを題材に、最初の単純なベースラインから改善を重ねていく流れが具体的だ。
刺さったのはモデルのデバッグ手法の章。学習が失敗したときに、データ、特徴量、学習ループのどこを疑うかという順序が整理されている。自分はこれを読んでから、闇雲にハイパーパラメータを触る時間が減った。
こんな人に: 手元のモデルを本番サービスに乗せる段階にいる人
まとめ
| ステップ | 読む本 | 得られるもの |
|---|---|---|
| 全体像 | Pythonではじめる機械学習 | scikit-learnの正しい使い方と評価設計 |
| 実装 | Python機械学習プログラミング | スクラッチ実装と深層学習への接続 |
| 理論 | パターン認識と機械学習 上 | 確率モデルから見た手法の根拠 |
| 深掘り | 深層学習 | 最適化と正則化の原理 |
| 運用 | 機械学習による実用アプリケーション構築 | 本番投入までの設計とデバッグ |
今の課題別に1冊だけ選ぶなら、こうなる。
- とりあえず動かせるが中身が分からない: Pythonではじめる機械学習
- ライブラリ任せから抜けたい: Python機械学習プログラミング
- 手法選択の根拠を聞かれて困った: パターン認識と機械学習 上
- 学習が収束しない原因を掴めない: 深層学習
- モデルがノートブックから出ていかない: 機械学習による実用アプリケーション構築
5冊すべてを一度に買う必要はない。自分が詰まっている工程に対応する1冊から始めて、次の壁に当たったときに隣の本へ進む。このやり方が結局いちばん続いた。