生成AIの本格的な解説書。本書はディープラーニングの基礎から始まり、画像、テキスト、音楽を生成する最先端のアーキテクチャへと進んでいきます。具体的には、変分オートエンコーダ(VAE)、敵対的生成ネットワーク(GAN)、トランスフォーマ、正規化フロー、エネルギーベースモデル、GPT、ノイズ除去拡散モデルなどインパクトの強い生成モデルをTensorFlowとKerasで開発します。対象読者は、機械学習エンジニアやデータサイエンティスト。読者は生成AIのモデルを理解するだけでなく、本書掲載のヒントやテクニックを通して、モデルをより効率的に学習させる方法、より創造的なモデルを作成する方法をマスターできます。
生成 Deep Learning 第2版
―絵を描き、物語や音楽を作り、ゲームをプレイする
David Foster 著、松田 晃一、小沼 千絵 訳
- TOPICS
- Data Science
- 発行年月日
- 2024年08月
- PRINT LENGTH
- 520
- ISBN
- 978-4-8144-0075-1
- 原書
- Generative Deep Learning, 2nd Edition
- FORMAT
- Print PDF EPUB
関連ファイル
目次
賞賛の声 序文 訳者まえがき まえがき 第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のインストール