はじめに
数年前、社内の問い合わせログを分類するタスクを任された。そのときの自分はTF-IDFとロジスティック回帰を組み合わせたモデルを動かし、精度が7割そこそこで止まっていた。特徴量を足しても、ハイパーパラメータをいじっても数字が動かない。しかも、動かない理由を説明できなかった。
原因は単純だった。写経したコードは動くのに、中身を理解していなかった。なぜこの前処理なのか、なぜこの損失関数なのか。聞かれると黙るしかない状態で、チュートリアルを何本消化してもこの穴は埋まらなかった。
穴が埋まりはじめたのは、書籍を通しで読んだときだ。ブログ記事は断片的で、公式ドキュメントはリファレンス寄り。一冊を頭から読むと、序盤で出てきた概念が後半でちゃんと回収される。この積み上がりが効いた。
ここで紹介するのは、機械学習の土台からTransformerの実務適用まで、自分が実際に辿った4冊。全体像をつかむ本、辞書として置いておく本、アーキテクチャを解剖する本、本番に載せる本という並びにしてある。どれも日本語版があるので通読のハードルは低い。
頭から順に読む必要はない。今詰まっている場所に一番近いところから開けばいい。
① PythonとKerasによるディープラーニング — François Chollet
著者はKerasの作者で、長くGoogleでディープラーニングのフレームワーク開発に関わってきた人物。フレームワークを作った側の視点で書かれている点がこの本の性格を決めている。
扱う範囲はテンソルの基本演算、勾配降下法、二値分類と多クラス分類、回帰、過学習への対処、CNN、系列モデル、生成モデルまで。数式は最小限で、代わりに「なぜこの層を積むとこういう表現が学べるのか」という直感の説明に紙面を割いている。
自分に一番効いたのは、ニューラルネットを入力空間の変形として捉える説明だった。層を重ねる行為がデータを分離しやすい形に折り曲げていく作業だとわかると、層数や活性化関数の選択が勘任せから抜け出す。
注意点として、日本語版はKerasのAPIが現行と違う箇所がある。手元でコードを動かすなら最新のTensorFlowに読み替える手間が少し発生する。概念の説明は今でも通用するので、そこは割り切っていい。
こんな人に: ディープラーニングの全体像を、数式に潰されずに最短で掴みたい人。
② scikit-learn、Keras、TensorFlowによる実践機械学習 第3版 — Aurélien Géron
著者は元Googleのエンジニアで、YouTubeの動画分類チームを率いていた経歴を持つ。現場で回した経験が随所に出てくる。
前半はscikit-learnで古典的な機械学習を一通り。データの探索から線形モデル、SVM、決定木、アンサンブル、次元削減、クラスタリングまで進む。後半がKerasとTensorFlowで、CNN、RNN、オートエンコーダ、強化学習、そして大規模な学習とデプロイ。
第3版でTransformerや拡散モデルの章が入り、Kerasの新しいAPIにも対応した。1000ページ超えの分量なので通読はしんどいが、この本の価値は辞書的な使い方にある。実装で詰まったときに該当章だけ開く運用が現実的だ。
自分は交差検証とパイプラインの章を何度も読み返した。評価を雑にやると改善したつもりの変更が全部ノイズになる。この感覚を早めに叩き込んでおくと後が楽になる。
こんな人に: 手元に置く一冊を選ぶなら、まずこれ。古典的手法とディープラーニングを同じ語彙で繋ぎたい人。
③ Transformerによる自然言語処理 — Denis Rothman
著者は自然言語処理システムの開発を長く手がけてきた実務家で、特許を伴うAIシステムの構築経験を持つ。
前半でTransformerアーキテクチャを分解していく。Attentionの計算を行列積のレベルまで降りて追い、multi-head attentionが何を並列化しているのかを示す。位置エンコーディングやレイヤー正規化の役割も、図と数値を出しながら説明される。
その後はスクラッチでのTransformer構築、BERTやRoBERTaのファインチューニング、テキスト生成、要約、質問応答といった下流タスクへの展開。PyTorchとTensorFlowの両方が登場するので、片方しか触っていないと最初は戸惑うかもしれない。
自分がこの本を挟んでよかったと感じたのは、Attentionを「単語間の関連度を重みにして値を混ぜる操作」として腹落ちさせられた点だ。ここが曖昧なままだと、モデルの出力がおかしいときに打つ手が思いつかない。
読み方には前提がある。コードを動かしながら進める本なので、眺めるだけだと得るものが少ない。環境を作ってから開くべき一冊。
こんな人に: Attentionの内側を自分の言葉で説明できるようになりたい人。
④ 機械学習エンジニアのためのTransformers — Lewis Tunstall, Leandro von Werra, Thomas Wolf
著者3人はいずれもHugging Faceのメンバーで、Wolfは共同創業者。ライブラリを作っている当事者が書いた解説書という位置づけになる。
Transformers、Datasets、Tokenizersを軸に、テキスト分類、固有表現抽出、質問応答、要約、テキスト生成をタスク単位で進めていく。各章が独立したプロジェクトになっているので、業務で必要なタスクから拾い読みしやすい。
実務で刺さるのは後半だ。ラベルが少ない状況でどう戦うか、知識蒸留や量子化、ONNXへの変換で推論をどこまで速くできるか。精度だけを追う本ではなく、レイテンシとコストの話が同じ重さで扱われている。
自分は蒸留の章を読んで、社内サービスの推論時間を大きく削れた。モデルを小さくする判断は精度とのトレードオフになるが、どこを測ってどう決めるかの手順が書かれているので迷いが減る。
出版から時間が経ち、最新の大規模言語モデルの話題は載っていない。ただ、Hugging Faceのエコシステムを使った開発フローの骨格は今も変わっていないので、土台として読む価値は落ちていない。
こんな人に: プロトタイプを本番サービスに載せる段階で、速度と運用コストに向き合っている人。
まとめ
| ステップ | 読む本 | 得られるもの |
|---|---|---|
| 全体像をつかむ | PythonとKerasによるディープラーニング | ネットワーク設計の直感 |
| 土台を固める | scikit-learn、Keras、TensorFlowによる実践機械学習 第3版 | 古典的手法から実装までの共通言語 |
| 構造を解剖する | Transformerによる自然言語処理 | Attentionとアーキテクチャの理解 |
| 現場に載せる | 機械学習エンジニアのためのTransformers | タスク実装と推論の高速化 |
今の課題に合わせて1冊選ぶなら、こう考えるといい。
- コードは動くが中身を説明できない: PythonとKerasによるディープラーニング
- 手法の選び方と評価設計で迷っている: scikit-learn、Keras、TensorFlowによる実践機械学習 第3版
- Transformerをブラックボックスのまま使っている: Transformerによる自然言語処理
- 精度は出たが推論が遅い、コストが重い: 機械学習エンジニアのためのTransformers
4冊を並べて振り返ると、効いたのは順番よりも手を動かした量だった。写経で終わらせず、自分のデータに差し替えて壊してみる。そこで初めて本に書いてある一文の意味がわかる。