はじめに
自分が初めて機械学習のモデルを本番に出したとき、ノートブック上の精度は十分だったのに、リリース後1週間で推論結果が明らかにおかしくなった。原因は学習時と推論時で特徴量の作り方がずれていたことだった。モデルの話ではなく、完全にエンジニアリングの話だ。
その頃の自分はKaggleのカーネルとチュートリアル記事で学習を進めていて、アルゴリズムの選び方やハイパーパラメータの勘所はそれなりに掴んでいた。足りなかったのは、学習から配信までを一本の仕組みとして設計する視点。この穴はネット記事の断片では埋まらず、結局は体系立てた本を読むしかなかった。
とはいえ、この領域の定番書はどれも分厚い。600ページ級の本を買っては積む、を何度か繰り返した。そこで方針を変えて、300ページ前後で読み切れる洋書だけを選び、短期間で順番に通した。これが想像以上に効いた。薄い本は全体の地図を先に見せてくれるので、あとから分厚い本に戻ったときの理解速度が変わる。
ここで紹介するのは、そのとき実際に役に立った3冊だ。並べ方は「仕事の流れを掴む」「設計の土台を固める」「手元で引く」の順にしてある。日本語訳が出ていないものも含まれるが、どれも英語は平易で、コードが多いぶん読み進めやすい。
① Machine Learning Engineering with Python: Manage the production life cycle of machine learning models using MLOps with practical examples — Andrew P. McMahon
著者のAndrew P. McMahonは英国で機械学習エンジニアとして現場を率いてきた人物で、MLOpsの実務経験をそのまま書き起こしたような内容になっている。
この本の中心はモデルそのものではなく、モデルを取り囲む仕組みだ。要件の切り出しから、学習パイプラインの構成、パッケージング、デプロイ、監視まで、Pythonのコードを追いながら一周できる。pytest、MLflow、Airflow、コンテナといった現場で当たり前に出てくる道具が、どの工程で何のために入るのかという文脈つきで登場する。
個人的に価値が高いと感じたのは、チーム体制とプロジェクトの進め方に触れている章だ。ML案件がなぜ技術的に正しくても止まるのか、誰がどこを持つのかという話は、技術書で読める機会が少ない。
最初に読む1冊としてはこれが一番効率がいい。全体の地図が手に入るので、自分の弱点がどこにあるか判断できるようになる。
こんな人に: ノートブックから先へ進めず、本番運用の全体像を一度まとめて掴みたい人。
② Machine Learning in Production: Developing and Optimizing Data Science Workflows and Applications — Andrew Kelleher, Adam Kelleher
著者のKelleher兄弟はデータ基盤とデータサイエンスの両方を実務で担ってきた経歴を持つ。片方がエンジニアリング寄り、もう片方が統計・因果推論寄りという組み合わせが、本の構成にもそのまま出ている。
扱う範囲は広い。バージョン管理やテスト、アルゴリズムの計算量といったソフトウェアエンジニアリングの基礎から始まり、確率と統計、回帰、次元削減、そしてデータ製品としての設計へと進む。情報科学の正規の訓練を受けていない人が独学で穴を埋めるのに向いた並びだ。
数式も出てくるが、説明は丁寧で、読み飛ばしても筋が追えるように書かれている。計算量の話とモデルの話が同じ本に並んでいるのが特徴で、「この前処理はデータ量が10倍になったとき何が起きるか」という感覚が身につく。
3冊のなかでは理論寄りだが、抽象論で終わらない。自分は①で全体像を掴んだあとに読み、設計上の判断に理由をつけられるようになった。
こんな人に: 独学で機械学習に入り、計算機科学やソフトウェア設計の土台に不安がある人。
③ Machine Learning Pocket Reference: Working with Structured Data in Python — Matt Harrison
Matt Harrisonは長年Pythonの研修とコンサルティングを手がけてきた著者で、実務者が欲しがる情報の粒度をよく分かっている。
テーマは構造化データの扱いに絞られている。欠損値の処理、特徴量の作り方、不均衡データへの対処、モデルの選択、評価指標、そして特徴量の重要度や解釈まで、一連の作業が短いコード片とともに並ぶ。
自分が一番使ったのは各モデルのハイパーパラメータの解説だ。パラメータの意味と、動かしたときに何が変わるのかが簡潔にまとまっている。公式ドキュメントを行き来して迷う時間がかなり減った。
通読する本というより、作業中に開く本だと思っている。pocket referenceという名前のとおり、机の上に置いて必要なページだけ引く使い方が合う。表形式データの案件が多い日本の現場との相性もいい。
こんな人に: テーブルデータの前処理とモデル選定を、手を止めずに進めたい人。
まとめ
| ステップ | 読む本 | 得られるもの |
|---|---|---|
| 全体像を掴む | Machine Learning Engineering with Python | 要件定義からデプロイ、監視までの流れとツール選定の勘所 |
| 土台を固める | Machine Learning in Production | 統計とソフトウェア設計の基礎、計算量を意識した判断 |
| 手元で引く | Machine Learning Pocket Reference | 前処理と評価、ハイパーパラメータの即答力 |
今の課題別に1冊だけ選ぶなら、こう考えるといい。
- モデルは作れるのに本番に出せない。まず Machine Learning Engineering with Python。
- コードレビューで設計や計算量を指摘されて言葉に詰まる。Machine Learning in Production。
- 日々の前処理やモデル選定で手が止まる。Machine Learning Pocket Reference。
- どれにも心当たりがある。①→②→③の順に読むと、重複が少なく進められる。
3冊合わせて800ページ少しで、分厚い定番書1冊とほぼ同じ分量だ。読み切れる単位に分かれているだけで、途中で止まる確率はかなり下がる。積読を増やしてきた自分には、この選び方が一番続いた。