ゼロから作るDeep Learning ❺ ―生成モデル編

Book description

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

Table of contents

  1.  大扉
  2.  クレジット
  3.  まえがき
  4.  ステップ1 正規分布
  5.   1.1 確率の基礎
  6.    1.1.1 確率変数と確率分布
  7.    1.1.2 確率分布の種類
  8.    1.1.3 期待値と分散
  9.   1.2 正規分布
  10.    1.2.1 正規分布の確率密度関数
  11.    1.2.2 正規分布のコード
  12.    1.2.3 パラメータの役割
  13.   1.3 中心極限定理
  14.    1.3.1 中心極限定理とは
  15.    1.3.2 中心極限定理の実験
  16.   1.4 サンプル和の確率分布
  17.    1.4.1 サンプル和の期待値と分散
  18.    1.4.2 コードで確かめる
  19.    1.4.3 一様分布の平均と分散✪
  20.   1.5 身の回りにある正規分布
  21.  ステップ2 最尤推定
  22.   2.1 生成モデルの概要
  23.    2.1.1 生成モデルとは
  24.    2.1.2 母集団とサンプル
  25.   2.2 実データを使った生成モデルの実装
  26.    2.2.1 身長データセットの読み込み
  27.    2.2.2 正規分布による生成モデル
  28.   2.3 最尤推定の理論
  29.    2.3.1 尤度の最大化
  30.    2.3.2 微分を使って最大値を探す
  31.    2.3.3 正規分布の最尤推定✪
  32.   2.4 生成モデルの用途
  33.    2.4.1 新しいデータの生成
  34.    2.4.2 確率の計算
  35.  ステップ3 多次元正規分布
  36.   3.1 NumPyと多次元配列
  37.    3.1.1 多次元配列
  38.    3.1.2 NumPyの多次元配列
  39.    3.1.3 要素ごとの演算
  40.    3.1.4 ベクトルの内積と行列積
  41.   3.2 多次元正規分布
  42.    3.2.1 多次元正規分布の式
  43.    3.2.2 多次元正規分布の実装
  44.   3.3 2次元正規分布の可視化
  45.    3.3.1 3Dグラフの描画方法
  46.    3.3.2 等高線の描画
  47.    3.3.3 2次元正規分布のグラフ
  48.   3.4 多次元正規分布の最尤推定
  49.    3.4.1 最尤推定を行う
  50.    3.4.2 最尤推定の実装
  51.    3.4.3 実データを使う
  52.  ステップ4 混合ガウスモデル
  53.   4.1 身の回りにある多峰性分布
  54.    4.1.1 多峰性分布のデータセット
  55.   4.2 混合ガウスモデルのデータ生成
  56.    4.2.1 GMMによるデータ生成
  57.    4.2.2 データ生成を行うコード
  58.   4.3 混合ガウスモデルの式
  59.    4.3.1 確率の復習
  60.    4.3.2 GMMの式
  61.    4.3.3 GMMの実装
  62.   4.4 パラメータ推定の難所
  63.    4.4.1 GMMのパラメータ推定
  64.  ステップ5 EMアルゴリズム
  65.   5.1 KLダイバージェンス
  66.    5.1.1 数式の表記について
  67.    5.1.2 KLダイバージェンスの定義式
  68.    5.1.3 KLダイバージェンスと最尤推定の関係
  69.   5.2 EMアルゴリズムの導出①
  70.    5.2.1 潜在変数を持つモデル
  71.    5.2.2 任意の確率分布q(z)
  72.   5.3 EMアルゴリズムの導出②
  73.    5.3.1 ELBO(エビデンスの下界)
  74.    5.3.2 EMアルゴリズムへ
  75.    5.3.3 複数データへの拡張
  76.    5.3.4 log p(x; θnew) ≥ log p(x; θold)の証明✪
  77.   5.4 GMMとEMアルゴリズム✪
  78.    5.4.1 EMアルゴリズムのEステップ✪
  79.    5.4.2 EMアルゴリズムのMステップ✪
  80.   5.5 EMアルゴリズムの実装
  81.    5.5.1 データセットとGMMのコード
  82.    5.5.2 EステップとMステップの実装
  83.    5.5.3 データ生成
  84.  ステップ6 ニューラルネットワーク
  85.   6.1 PyTorchと勾配法
  86.    6.1.1 PyTorchのインストール
  87.    6.1.2 テンソルの計算
  88.    6.1.3 勾配法
  89.   6.2 線形回帰
  90.    6.2.1 トイ・データセット
  91.    6.2.2 線形回帰の理論
  92.    6.2.3 線形回帰の実装
  93.   6.3 パラメータとオプティマイザ
  94.    6.3.1 ParameterとModuleクラス
  95.    6.3.2 オプティマイザ
  96.   6.4 ニューラルネットワークの実装
  97.    6.4.1 非線形なデータセット
  98.    6.4.2 線形変換と活性化関数
  99.    6.4.3 ニューラルネットワークの実装
  100.   6.5 torchvisionとデータセット
  101.    6.5.1 torchvisionのインストール
  102.    6.5.2 MNISTデータセット
  103.    6.5.3 前処理
  104.    6.5.4 データローダ
  105.  ステップ7 変分オートエンコーダ(VAE)
  106.   7.1 VAEとデコーダ
  107.    7.1.1 1つの正規分布
  108.    7.1.2 混合ガウスモデル(GMM)
  109.    7.1.3 VAE
  110.    7.1.4 EMアルゴリズムの問題点
  111.   7.2 VAEとエンコーダ
  112.    7.2.1 EMアルゴリズムからVAEへ
  113.    7.2.2 データセット全体への適用
  114.   7.3 ELBOの最適化
  115.    7.3.1 ELBOの評価
  116.    7.3.2 変数変換トリック
  117.   7.4 VAEの実装
  118.    7.4.1 実装の方針
  119.    7.4.2 VAEのコード
  120.    7.4.3 学習を行うコード
  121.    7.4.4 新しい画像の生成
  122.  ステップ8 拡散モデルの理論
  123.   8.1 VAEから拡散モデルへ
  124.    8.1.1 VAEの復習
  125.    8.1.2 潜在変数の階層化
  126.    8.1.3 拡散モデルへ
  127.   8.2 拡散過程と逆拡散過程
  128.    8.2.1 拡散過程
  129.    8.2.2 逆拡散過程
  130.   8.3 ELBOの計算①
  131.    8.3.1 拡散モデルのELBO
  132.    8.3.2 ELBOの式展開
  133.   8.4 ELBOの計算②
  134.    8.4.1 q(xt | x0)の式
  135.    8.4.2 ELBOの近似解
  136.    8.4.3 q(xt | x0)の導出✪
  137.   8.5 ELBOの計算③
  138.    8.5.1 q(xt-1 | xt,x0)の式
  139.    8.5.2 ELBOの近似解
  140.    8.5.3 q(xt-1 | xt,x0)の導出✪
  141.   8.6 拡散モデルの学習
  142.    8.6.1 ニューラルネットワークは何を予測するか?
  143.    8.6.2 元データを復元するニューラルネットワーク
  144.    8.6.3 ノイズを予測するニューラルネットワーク
  145.    8.6.4 新しいデータのサンプリング
  146.  ステップ9 拡散モデルの実装
  147.   9.1 U-Net
  148.    9.1.1 U-Netとは
  149.    9.1.2 U-Netの実装
  150.   9.2 正弦波位置エンコーディング
  151.    9.2.1 正弦波位置エンコーディングとは
  152.    9.2.2 正弦波位置エンコーディングの実装
  153.    9.2.3 U-Netに組み込む
  154.   9.3 拡散過程
  155.    9.3.1 q(xt | xt-1)からのサンプリング
  156.    9.3.2 画像に対する拡散過程
  157.    9.3.3 q(xt | x0)からのサンプリング
  158.    9.3.4 Diffuserクラスの実装
  159.   9.4 データ生成
  160.    9.4.1 ワンステップのデノイズ処理
  161.    9.4.2 データ生成の実装
  162.   9.5 拡散モデルの学習(実装編)
  163.    9.5.1 拡散モデルの学習コード
  164.    9.5.2 学習結果
  165.  ステップ10 拡散モデルの応用
  166.   10.1 条件付き拡散モデル
  167.    10.1.1 拡散モデルに条件を追加する
  168.    10.1.2 条件付き拡散モデルの実装
  169.   10.2 スコア関数
  170.    10.2.1 スコア関数とは
  171.    10.2.2 式(10.1)の証明✪
  172.   10.3 分類器ガイダンス
  173.    10.3.1 分類器とは
  174.    10.3.2 分類器ガイダンスの導出
  175.   10.4 分類器なしガイダンス
  176.    10.4.1 分類器なしガイダンスの理論
  177.    10.4.2 分類器なしガイダンスの実装
  178.   10.5 Stable Diffusion
  179.    10.5.1 Stable Diffusionの仕組み
  180.    10.5.2 Diffusersライブラリ
  181.  付録A 多次元正規分布の最尤推定の導出✪
  182.   A.1 μの最尤推定
  183.   A.2 2次形式の微分(式(A.4)の証明)
  184.   A.3 Σの最尤推定
  185.   A.4 トレースと微分(式(A.12)の証明)
  186.  付録B イェンセンの不等式
  187.   B.1 凸関数とイェンセンの不等式
  188.   B.2 凹関数とlog関数
  189.   B.3 ELBOの導出
  190.  付録C 階層型VAEの理論と実装✪
  191.   C.1 2階層VAEの構成要素
  192.   C.2 ELBOの式展開
  193.   C.3 モンテカルロ法によるELBOの近似
  194.   C.4 2階層VAEの実装
  195.   C.5 実装コード
  196.  付録D 数式記号一覧
  197.   D.1 本書で使用する記号
  198.   D.2 本書で使用する数式
  199.  おわりに
  200.  参考文献
  201.  著者紹介
  202.  奥付

Product information

  • Title: ゼロから作るDeep Learning ❺ ―生成モデル編
  • Author(s): 斎藤 康毅
  • Release date: April 2024
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784814400591

You might also like

book

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

by 斎藤 康毅

ディープラーニングの本格的な入門書。外部のライブラリに頼らずに、Python 3によってゼロからディープラーニングを作ることで、ディープラーニングの原理を楽しく学びます。ディープラーニングやニューラルネットワークの基礎だけでなく、誤差逆伝播法や畳み込みニューラルネットワークなども実装レベルで理解できます。ハイパーパラメータの決め方や重みの初期値といった実践的なテクニック、Batch NormalizationやDropout、Adamといった最近のトレンド、自動運転や画像生成、強化学習などの応用例、さらには、なぜディープラーニングは優れているのか? なぜ層を深くすると認識精度がよくなるのか? といった“Why”に関する問題も取り上げます。

book

ゼロから作るDeep Learning ❹ ―強化学習編

by 斎藤 康毅

人気シリーズの第4弾。今回のテーマは強化学習です。実際のコードを提示し動かしながら学ぶという本シリーズのスタイルを踏襲し、外部ライブラリに頼らず、強化学習を支える基本的な技術やアイデアをゼロから実装しながら学びます。本書では読者が強化学習独特の理論を確実にマスターできるように、強化学習という難解なテーマの構成要素の一つひとつを「理論」と「実践」の双方から丁寧に解説します。数式だけで説明する理論書とは異なり、読者はコードを通してハッとする気づきを数多く得られるでしょう。

book

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

by David Foster, 松田 晃一, 小沼 千絵

生成型ディープラーニングの解説書。「絵を描く」「曲を作る」といった、これまで人間にしかできないと思われていた創造的な作業を機械に行わせるという、いま最もホットな技術の基礎から応用までをJupyterノートブック環境で実際に試しながら学びます。第I部は基礎編です。機械学習プログラミング、変分オートエンコーダ、GANやRNNなど、生成モデルの作成において重要な基礎技術を学びます。第II部は応用編です。CycleGAN、エンコーダ―デコーダモデル、MuseGANなどのモデルを作成し、作画、作文、作曲といった創造的なタスクに取り組みます。さらには、実環境を用いずにゲームプレイの学習を可能にする、世界モデルを使った強化学習にも取り組みます。

book

ユニコーン企業のひみつ ―Spotifyで学んだソフトウェアづくりと働き方

by Jonathan Rasmusson, 島田 浩二, 角谷 信太郎

大規模な成功を収めているテック企業(ユニコーン企業)は、スタートアップで機能していたテクニックをエンタープライズ企業レベルにまでスケールさせる方法を見いだし、日々実践しています。Amazon、Facebook、Googleなどは、何万人もの従業員を抱えているにもかかわらず、スタートアップのように働いています。本書はSpotifyでアジャイルコーチやエンジニアの経験を持つ著者がユニコーン企業のソフトウェアづくりと働き方を解説します。 ミッションによってチームに目的を持たせ、スクワッドに権限を与え、信頼する。カンパニーベットを通じて大規模な取り組みを調整する。このような働き方とそれを実現するための文化のあり方を解説し、複数チームが連携しながら質の高いプロダクトを早くリリースし、迅速に技術革新を行うための方法を学びます。 プロダクトのデリバリーにフォーカスする世界有数のテック企業の事例を紹介する本書は、デリバリープロセスやプロダクト組織自体を改善したいエンジニアやマネージャー、経営リーダー必携の一冊です。