ゼロから作るDeep Learning ❺

―生成モデル編

[cover photo]
TOPICS
Data Science , Python
発行年月日
PRINT LENGTH
336
ISBN
978-4-8144-0059-1
FORMAT
Print PDF EPUB
Ebook
3,960円
Ebookを購入する
Print
3,960円

人気シリーズの第5弾。今回のテーマは「生成モデル」です。本書では「正規分布」から「拡散モデル」に至るまでの技術を繋がりのあるストーリーとして展開します。読者は小さな学びを積み重ねながら、ステップバイステップで実装し、最終的には「Stable Diffusion」のような画像生成AIを完成させます。技術の面白さは細部にあります——ゼロから作る、数式に挑む。

関連ファイル

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

正誤表

目次

まえがき

ステップ1 正規分布
    1.1 確率の基礎
        1.1.1 確率変数と確率分布
        1.1.2 確率分布の種類
        1.1.3 期待値と分散
    1.2 正規分布
        1.2.1 正規分布の確率密度関数
        1.2.2 正規分布のコード
        1.2.3 パラメータの役割
    1.3 中心極限定理
        1.3.1 中心極限定理とは
        1.3.2 中心極限定理の実験
    1.4 サンプル和の確率分布
        1.4.1 サンプル和の期待値と分散
        1.4.2 コードで確かめる
        1.4.3 一様分布の平均と分散
    1.5 身の回りにある正規分布

ステップ2 最尤推定
    2.1 生成モデルの概要
        2.1.1 生成モデルとは
        2.1.2 母集団とサンプル
    2.2 実データを使った生成モデルの実装
        2.2.1 身長データセットの読み込み
        2.2.2 正規分布による生成モデル
    2.3 最尤推定の理論
        2.3.1 尤度の最大化
        2.3.2 微分を使って最大値を探す
        2.3.3 正規分布の最尤推定
    2.4 生成モデルの用途
        2.4.1 新しいデータの生成
        2.4.2 確率の計算

ステップ3 多次元正規分布
    3.1 NumPyと多次元配列
        3.1.1 多次元配列
        3.1.2 NumPyの多次元配列
        3.1.3 要素ごとの演算
        3.1.4 ベクトルの内積と行列積
    3.2 多次元正規分布
        3.2.1 多次元正規分布の式
        3.2.2 多次元正規分布の実装
    3.3 2次元正規分布の可視化
        3.3.1 3Dグラフの描画方法
        3.3.2 等高線の描画
        3.3.3 2次元正規分布のグラフ
    3.4 多次元正規分布の最尤推定
        3.4.1 最尤推定を行う
        3.4.2 最尤推定の実装
        3.4.3 実データを使う

ステップ4 混合ガウスモデル
    4.1 身の回りにある多峰性分布
        4.1.1 多峰性分布のデータセット
    4.2 混合ガウスモデルのデータ生成
        4.2.1 GMMによるデータ生成
        4.2.2 データ生成を行うコード
    4.3 混合ガウスモデルの式
        4.3.1 確率の復習
        4.3.2 GMMの式
        4.3.3 GMMの実装
    4.4 パラメータ推定の難所
        4.4.1 GMMのパラメータ推定

ステップ5 EMアルゴリズム
    5.1 KLダイバージェンス
        5.1.1 数式の表記について
        5.1.2 KLダイバージェンスの定義式
        5.1.3 KLダイバージェンスと最尤推定の関係
    5.2 EMアルゴリズムの導出①
        5.2.1 潜在変数を持つモデル
        5.2.2 任意の確率分布q(z)
    5.3 EMアルゴリズムの導出②
        5.3.1 ELBO(エビデンスの下界)
        5.3.2 EMアルゴリズムへ
        5.3.3 複数データへの拡張
        5.3.4 log p(x; θnew) ≥ log p(x; θold)の証明
    5.4 GMMと EMアルゴリズム
        5.4.1 EMアルゴリズムのEステップ
        5.4.2 EMアルゴリズムのMステップ
    5.5 EMアルゴリズムの実装
        5.5.1 データセットとGMMのコード
        5.5.2 EステップとMステップの実装
        5.5.3 データ生成

ステップ6 ニューラルネットワーク
    6.1 PyTorchと勾配法
        6.1.1 PyTorchのインストール
        6.1.2 テンソルの計算
        6.1.3 勾配法
    6.2 線形回帰
        6.2.1 トイ・データセット
        6.2.2 線形回帰の理論
        6.2.3 線形回帰の実装
    6.3 パラメータとオプティマイザ
        6.3.1 ParameterとModuleクラス
        6.3.2 オプティマイザ
    6.4 ニューラルネットワークの実装
        6.4.1 非線形なデータセット
        6.4.2 線形変換と活性化関数
        6.4.3 ニューラルネットワークの実装
    6.5 torchvisionとデータセット
        6.5.1 torchvisionのインストール
        6.5.2 MNISTデータセット
        6.5.3 前処理
        6.5.4 データローダ

ステップ7 変分オートエンコーダ(VAE)
    7.1 VAEとデコーダ
        7.1.1 1つの正規分布
        7.1.2 混合ガウスモデル(GMM)
        7.1.3 VAE
        7.1.4 EMアルゴリズムの問題点
    7.2 VAEとエンコーダ
        7.2.1 EMアルゴリズムからVAEへ
        7.2.2 データセット全体への適用
    7.3 ELBOの最適化
        7.3.1 ELBOの評価
        7.3.2 変数変換トリック
    7.4 VAEの実装
        7.4.1 実装の方針
        7.4.2 VAEのコード
        7.4.3 学習を行うコード
        7.4.4 新しい画像の生成

ステップ8 拡散モデルの理論
    8.1 VAEから拡散モデルへ
        8.1.1 VAEの復習
        8.1.2 潜在変数の階層化
        8.1.3 拡散モデルへ
    8.2 拡散過程と逆拡散過程
        8.2.1 拡散過程
        8.2.2 逆拡散過程
    8.3 ELBOの計算①
        8.3.1 拡散モデルのELBO
        8.3.2 ELBOの式展開
    8.4 ELBOの計算②
        8.4.1 q(xt | x0)の式
        8.4.2 ELBOの近似解
        8.4.3 q(xt | x0)の導出
    8.5 ELBOの計算③
        8.5.1 q(xt−1 | xt, x0)の式
        8.5.2 ELBOの近似解
        8.5.3 q(xt−1 | xt, x0)の導出
    8.6 拡散モデルの学習
        8.6.1 ニューラルネットワークは何を予測するか?
        8.6.2 元データを復元するニューラルネットワーク
        8.6.3 ノイズを予測するニューラルネットワーク
        8.6.4 新しいデータのサンプリング

ステップ9 拡散モデルの実装
    9.1 U-Net
        9.1.1 U-Netとは
        9.1.2 U-Netの実装
    9.2 正弦波位置エンコーディング
        9.2.1 正弦波位置エンコーディングとは
        9.2.2 正弦波位置エンコーディングの実装
        9.2.3 U-Netに組み込む
    9.3 拡散過程
        9.3.1 q(xt | xt−1)からのサンプリング
        9.3.2 画像に対する拡散過程
        9.3.3 q(xt | x0)からのサンプリング
        9.3.4 Diffuserクラスの実装
    9.4 データ生成
        9.4.1 ワンステップのデノイズ処理
        9.4.2 データ生成の実装
    9.5 拡散モデルの学習(実装編)
        9.5.1 拡散モデルの学習コード
        9.5.2 学習結果

ステップ10 拡散モデルの応用
    10.1 条件付き拡散モデル
        10.1.1 拡散モデルに条件を追加する
        10.1.2 条件付き拡散モデルの実装
    10.2 スコア関数
        10.2.1 スコア関数とは
        10.2.2 式(10.1)の証明
    10.3 分類器ガイダンス
        10.3.1 分類器とは
        10.3.2 分類器ガイダンスの導出
    10.4 分類器なしガイダンス
        10.4.1 分類器なしガイダンスの理論
        10.4.2 分類器なしガイダンスの実装
    10.5 Stable Diffusion
        10.5.1 Stable Diffusionの仕組み
        10.5.2 Diffusersライブラリ

付録A 多次元正規分布の最尤推定の導出
    A.1 μの最尤推定
    A.2 2次形式の微分(式(A.4)の証明)
    A.3 Σの最尤推定
    A.4 トレースと微分(式(A.12)の証明)

付録B イェンセンの不等式
    B.1 凸関数とイェンセンの不等式
    B.2 凹関数とlog関数
    B.3 ELBOの導出

付録C 階層型VAEの理論と実装
    C.1 2階層VAEの構成要素
    C.2 ELBOの式展開
    C.3 モンテカルロ法によるELBOの近似
    C.4 2階層VAEの実装
    C.5 実装コード

付録D 数式記号一覧
    D.1 本書で使用する記号
    D.2 本書で使用する数式

おわりに
参考文献
索引

コラム目次
    「積の対数」は「対数の和」
    EMアルゴリズムにおける対数尤度の単調増加性
    ラグランジュの未定乗数法
    2つの正規分布間のKLダイバージェンス
    イェンセンの不等式を使ったELBOの導出
    L1ノルムとL2ノルム
    期待値の線形性と関連する変数の期待値
    正規分布の平均ベクトルに関する微分
    正規分布の共分散行列に関する微分