scikit-learn、Keras、TensorFlowによる実践機械学習 第3版

[cover photo]
TOPICS
発行年月日
PRINT LENGTH
796
ISBN
978-4-8144-0093-5
原書
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 3rd Edition
FORMAT
Print PDF
Ebook
5,830円
Ebookを購入する
Print
5,830円

Pythonを代表する機械学習ライブラリ、scikit-learn、Keras、TensorFlowを利用し、幅広い分野の機械学習に対応する方法を網羅的に解説した、機械学習エンジニアの必読のベストセラーの改訂版です。この改訂版では、大規模言語モデルや拡散モデルなどの生成AIの基本となるトピックもカバーしています。また、より大規模なデータを使用し、より現実的実践的な問題解決ができるように配慮されています。サンプルコードはノートブック形式で提供されており、実際に手を動かしながら、さまざまな機械学習のニーズに応えられる幅広い知識とスキルを得ることができます。

目次

監訳者まえがき
はじめに

第Ⅰ部 機械学習の基礎

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関数を使う(使わない)方法

索引