生成 Deep Learning 第2版

―絵を描き、物語や音楽を作り、ゲームをプレイする

[cover photo]
TOPICS
Data Science
発行年月日
PRINT LENGTH
520
ISBN
978-4-8144-0075-1
原書
Generative Deep Learning, 2nd Edition
FORMAT
Print PDF EPUB
Ebook
4,840円
Ebookを購入する
Print
4,840円

生成AIの本格的な解説書。本書はディープラーニングの基礎から始まり、画像、テキスト、音楽を生成する最先端のアーキテクチャへと進んでいきます。具体的には、変分オートエンコーダ(VAE)、敵対的生成ネットワーク(GAN)、トランスフォーマ、正規化フロー、エネルギーベースモデル、GPT、ノイズ除去拡散モデルなどインパクトの強い生成モデルをTensorFlowとKerasで開発します。対象読者は、機械学習エンジニアやデータサイエンティスト。読者は生成AIのモデルを理解するだけでなく、本書掲載のヒントやテクニックを通して、モデルをより効率的に学習させる方法、より創造的なモデルを作成する方法をマスターできます。

関連ファイル

目次

賞賛の声
序文
訳者まえがき
まえがき

第I部 生成ディープラーニング入門

1章 生成モデリング
    1.1 生成モデリングとは何か?
        1.1.1 生成モデリングと識別モデリング
        1.1.2 生成モデリングの隆盛
        1.1.3 生成モデリングとAI
    1.2 初めての生成モデル
        1.2.1 Hello World!
        1.2.2 生成モデリングの枠組み
        1.2.3 表現学習
    1.3 確率論の基礎
    1.4 生成モデルの分類
    1.5 本書のサンプルコード
        1.5.1 リポジトリのコピー
        1.5.2 Dockerの使用
    1.6 まとめ

2章 ディープラーニング
    2.1 ディープラーニング用のデータ
    2.2 ディープニューラルネットワーク
        2.2.1 ニューラルネットワークとは何か?
        2.2.2 高レベルの特徴を学習する
        2.2.3 TensorFlowとKeras
    2.3 多層パーセプトロン(MLP)
        2.3.1 データを準備する
        2.3.2 モデルを構築する
        2.3.3 モデルをコンパイルする
        2.3.4 モデルを訓練する
        2.3.5 モデルを評価する
    2.4 畳み込みニューラルネットワーク(CNN)
        2.4.1 畳み込み層
        2.4.2 バッチの正規化
        2.4.3 ドロップアウト層
        2.4.4 CNNを構築する
        2.4.5 CNNを訓練し、評価する
    2.5 まとめ

第II部 手法

3章 変分オートエンコーダ
    3.1 イントロダクション
    3.2 オートエンコーダ
        3.2.1 Fashion-MNISTデータセット
        3.2.2 オートエンコーダのアーキテクチャ
        3.2.3 エンコーダ
        3.2.4 デコーダ
        3.2.5 エンコーダとデコーダの連結
        3.2.6 画像を再構成する
        3.2.7 潜在空間を可視化する
        3.2.8 新しい画像の生成
    3.3 変分オートエンコーダ
        3.3.1 エンコーダ
        3.3.2 損失関数
        3.3.3 変分オートエンコーダの訓練
        3.3.4 変分オートエンコーダの分析
    3.4 潜在空間を調査する
        3.4.1 CelebAデータセット
        3.4.2 変分オートエンコーダの訓練
        3.4.3 変分オートエンコーダの分析
        3.4.4 新しい顔を生成する
        3.4.5 潜在空間内での計算
        3.4.6 顔をモーフィングする
    3.5 まとめ

4章 敵対的生成ネットワーク
    4.1 イントロダクション
    4.2 深層畳み込みGAN(DCGAN)
        4.2.1 Bricksデータセット
        4.2.2 識別器
        4.2.3 生成器
        4.2.4 DCGANを訓練する
        4.2.5 DCGANの分析
        4.2.6 GANの訓練:ヒントとコツ
    4.3 勾配ペナルティ付きWasserstein GAN(WGAN-GP)
        4.3.1 Wasserstein損失
        4.3.2 Lipschitz制約
        4.3.3 Lipschitz制約を課す
        4.3.4 勾配ペナルティ損失
        4.3.5 WGAN-GPを訓練する
        4.3.6 WGAN-GPの分析
    4.4 条件付きGAN(CGAN)
        4.4.1 CGANアーキテクチャ
        4.4.2 CGANを訓練する
        4.4.3 CGANの分析
    4.5 まとめ

5章 自己回帰モデル
    5.1 イントロダクション
    5.2 LSTMネットワーク
        5.2.1 レシピのデータセット
        5.2.2 テキストデータを扱う
        5.2.3 トークン化する
        5.2.4 訓練セットを作成する
        5.2.5 LSTMアーキテクチャ
        5.2.6 埋め込み層
        5.2.7 LSTM層
        5.2.8 LSTMセル
        5.2.9 LSTMを訓練する
        5.2.10 LSTMの分析
    5.3 RNNの拡張
        5.3.1 多層再帰型ネットワーク
        5.3.2 GRU
        5.3.3 双方向セル
    5.4 PixelCNN
        5.4.1 マスク付き畳み込み層
        5.4.2 残差ブロック
        5.4.3 PixelCNNを訓練する
        5.4.4 PixelCNNの分析
        5.4.5 混合分布
    5.5 まとめ

6章 正規化フローモデル
    6.1 イントロダクション
    6.2 正規化フロー
        6.2.1 変数変換
        6.2.2 ヤコビ行列式
        6.2.3 変数変換公式
    6.3 RealNVP
        6.3.1 2つの月のデータセット
        6.3.2 カップリング層
        6.3.3 RealNVPモデルを訓練する
        6.3.4 RealNVPモデルの分析
    6.4 その他の正規化フローモデル
        6.4.1 GLOW
        6.4.2 FFJORD
    6.5 まとめ

7章 エネルギーベースモデル
    7.1 イントロダクション
    7.2 エネルギーベースモデル
        7.2.1 MNISTデータセット
        7.2.2 エネルギー関数
        7.2.3 ランジュバン動力学を用いてサンプリングする
        7.2.4 コントラスティブダイバージェンスを使って訓練する
        7.2.5 エネルギーベースモデルの分析
        7.2.6 他のエネルギーベースモデル
    7.3 まとめ

8章 拡散モデル
    8.1 イントロダクション
    8.2 ノイズ除去拡散モデル(DDM)
        8.2.1 Oxford 102 Flower Dataset
        8.2.2 順方向の拡散過程
        8.2.3 再パラメータ化トリック
        8.2.4 拡散スケジューリング
        8.2.5 逆方向の拡散過程
        8.2.6 U-Net拡散モデル
        8.2.7 拡散モデルを訓練する
        8.2.8 ノイズ除去拡散モデルからサンプリングする
        8.2.9 拡散モデルの分析
    8.3 まとめ

第III部 応用

9章 トランスフォーマ
    9.1 イントロダクション
    9.2 GPT
        9.2.1 Wine Reviewsデータセット
        9.2.2 アテンション
        9.2.3 クエリー、キー、バリュー
        9.2.4 マルチヘッドアテンション
        9.2.5 因果マスキング
        9.2.6 トランスフォーマブロック
        9.2.7 位置エンコーディング
        9.2.8 GPTを訓練する
        9.2.9 GPTの分析
    9.3 他のトランスフォーマ
        9.3.1 T5
        9.3.2 GPT-3とGPT-4
        9.3.3 ChatGPT
    9.4 まとめ

10章 高度なGAN
    10.1 イントロダクション
    10.2 ProGAN
        10.2.1 プログレッシブトレーニング
        10.2.2 出力
    10.3 StyleGAN
        10.3.1 写像ネットワーク
        10.3.2 合成ネットワーク
        10.3.3 StyleGANからの出力
    10.4 StyleGAN2
        10.4.1 重み変調と復調
        10.4.2 パス長の正則化
        10.4.3 プログレッシブトレーニングを行わない
        10.4.4 StyleGAN2からの出力
    10.5 その他の重要なGAN
        10.5.1 自己アテンション型GAN(SAGAN)
        10.5.2 BigGAN
        10.5.3 VQ-GAN
        10.5.4 ViT VQ-GAN
    10.6 まとめ

11章 音楽生成
    11.1 イントロダクション
    11.2 音楽生成のためのトランスフォーマ
        11.2.1 バッハのチェロ組曲データセット
        11.2.2 MIDIファイルをパーズする
        11.2.3 トークン化
        11.2.4 訓練セットを作成する
        11.2.5 位置エンコーディング
        11.2.6 複数の入出力
        11.2.7 音楽生成トランスフォーマの分析
        11.2.8 ポリフォニックな音楽をトークン化する
    11.3 MuseGAN
        11.3.1 バッハ合唱曲データセット
        11.3.2 MuseGAN生成器
        11.3.3 MuseGAN評価器
        11.3.4 MuseGANの分析
    11.4 まとめ

12章 世界モデル
    12.1 イントロダクション
    12.2 強化学習
        12.2.1 CarRacing環境
    12.3 世界モデルの概要
        12.3.1 アーキテクチャ
        12.3.2 訓練
    12.4 ランダムなロールアウトデータを収集する
    12.5 VAEを訓練する
        12.5.1 VAEのアーキテクチャ
        12.5.2 VAEを探索する
    12.6 MDN-RNN訓練用のデータを収集する
    12.7 MDN-RNNを訓練する
        12.7.1 MDN-RNNのアーキテクチャ
        12.7.2 MDN-RNNからサンプリングする
    12.8 コントローラを訓練する
        12.8.1 コントローラのアーキテクチャ
        12.8.2 CMA-ES
        12.8.3 CMA-ESを並列化する
    12.9 夢の中での訓練
    12.10 まとめ

13章 マルチモーダルモデル
    13.1 イントロダクション
    13.2 DALL·E 2
        13.2.1 アーキテクチャ
        13.2.2 テキストエンコーダ
        13.2.3 CLIP
        13.2.4 プライア
        13.2.5 デコーダ
        13.2.6 DALL·E 2の例
    13.3 Imagen
        13.3.1 アーキテクチャ
        13.3.2 DrawBench
        13.3.3 Imagenの例
    13.4 Stable Diffusion
        13.4.1 アーキテクチャ
        13.4.2 Stable Diffusionの例
    13.5 Flamingo
        13.5.1 アーキテクチャ
        13.5.2 Vision Encoder
        13.5.3 Perceiver Resampler
        13.5.4 Language Model
        13.5.5 Flamingoの例
    13.6 まとめ

14章 まとめ
    14.1 生成AIの年表
        14.1.1 2014~2017年:VAEとGANの時代
        14.1.2 2018~2019年:トランスフォーマの時代
        14.1.3 2020~2022年:ビッグモデルの時代
    14.2 生成AIの現状
        14.2.1 大規模言語モデル
        14.2.2 テキストからのコード生成モデル
        14.2.3 テキストからの画像生成モデル
        14.2.4 その他の応用
    14.3 生成AIの未来
        14.3.1 日常生活における生成AI
        14.3.2 職場における生成AI
        14.3.3 教育における生成AI
        14.3.4 生成AIの倫理と課題
    14.4 最終的な考え

付録A サンプルプログラムの実行
    A.1 環境構築
        A.1.1 WSLとUbuntuのインストール
        A.1.2 Docker Desktopのインストール
    A.2 サンプルプログラムの実行準備
        A.2.1 コードのクローン
        A.2.2 .envファイルの作成
        A.2.3 Kaggleアカウントの作成とトークンの入手方法
        A.2.4 Docker Desktopの起動
    A.3 Dockerイメージのビルド
    A.4 Dockerコンテナの起動
        A.4.1 Jupyter Notebookへのアクセス
    A.5 プログラムの実行
    A.6 データセットのダウンロード
        A.6.1 プログラムの実行にかかる時間
    A.7 TensorBoardの使い方

索引

コラム目次
    1章の目標
    「識別モデリング」はp(y|x)を推定する
    「生成モデリング」はp(x)を推定する
    生成モデリングの枠組み
    2章の目標
    3章の目標
    Brianと裁縫と無限ワードローブ
    転置畳み込み層
    損失関数の選択
    無限ワードローブを再訪する
    多変量正規分布
    Layerクラスのサブクラス
    再パラメータ化トリック
    4章の目標
    Brickkiレンガと贋作者たち
    アップサンプリングとConv2DTranspose
    5章の目標
    やっかいな悪党のための文芸クラブ
    6章の目標
    JacobとF.L.O.W.マシン
    7章の目標
    Long-au-Vinランニングクラブ
    swish活性化関数
    8章の目標
    拡散テレビ
    9章の目標
    10章の目標
    11章の目標
    12章の目標
    13章の目標
    14章の目標
    Gitのインストール