ゼロから作る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 ❷ ―自然言語処理編

by 斎藤 康毅

コンピュータの専門書としては異例の大ヒットを記録した『ゼロから作るDeep Learning』の続編。第2弾の本書では、自然言語処理や時系列データ処理に焦点を当て、ディープラーニングを使ってさまざまな問題に挑みます。word2vecやRNN(リカレントニューラルネットワーク)、LSTMやGRU、seq2seqやAttention……ディープラーニングを支えるこれら最先端の技術を実装レベルでマスターできます。前作同様、やさしい言葉で分かりやすくをモットーに、高度に見える技術の裏側をじっくり説明し、実際に作ることで理解を深めます。最後までコンセプトは変わらない。ゼロから作る!

book

入門 モダンLinux ―オンプレミスからクラウドまで、幅広い知識を会得する

by Michael Hausenblas, 武内 覚, 大岩 尚宏

Linuxはサーバ、組み込み機器、スーパーコンピュータなどにおいて存在感を示してきました。近年では、オンプレミスのシステムだけではなく、クラウドサービスでも広く使われています。本書は、前半でLinuxを使いこなす上で必要な基本知識を、後半で最新情報をまとめています。Linuxの知識を体系的に整理したい、最新動向が知りたい、運用を改善したい、効率的に開発を行いたい、といった要望をかなえる内容となっています。時代の変化に柔軟に対応できるLinux技術者を目指すなら必読の一冊です。

book

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

by 斎藤 康毅

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

book

マスタリング・イーサリアム ―スマートコントラクトとDAppの構築

by Andreas M. Antonopoulos, Gavin Wood, 宇野 雅晴, 鳩貝 淳一郎, 中城 元臣, 落合 渉悟, 落合 庸介, 小林 泰男, 土屋 春樹, 祢津 誠晃, 平山 翔, 三津澤 サルバドール将司, 山口 和輝

イーサリアムとは、分散型アプリケーションやスマートコントラクトのアプリケーション構築を可能にするオープンソースプロジェクトです。送金、決済などの金銭取引を行う機能に加えて、ゲーム、不動産取引、身分証明など、さまざまなサービスがイーサリアムから生まれています。本書は、ビットコインの定番書『Mastering Bitcoin』の著者と、イーサリアム共同設立者でありスマートコントラクト開発言語Solidityの開発者により執筆された、イーサリアムの技術解説書。イーサリアムについて詳しく知りたいすべての人必携の一冊です。