Pythonを代表する機械学習ライブラリ、scikit-learn、Keras、TensorFlowを利用し、幅広い分野の機械学習に対応する方法を網羅的に解説した、機械学習エンジニアの必読のベストセラーの改訂版です。この改訂版では、大規模言語モデルや拡散モデルなどの生成AIの基本となるトピックもカバーしています。また、より大規模なデータを使用し、より現実的実践的な問題解決ができるように配慮されています。サンプルコードはノートブック形式で提供されており、実際に手を動かしながら、さまざまな機械学習のニーズに応えられる幅広い知識とスキルを得ることができます。
scikit-learn、Keras、TensorFlowによる実践機械学習 第3版
Aurélien Géron 著、下田 倫大、牧 允皓 監訳、長尾 高弘 訳
- TOPICS
- 発行年月日
- 2024年11月
- PRINT LENGTH
- 796
- ISBN
- 978-4-8144-0093-5
- 原書
- Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 3rd Edition
- FORMAT
- Print PDF
目次
監訳者まえがき はじめに 第Ⅰ部 機械学習の基礎 1章 機械学習の現状 1.1 機械学習とは何か 1.2 なぜ機械学習を使うのか 1.3 応用の例 1.4 機械学習システムのタイプ 1.4.1 教師あり/教師なし学習 1.4.2 バッチ学習とオンライン学習 1.4.3 インスタンスベース学習とモデルベース学習 1.5 機械学習が抱える難問 1.5.1 学習データの量の少なさ 1.5.2 現実を代表しているとは言えない学習データ 1.5.3 品質の低いデータ 1.5.4 無関係な特徴量 1.5.5 学習データへの過学習 1.5.6 学習データへの過少適合 1.5.7 復習 1.6 テストと検証 1.6.1 ハイパーパラメータの調整とモデルの選択 1.6.2 データのミスマッチ 1.7 演習問題 2章 機械学習プロジェクトの全体像 2.1 実際のデータの操作 2.2 全体像をつかむ 2.2.1 問題の枠組みを明らかにする 2.2.2 性能指標を選択する 2.2.3 前提条件をチェックする 2.3 データを手に入れる 2.3.1 Google Colabを使ったコード例の実行方法 2.3.2 書き換えたコードや独自データの保存方法 2.3.3 対話的操作の威力と落とし穴 2.3.4 本のコードとノートブックのコード 2.3.5 データをダウンロードする 2.3.6 データの構造をざっと見てみる 2.3.7 テストセットを作る 2.4 データを探索、可視化して理解を深める 2.4.1 地理データを可視化する 2.4.2 相関を探す 2.4.3 属性の組み合わせを試してみる 2.5 機械学習アルゴリズムのためにデータを準備する 2.5.1 データをクリーニングする 2.5.2 テキスト/カテゴリ属性の処理 2.5.3 特徴量のスケーリングと変換 2.5.4 カスタム変換器 2.5.5 変換パイプライン 2.6 モデルを選択して学習する 2.6.1 学習セットを学習、評価する 2.6.2 交差検証を使ったよりよい評価 2.7 モデルをファインチューニングする 2.7.1 グリッドサーチ 2.7.2 ランダムサーチ 2.7.3 アンサンブルメソッド 2.7.4 最良のモデルとその誤差の分析 2.7.5 テストセットでシステムを評価する 2.8 システムを本番稼働、モニタリング、メンテナンスする 2.9 やってみよう 2.10 演習問題 3章 分類 3.1 MNIST 3.2 二値分類器の学習 3.3 性能指標 3.3.1 交差検証を使った精度の測定 3.3.2 混同行列 3.3.3 適合率と再現率 3.3.4 適合率と再現率のトレードオフ 3.3.5 ROC曲線 3.4 多クラス分類 3.5 誤分類の分析 3.6 多ラベル分類 3.7 多出力分類 3.8 演習問題 4章 モデルの学習 4.1 線形回帰 4.1.1 正規方程式 4.1.2 計算量 4.2 勾配降下法 4.2.1 バッチ勾配降下法 4.2.2 確率的勾配降下法 4.2.3 ミニバッチ勾配降下法 4.3 多項式回帰 4.4 学習曲線 4.5 線形モデルの正則化 4.5.1 リッジ回帰 4.5.2 ラッソ回帰 4.5.3 エラスティックネット回帰 4.5.4 早期打ち切り 4.6 ロジスティック回帰 4.6.1 確率の推定 4.6.2 学習と損失関数 4.6.3 決定境界 4.6.4 ソフトマックス回帰 4.7 演習問題 5章 サポートベクターマシン(SVM) 5.1 線形SVM分類器 5.1.1 ソフトマージン分類 5.2 非線形SVM分類器 5.2.1 多項式カーネル 5.2.2 類似性特徴量の追加 5.2.3 ガウスRBFカーネル 5.2.4 SVMクラスと計算量 5.3 SVM回帰 5.4 SVM分類器の仕組み 5.5 双対問題 5.5.1 カーネルSVM 5.6 演習問題 6章 決定木 6.1 決定木の学習と可視化 6.2 決定木による予測 6.3 クラスの確率の推定 6.4 CART学習アルゴリズム 6.5 計算量 6.6 ジニ不純度かエントロピーか 6.7 正則化ハイパーパラメータ 6.8 回帰 6.9 軸の向きへの過敏さ 6.10 決定木はばらつきが大きい 6.11 演習問題 7章 アンサンブル学習とランダムフォレスト 7.1 投票分類器 7.2 バギングとペースティング 7.2.1 scikit-learnにおけるバギングとペースティング 7.2.2 OOB検証 7.2.3 ランダムパッチとランダムサブスペース 7.3 ランダムフォレスト 7.3.1 Extra-Trees 7.3.2 特徴量の重要度 7.4 ブースティング 7.4.1 AdaBoost 7.4.2 勾配ブースティング 7.4.3 ヒストグラムベースの勾配ブースティング 7.5 スタッキング 7.6 演習問題 8章 次元削減 8.1 次元の呪い 8.2 次元削減のための主要なアプローチ 8.2.1 射影 8.2.2 多様体学習 8.3 PCA 8.3.1 分散の維持 8.3.2 主成分 8.3.3 低次のd次元への射影 8.3.4 scikit-learnを使った方法 8.3.5 寄与率 8.3.6 適切な次数の選択 8.3.7 圧縮のためのPCA 8.3.8 ランダム化PCA 8.3.9 逐次学習型PCA 8.4 ランダム射影 8.5 LLE 8.6 その他の次元削減テクニック 8.7 演習問題 9章 教師なし学習のテクニック 9.1 クラスタリングアルゴリズム:k平均法とDBSCAN 9.1.1 k平均法 9.1.2 k平均法の限界 9.1.3 クラスタリングによる画像セグメンテーション 9.1.4 半教師あり学習の一部としてのクラスタリング 9.1.5 DBSCAN 9.1.6 その他のクラスタリングアルゴリズム 9.2 混合ガウスモデル 9.2.1 混合ガウスモデルを使った異常検知 9.2.2 クラスタ数の選択 9.2.3 混合ベイズガウスモデル 9.2.4 異常/新規性検知のためのその他のアルゴリズム 9.3 演習問題 第Ⅱ部 ニューラルネットと深層学習 10章 人工ニューラルネットワークとKerasの初歩 10.1 生物学的ニューロンから人工ニューロンへ 10.1.1 生物学的ニューロン 10.1.2 ニューロンによる論理演算 10.1.3 パーセプトロン 10.1.4 MLPとバックプロパゲーション 10.1.5 回帰MLP 10.1.6 分類MLP 10.2 KerasによるMLPの実装 10.2.1 シーケンシャルAPIを使った画像分類器の構築 10.2.2 シーケンシャルAPIを使った回帰MLPの構築 10.2.3 関数型APIを使った複雑なモデルの構築 10.2.4 サブクラス化APIを使ったダイナミックなモデルの構築 10.2.5 モデルの保存と復元 10.2.6 コールバックの使い方 10.2.7 TensorBoardによる可視化 10.3 ニューラルネットワークのハイパーパラメータのファインチューニング 10.3.1 隠れ層の数 10.3.2 隠れ層当たりのニューロン数 10.3.3 学習率、バッチサイズ、その他のハイパーパラメータ 10.4 演習問題 11章 深層ニューラルネットワークの学習 11.1 勾配消失/爆発問題 11.1.1 GlorotとHeの初期値 11.1.2 よりよい活性化関数 11.1.3 バッチ正規化 11.1.4 勾配クリッピング 11.2 事前学習済みの層の再利用 11.2.1 Kerasによる転移学習 11.2.2 教師なし事前学習 11.2.3 関連タスクの事前学習 11.3 オプティマイザの高速化 11.3.1 モーメンタム最適化 11.3.2 NAG 11.3.3 AdaGrad 11.3.4 RMSProp 11.3.5 Adam 11.3.6 AdaMax 11.3.7 Nadam 11.3.8 AdamW 11.4 学習率スケジューリング 11.5 正則化による過学習の防止 11.5.1 ℓ1およびℓ2正則化 11.5.2 ドロップアウト 11.5.3 モンテカルロ(MC)ドロップアウト 11.5.4 最大ノルム正則化 11.6 まとめと実践的なガイドライン 11.7 演習問題 12章 TensorFlowで作るカスタムモデルとその学習 12.1 TensorFlow弾丸ツアー 12.2 TensorFlowのNumPyのような使い方 12.2.1 テンソルと演算 12.2.2 テンソルとNumPy 12.2.3 型変換 12.2.4 変数 12.2.5 その他のデータ構造 12.3 モデルと学習アルゴリズムのカスタマイズ 12.3.1 カスタム損失関数 12.3.2 カスタムコンポーネントを含むモデルの保存とロード 12.3.3 カスタム活性化関数、初期化子、正則化器、制約 12.3.4 カスタム指標 12.3.5 カスタム層 12.3.6 カスタムモデル 12.3.7 モデルの内部状態に基づく損失や指標の定義 12.3.8 自動微分を使った勾配の計算 12.3.9 カスタム学習ループ 12.4 TensorFlow関数とグラフ 12.4.1 AutoGraphとトレース 12.4.2 TF関数のルール 12.5 演習問題 13章 TensorFlowによるデータのロードと前処理 13.1 tf.data API 13.1.1 変換の連鎖 13.1.2 データのシャッフル 13.1.3 複数のファイルから読んだ行のインターリーブ 13.1.4 データの前処理 13.1.5 1つにまとめる 13.1.6 プリフェッチ 13.1.7 Kerasのもとでのデータセットの使い方 13.2 TFRecord形式 13.2.1 TFRecordファイルの圧縮 13.2.2 プロトコルバッファ入門 13.2.3 TensorFlow Protobuf 13.2.4 Exampleのロードとパース 13.2.5 SequenceExample protobufを使ったリストのリストの処理 13.3 Kerasの前処理層 13.3.1 Normalization層 13.3.2 Discretization層 13.3.3 CategoryEncoding層 13.3.4 StringLookup層 13.3.5 Hashing層 13.3.6 埋め込みを使ったカテゴリ特徴量のエンコード 13.3.7 テキストの前処理 13.3.8 事前学習済みモデルのコンポーネントの利用 13.3.9 画像前処理層 13.4 TFDSプロジェクト 13.5 演習問題 14章 畳み込みニューラルネットワークを使った深層コンピュータビジョン 14.1 視覚野のアーキテクチャ 14.2 畳み込み層 14.2.1 フィルタ 14.2.2 複数の特徴量マップの積み上げ 14.2.3 Kerasによる畳み込み層の実装 14.2.4 メモリ要件 14.3 プーリング層 14.4 Kerasによるプーリング層の実装 14.5 CNNのアーキテクチャ 14.5.1 LeNet- 14.5.2 AlexNet 14.5.3 GoogLeNet 14.5.4 VGGNet 14.5.5 ResNet 14.5.6 Xception 14.5.7 SENet 14.5.8 その他の注目すべきアーキテクチャ 14.5.9 適切なCNNアーキテクチャの選択 14.6 Kerasを使ったResNet-34 CNNの実装 14.7 Kerasで事前学習済みモデルを使う方法 14.8 事前学習済みモデルを使った転移学習 14.9 分類と位置特定 14.10 物体検知 14.10.1 FCN(全層畳み込みネットワーク) 14.10.2 YOLO(You Only Look Once) 14.11 物体追跡 14.12 セマンティックセグメンテーション 14.13 演習問題 15章 RNNとCNNを使ったシーケンスの処理 15.1 再帰ニューロンとその層 15.1.1 メモリセル 15.1.2 入出力シーケンス 15.2 RNNの学習 15.3 時系列データの予測 15.3.1 ARMA系モデル 15.3.2 機械学習モデルのためのデータの準備 15.3.3 線形モデルを使った予測 15.3.4 単純なRNNを使った予測 15.3.5 深層RNNを使った予測 15.3.6 多変量時系列データの予測 15.3.7 数タイムステップ先の予測 15.3.8 Seq2Seqモデルを使った予測 15.4 長いシーケンスの処理 15.4.1 不安定な勾配問題への対処 15.4.2 短期記憶問題への対処 15.5 演習問題 16章 RNNとアテンションメカニズムによる自然言語処理 16.1 文字RNNを使ったシェイクスピア風テキストの生成 16.1.1 学習データセットの作成 16.1.2 文字RNNモデルの構築と学習 16.1.3 シェイクスピア風の偽テキストの生成 16.1.4 ステートフルRNN 16.2 感情分析 16.2.1 マスキング 16.2.2 事前学習済みの埋め込みの再利用 16.3 ニューラル機械翻訳のためのエンコーダ-デコーダネットワーク 16.3.1 双方向RNN 16.3.2 ビームサーチ 16.4 アテンションメカニズム 16.4.1 必要なものはアテンションだけ:Transformerアーキテクチャ 16.5 雪崩を打つように出現したTransformerモデルの数々 16.6 Vision Transformer(ViT) 16.7 Hugging FaceのTransformersライブラリ 16.8 演習問題 17章 オートエンコーダ、GAN、拡散モデル 17.1 効率のよいデータ表現 17.2 不完備線形オートエンコーダによるPCA 17.3 スタックオートエンコーダ 17.3.1 Kerasによるスタックオートエンコーダの実装 17.3.2 再構築の可視化 17.3.3 Fashion MNISTデータセットの可視化 17.3.4 スタックオートエンコーダを使った教師なし事前学習 17.3.5 重みの均等化 17.3.6 オートエンコーダの層ごとの学習 17.4 畳み込みオートエンコーダ 17.5 ノイズ除去オートエンコーダ 17.6 スパース・オートエンコーダ 17.7 変分オートエンコーダ 17.8 Fashion MNIST風の画像の生成 17.9 GAN(敵対的生成ネットワーク) 17.9.1 GANの学習の難しさ 17.9.2 DCGAN 17.9.3 PGGAN(Progressive Growing of GANs) 17.9.4 StyleGAN 17.10 拡散モデル 17.11 演習問題 18章 強化学習 18.1 報酬の最大化の学習 18.2 方策探索 18.3 OpenAI Gym入門 18.4 ニューラルネットワークによる方策 18.5 行動の評価:信用割当問題 18.6 方策勾配法 18.7 マルコフ決定過程 18.8 TD(時間差分)学習 18.9 Q学習 18.9.1 探索方策 18.9.2 近似Q学習と深層Q学習 18.10 深層DQNの実装 18.11 深層Q学習のバリアント 18.11.1 ターゲットQ値の固定化 18.11.2 ダブルDQN 18.11.3 優先度付き経験再生 18.11.4 Dueling DQN 18.12 広く使われているRLアルゴリズムの概要 18.13 演習問題 19章 大規模なTensorFlowモデルの学習とデプロイ 19.1 TensorFlowモデルのサービング 19.1.1 TF Servingの使い方 19.1.2 Vertex AI上での予測サービスの作成 19.1.3 Vertex AI上でのバッチ予測ジョブの実行 19.2 モバイル/組み込みデバイスへのモデルのデプロイ 19.3 ウェブページでのモデルの実行 19.4 GPUを使った計算のスピードアップ 19.4.1 自前のGPU 19.4.2 GPU RAMの管理 19.4.3 演算、変数のデバイスへの配置 19.4.4 複数のデバイスにまたがる並列実行 19.5 複数のデバイスによるモデルの学習 19.5.1 モデル並列 19.5.2 データ並列 19.5.3 Distribution Strategy APIを使った大規模な学習 19.5.4 TensorFlowクラスタによるモデルの学習 19.5.5 Vertex AI上での大規模な学習ジョブの実行 19.5.6 Vertex AI上でのハイパーパラメータチューニング 19.6 演習問題 19.7 ありがとう! 付録A 機械学習プロジェクトチェックリスト A.1 問題の枠組みと全体像をつかむ A.2 データを手に入れる A.3 データを探索する A.4 データを準備する A.5 有望なモデルを絞り込む A.6 システムをファインチューニングする A.7 ソリューションをプレゼンテーションする A.8 本番稼働! 付録B 自動微分 B.1 手計算による微分 B.2 有限差分近似 B.3 フォワードモード自動微分 B.4 リバースモード自動微分 付録C 特殊なデータ型 C.1 文字列 C.2 不規則なテンソル C.3 疎テンソル C.4 テンソル配列 C.5 集合 C.6 キュー 付録D TensorFlowグラフ D.1 TF関数と具象関数 D.2 関数定義とグラフの探り方 D.3 トレーシングの詳細 D.4 AutoGraphによるダイナミックループ D.5 TF関数における変数その他のリソースの処理 D.6 KerasのもとでTF関数を使う(使わない)方法 索引