1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【書評】 Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 3rd Edition

1
Posted at

はじめに

生成AIの登場以降、「モデルを学習させる」機会よりも「モデルを評価して次の一手を決める」機会のほうが圧倒的に増えました。プロンプトを書けば動くものができてしまう分、うまく動かなかったときに何を疑えばよいのかが分からない、という場面に心当たりのある方も多いのではないでしょうか。

本記事は、Aurélien Géron 著『Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 3rd Edition』(邦題『scikit-learn、Keras、TensorFlowによる実践機械学習 第3版』/オライリー・ジャパン、2024年)を通読したうえでの書評・総まとめです。

対象読者は、設計やアーキテクチャに関心のあるエンジニアを想定しています。「機械学習アルゴリズムのカタログ」としてではなく、機械学習を含むシステムをどう設計し、どう運用に載せるかという観点から本書を整理します。

本記事は書籍全体を1本にまとめた総まとめです。個々のアルゴリズムの数式導出には踏み込まず、構成・思想・実務での使いどころを中心に扱います。


書籍の基本情報

項目 内容
原題 Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 3rd Edition
邦題 scikit-learn、Keras、TensorFlowによる実践機械学習 第3版
著者 Aurélien Géron
監訳 下田 倫大、牧 允皓
長尾 高弘
原書 2023年
邦訳 2024年
構成 第I部(1〜9章)+第II部(10〜19章)+付録A〜D

前提知識としては、Python のプログラミング経験と、NumPy / pandas / Matplotlib といった科学計算ライブラリの基礎が想定されています。アルゴリズムの内部まで理解したい場合は線形代数の基礎(ベクトル・行列とその演算)があると読みやすくなりますが、微積分は「あると理解が深まる」程度の位置づけです。


全体構成マップ

まず地図を持っておくと、どこを重点的に読むべきかの判断がしやすくなります。

第I部 機械学習の基礎(scikit-learn)

テーマ 中心的な問い
1章 機械学習の現状 そもそも機械学習とは何か、どこで破綻するか
2章 機械学習プロジェクトの全体像 プロジェクトを端から端まで通すとどうなるか
3章 分類 精度以外に何を測るべきか
4章 モデルの学習 学習とは何を最適化しているのか
5章 サポートベクターマシン(SVM) マージン最大化とカーネル
6章 決定木 解釈しやすいモデルの利点と弱点
7章 アンサンブル学習とランダムフォレスト 弱い学習器をどう束ねるか
8章 次元削減 次元の呪いへの対処
9章 教師なし学習のテクニック ラベルがないデータをどう扱うか

第II部 ニューラルネットと深層学習(Keras / TensorFlow)

テーマ 中心的な問い
10章 Kerasによる人工ニューラルネットワーク入門 MLPの構築とハイパーパラメータ調整
11章 深層ニューラルネットワークの学習 深くしたときに何が壊れるか
12章 カスタムモデルとその学習 低水準APIでどこまで制御できるか
13章 データのロードと前処理 データパイプラインをどう組むか
14章 畳み込みNNによる深層コンピュータビジョン 画像タスクの標準構成
15章 RNNとCNNによるシーケンス処理 時系列をどう扱うか
16章 RNNとアテンションによる自然言語処理 Transformerに至る道筋
17章 オートエンコーダ、GAN、拡散モデル 生成モデルの系譜
18章 強化学習 報酬から方策を学ぶ
19章 大規模モデルの学習とデプロイ 本番稼働・分散学習・エッジ配備

付録

付録 内容
A 機械学習プロジェクトチェックリスト
B 自動微分
C 特殊なデータ型
D TensorFlowグラフ

第I部の要点

1章 機械学習の現状

機械学習の定義、教師あり/教師なし/強化学習といった分類、バッチ学習とオンライン学習、事例ベース学習とモデルベース学習といった軸が整理されます。

設計者として重要なのは後半の「機械学習が抱える難問」です。学習データが少なすぎる、代表性がない、品質が低い、特徴量が無関係である──こうしたデータ側の失敗モードが、アルゴリズム選定より先に効いてくることが繰り返し強調されます。加えて過少適合と過学習、そしてテストと検証(ホールドアウト、交差検証)の作法が示されます。

2章 機械学習プロジェクトの全体像

本書の背骨と言ってよい章です。住宅価格のデータセットを題材に、次の流れを一気通貫で体験します。

  1. 全体像をつかむ(問題のフレーミング、性能指標の選定)
  2. データを手に入れる
  3. データを探索・可視化して理解を深める
  4. アルゴリズムのためにデータを準備する
  5. モデルを選択して学習する
  6. モデルをファインチューニングする
  7. システムを本番稼働・モニタリング・メンテナンスする

特筆すべきは、前処理を関数の寄せ集めではなくパイプラインとして組み立てるという設計方針が最初から徹底されている点です。数値列とカテゴリ列で別々の変換を行い、それらを合成して1つの変換器として扱う。この構造を最初に叩き込まれるおかげで、以降の章で扱うモデルが「パイプラインの末端に差し替え可能な部品」として見えてきます。

また、最後の「本番稼働・モニタリング・メンテナンス」がプロジェクトの一工程として明示されていることも重要です。学習して終わりではなく、データが古びればモデルも劣化するという前提が最初に共有されます。

3章 分類

MNIST を題材に、二値分類器の学習から始まります。この章の価値は、正解率という指標がいかに簡単に嘘をつくかを体感させるところにあります。

  • 混同行列
  • 適合率(precision)と再現率(recall)
  • 適合率/再現率のトレードオフ
  • ROC曲線とAUC

さらに多クラス分類、誤分類の分析、多ラベル分類、多出力分類へと広がります。「精度99%」という報告を受け取ったときに何を追加で聞くべきかが分かるようになります。

4章 モデルの学習

線形回帰の正規方程式による解法から始まり、勾配降下法(バッチ/確率的/ミニバッチ)、多項式回帰、学習曲線、正則化(リッジ、ラッソ、エラスティックネット、早期打ち切り)、ロジスティック回帰・ソフトマックス回帰へと進みます。

ここまで来ると、後半の深層学習で登場する最適化手法が「勾配降下法の改良版」として素直に理解できるようになります。この章を飛ばすと11章が呪文になります。

5章 サポートベクターマシン(SVM)

線形SVM分類器、ソフトマージン、カーネルトリックによる非線形分類、SVM回帰、そして双対問題までを扱います。特徴量数に対してサンプル数が中規模のときの選択肢として、いまも有効です。

6章 決定木

学習と可視化、予測の仕組み、クラス確率の推定、計算量、ジニ不純度とエントロピーの比較、正則化ハイパーパラメータ、回帰への適用が扱われます。

終盤の「軸の向きへの過敏さ」「決定木はばらつきが大きい」という2節が、そのまま次章のアンサンブル学習への動機づけになっています。弱点を明示してから解決策を出すという構成の妙が効いている箇所です。

7章 アンサンブル学習とランダムフォレスト

投票分類器、バギングとペースティング、ランダムフォレスト、ブースティング(AdaBoost、勾配ブースティング、ヒストグラムベースの勾配ブースティング)、スタッキング。

実務で表形式データを扱う場合、ここが最も費用対効果の高い章です。深層学習に手を出す前に、まずこの章の手法を一通り試すべきだという著者の姿勢は明確です。

8章 次元削減

次元の呪い、射影と多様体学習という2つのアプローチ、PCA(およびランダム化PCA、増分PCA)、ランダム射影、LLE、その他の手法。可視化のためだけでなく、前処理・圧縮としての次元削減が扱われます。

9章 教師なし学習のテクニック

k平均法とDBSCAN によるクラスタリング、そして混合ガウスモデル。クラスタリングを画像セグメンテーションや半教師あり学習の前処理として使う例、混合ガウスモデルを異常検知に使う例が示され、ラベルがない状況でも打てる手があることが具体的に分かります。


第II部の要点

10章 Kerasによる人工ニューラルネットワーク入門

生物学的ニューロンからパーセプトロン、多層パーセプトロン(MLP)へという歴史の整理から始まり、Keras の Sequential API、Functional API、Subclassing API による実装へ進みます。最後にハイパーパラメータのファインチューニング(Keras Tuner)が扱われます。

3種類のAPIが「単純さと柔軟性のトレードオフ」として並べられる構成は、フレームワーク設計の教材としても読めます。

11章 深層ニューラルネットワークの学習

ネットワークを深くしたときに何が起きるかを、問題ごとに潰していく章です。

  • 勾配消失/爆発問題(Glorot初期化、He初期化、活性化関数の選択、バッチ正規化、勾配クリッピング)
  • 事前学習済みの層の再利用(転移学習、教師なし事前学習)
  • オプティマイザの高速化(モメンタム、NAG、AdaGrad、RMSProp、Adam系)
  • 学習率スケジューリング
  • 正則化(ℓ1/ℓ2、ドロップアウト、MCドロップアウト、Max-Normなど)

そして「まとめと実践的なガイドライン」で、デフォルト構成の表が提示されます。初期値、活性化関数、正規化、正則化、オプティマイザ、学習率スケジューリングについて、まず何を選べばよいかが一覧化されており、ここだけでも手元に置く価値があります。さらに、疎なモデルが欲しい場合、低レイテンシが必要な場合、不確実性の推定が必要な場合といった要件別の逸脱ルールまで示されます。

要件から構成を導く、という設計的な思考がそのまま表になっている章です。

12章 TensorFlowで作るカスタムモデルとその学習

TensorFlow の全体像、NumPy ライクなテンソル操作、そしてカスタム損失関数・カスタム層・カスタム訓練ループの書き方。最後に tf.function とグラフモードが扱われます。

Keras の高水準APIで足りなくなったときに、どこまで降りていけるかを示す章です。抽象化のレイヤ構造がはっきり見えます。

13章 TensorFlowによるデータのロードと前処理

tf.data API、TFRecord 形式、Keras の前処理層、TFDS。

シャッフル・バッチ・プリフェッチといった操作をパイプラインとして宣言的に記述する設計は、モデル本体より先に律速になりがちなI/Oをどう扱うかという実務的な問題への回答になっています。前処理をモデルの外に置くかモデルの中に置くかという設計判断も、Keras前処理層の文脈で整理されます。

14章 畳み込みニューラルネットワークを使った深層コンピュータビジョン

視覚野のアーキテクチャから畳み込み層・プーリング層の原理、LeNet-5 から AlexNet、GoogLeNet、VGGNet、ResNet、Xception、SENet、さらに新しいアーキテクチャまでの系譜、Keras での ResNet-34 実装、事前学習済みモデルの利用と転移学習。

後半では分類と位置特定、物体検知(YOLO系)、物体追跡、セマンティックセグメンテーションと、応用タスクへ広がります。

15章 RNNとCNNを使ったシーケンスの処理

再帰ニューロンとその層、BPTTによる学習、時系列予測(ベースラインの立て方を含む)、長いシーケンスの処理(LSTM、GRU、1D畳み込み、WaveNet)。

「まず単純なベースラインを作り、それを上回るかで判断する」という姿勢が徹底されており、深層モデルを使う理由を毎回問い直させられます。

16章 RNNとアテンションメカニズムによる自然言語処理

文字RNNによるテキスト生成、感情分析、エンコーダ-デコーダによる機械翻訳、アテンションメカニズム、そして Transformer。さらに Vision Transformer(ViT)と Hugging Face Transformers ライブラリまで扱われます。

生成AIの土台を理解したい場合の中心章です。RNN の限界 → アテンションによる補強 → 自己アテンションのみの構成へ、という発展の順序で説明されるため、Transformer が「なぜその形になったのか」が腑に落ちます。

17章 オートエンコーダ、GAN、拡散モデル

効率のよい表現の学習という観点から、不完備線形オートエンコーダ、スタック/畳み込み/ノイズ除去/スパースの各オートエンコーダ、変分オートエンコーダ、GAN(DCGAN、ProGAN、StyleGANなど)、そして拡散モデル(DDPM)。

生成モデルの系譜が1章にまとまっており、現在の画像生成技術の位置づけを把握できます。

18章 強化学習

報酬の最大化、方策探索、Gym環境、ニューラルネットワークによる方策、信用割当問題、方策勾配法、マルコフ決定過程、TD学習、Q学習、深層Q学習(DQN)とそのバリアント、主要なRLアルゴリズムの概観。

第I部・第II部の他章とは学習の枠組み自体が異なるため、必要になったときに独立して読める章です。

19章 大規模なTensorFlowモデルの学習とデプロイ

  • TensorFlow Serving によるモデルのサービング、クラウドへの配備
  • モバイル/組み込みデバイスへのデプロイ(TFLite、量子化)
  • ウェブページでの実行(TensorFlow.js)
  • GPUによる高速化とデバイス管理
  • 複数デバイスでの学習(データ並列、モデル並列、分散戦略)

この章があることが本書を「実践」たらしめています。 バージョニングされたモデルをどう提供するか、レイテンシと精度をどうトレードオフするか、学習をどうスケールさせるか──いずれもアーキテクチャ設計の問題であり、ノートブックの中では出会えない論点です。


付録の使いどころ

付録Aの「機械学習プロジェクトチェックリスト」は、2章の内容を実務用のチェックリストに落とし込んだものです。問題のフレーミング、データ取得、探索、準備、モデル選定、ファインチューニング、成果の提示、本番稼働という8ステップで構成されており、プロジェクト開始時のテンプレートとしてそのまま使えます。

付録Bの自動微分は、勾配計算が「どうやって」行われているかを知りたくなったときの補助線になります。


設計・アーキテクチャの視点から見た読みどころ

1. モデルではなくパイプラインを設計させる

本書は最初から一貫して、前処理・学習・評価を合成可能な部品として扱います。scikit-learn の変換器とパイプライン、tf.data のデータパイプライン、Keras の前処理層。いずれも「変換の連鎖を宣言的に組み立て、学習時と推論時で同じ経路を通す」という同じ思想の表れです。

学習時と推論時で前処理がずれるという事故は現場で頻発しますが、それを構造で防ぐ設計が最初から示されています。

2. 単純な手法から始めることを繰り返し要求する

「深層学習に飛びつくな、まず基礎を固めろ」というメッセージが随所に置かれています。表形式データならランダムフォレストや勾配ブースティングで十分に解けることが多く、深層学習が本領を発揮するのは画像・音声・自然言語のような複雑な問題である、という線引きは明確です。

これは技術選定のガイドラインそのもので、YAGNI に近い規律だと言えます。

3. 要件から構成を導く

11章のガイドライン表が象徴的ですが、本書は「非機能要件がモデル構成を決める」という考え方を繰り返し示します。低レイテンシが必要なら層を減らし高速な活性化関数を使い量子化を検討する。不確実性の推定が必要なら別の手法を採る。要件 → 構成という導出の型が身につきます。

4. 抽象化のレイヤを行き来させる

Keras の3種のAPI、Keras と TensorFlow 低水準APIの関係、tf.function とグラフモード。本書は常に「まず高水準で書き、必要になったら降りる」という順序で説明します。フレームワークの抽象化設計を読む練習としても優れています。


生成AI時代における本書の位置づけ

監訳者まえがきでは、生成AIの普及によって「モデルを学習させる必要性」は減った一方、「モデルが期待通りに動いているかを評価し、結果を読み解いて次の一手を決める必要性」が急増したことが指摘されています。そして、この評価と改善のプロセスにこそ機械学習の難しさと面白さがあり、普遍的な正解は存在しない、と述べられています。

この指摘は実感に合います。プロンプトを書けば動くところまでは誰でも到達できますが、その先で行き詰まるのは、評価指標の設計、データの偏りの検出、過学習と汎化の判断といった古典的な機械学習の素養が抜けているからです。

本書は生成AIの解説書ではありません。しかし、生成AIを含む機械学習システムを評価し、改善し、運用に載せるための土台を提供します。第3版では Hugging Face Transformers や Vision Transformer、拡散モデルといった比較的新しいトピックもカバーされており、現在の技術との接続も確保されています。


読み方の提案

分量が多い本なので、目的別に道筋を示します。

表形式データの実務を回したい

1章 → 2章 → 3章 → 4章 → 7章 → 8章 → 付録A

まず2章でプロジェクト全体を通し、3章で評価指標の感覚を掴み、7章のアンサンブル手法まで到達すれば、多くの業務課題には対応できます。

生成AIの土台を理解したい

4章 → 10章 → 11章 → 15章 → 16章 → 17章

最適化の基礎(4章)を押さえたうえで、RNN からアテンション、Transformer へと進む16章が中心になります。

本番運用・MLOps の観点から読みたい

2章 → 13章 → 19章 → 付録A

データパイプラインとデプロイに絞れば比較的短時間で読めます。

全体を通読したい

第I部を順に読み、第II部は10章・11章を丁寧に読んだうえで、必要な応用章(14〜19章)へ進む形が現実的です。18章の強化学習は後回しでも問題ありません。

コード例はすべて公開されており、Google Colab 上で実行できます。読むだけでは身につかない構成になっているので、少なくとも2章と11章は手を動かすことを強くおすすめします。


まとめ

  • 本書は機械学習アルゴリズムのカタログではなく、機械学習を含むシステムの設計・運用の教科書です
  • 2章の「プロジェクトの全体像」と19章の「学習とデプロイ」が、本書を実務書たらしめています
  • 前処理をパイプラインとして組む設計思想が最初から最後まで一貫しており、設計に関心のあるエンジニアほど得るものが大きい構成です
  • 11章のデフォルト構成ガイドラインと付録Aのチェックリストは、読了後も参照し続ける資産になります
  • 生成AIが主流になった現在でも、評価と改善のプロセスを担う土台としての価値は変わっていません

分量は決して軽くありませんが、腰を据えて取り組む価値のある一冊でした。「なんとなく動いた」から「なぜ動いたか説明できる」へ移行したい方に、強くおすすめします。


参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?