跳转至

KAIST CS492D: 生成模型导论 — GAN 与 VAE

LaTeX 源码 · 备用 PDF · 观看视频

字段 内容
作者/整理 基于 Minhyuk Sung 授课内容整理
来源 Minhyuk Sung (KAIST)
日期 2025年秋季

KAIST CS492D: 生成模型导论 — GAN 与 VAE

课程概览与生成模型的核心问题

本讲是 KAIST CS492D “Diffusion and Flow Models” 课程的第一讲。在正式进入 Diffusion Model 和 Flow Model 之前,授课教师 Minhyuk Sung 首先回顾了生成模型(Generative Models)的基础知识,涵盖采样理论、GAN(Generative Adversarial Network)和 VAE(Variational Autoencoder)两大经典范式,以及支撑这些模型的概率统计工具。

什么是生成模型?

生成模型的核心任务可以用一句话概括:给定一组数据样本,学习一个模型,使之能够生成新的、看起来与训练数据相似但又不完全相同的样本

以图像为例,假设我们有一个包含 58 亿张图像的超大规模数据集(如 LAION-5B),生成模型的目标就是训练一个模型,使其能够产出全新的、逼真的图像——既不是简单地从数据集中复制某张图片,也不是随机噪声,而是分布上与真实图像一致的全新样本。

生成模型的统计视角

从统计学角度看,生成模型的问题可以形式化为:假设所有数据点 \(x_1, x_2, \ldots, x_N\) 都是从某个未知的概率分布 \(p_{\text{data}}(x)\) 中独立同分布(i.i.d.)采样得到的,我们的目标是学习这个分布,从而能够从 \(p_{\text{data}}(x)\) 中采样新的数据点。

为了帮助理解,授课教师从一个更简单的场景出发:假设我们有一组二维平面上的点,它们形成某种特定的形状(例如两个半月形)。那么问题变为:如何构建一个模型,使其能够生成新的点,使这些新点看起来像是从同一个分布中采样得到的?

从简单到复杂:图像作为高维向量

一张 \(256 \times 256\) 的 RGB 图像,可以展平为一个 \(256 \times 256 \times 3 = 196{,}608\) 维的向量。因此,一组图像就是高维空间中的一组点,图像生成的问题本质上等价于在这个高维空间中采样。

图像的向量化表示

每张 \(H \times W\) 的 RGB 图像可以看作 \(\mathbb{R}^{H \times W \times 3}\) 空间中的一个点。图像集合就是该高维空间中的点云,它们共同定义了一个数据分布 \(p_{\text{data}}(x)\)。生成模型的任务就是从这个分布中采样新的点(即新的图像)。

本章小结

生成模型的核心思想是将数据建模为某个概率分布的样本,通过学习这个分布来生成新数据。无论是二维点还是高维图像,问题的数学本质是一样的——从未知分布中采样。

采样理论基础

在讨论如何学习复杂的数据分布之前,授课教师首先回顾了一个基本问题:如果我们已经知道了一个概率分布,如何从中采样?

逆变换采样(Inverse Transform Sampling)

离散情形:从 Categorical 分布采样

考虑一个有 \(K\) 个状态的 categorical 分布,每个状态 \(k\) 有概率 \(p_k\),且 \(\sum_{k=1}^K p_k = 1\)。从这个分布采样的经典方法是逆变换采样

  1. 计算累积分布函数(CDF):\(F(k) = \sum_{i=1}^{k} p_i\)
  2. 从均匀分布 \(U \sim \text{Uniform}(0, 1)\) 中采样一个值 \(u\)
  3. 找到满足 \(F(k-1) < u \leq F(k)\) 的状态 \(k\),该状态即为采样结果

直觉上,概率越高的状态在 CDF 的 \(y\) 轴上占据的“区间”越宽,因此均匀采样落入该区间的概率也越大。

连续情形

对于连续随机变量 \(X\),其概率密度函数为 \(f(x)\),CDF 为:

\[ F(x) = \int_{-\infty}^{x} f(t) \, dt \]

逆变换采样的步骤为:

  1. 采样 \(u \sim \text{Uniform}(0, 1)\)
  2. 计算 \(x = F^{-1}(u)\)

逆变换采样的核心公式

\(F\) 为连续分布的 CDF,\(F^{-1}\) 为其逆函数,则:

\[ X = F^{-1}(U), \quad U \sim \text{Uniform}(0,1) \implies X \sim F \]

关键前提:必须能够计算 CDF 的逆函数 \(F^{-1}\)

课堂练习:从 \(f(x) = 3/8x^2\) 采样

授课教师给出了一个小练习:设 PDF 为 \(f(x) = \frac{3}{8}x^2\)\(x \in {[}-2, 2{]}\),求逆变换采样的采样公式。

解法:

  1. 计算 CDF:\(F(x) = \int_{-2}^{x} \frac{3}{8}t^2 \, dt = \frac{1}{8}(x^3 + 8)\)
  2. \(u = F(x)\),解出 \(x\)\(u = \frac{1}{8}(x^3 + 8) \implies x = (8u - 8)^{1/3} = 2(u-1)^{1/3}\)
  3. 不对,更仔细的推导:\(x^3 = 8u - 8 \implies x = \sqrt{[}3{]}{8u - 8}\)

因此采样过程为:先采 \(u \sim \text{Uniform}(0,1)\),再计算 \(x = (8u - 8)^{1/3}\)

高斯分布的采样:Box-Muller 变换

问题的提出

标准正态分布 \(\mathcal{N}(0, 1)\) 的 PDF 为:

\[ f(x) = \frac{1}{\sqrt{2\pi}} e^{-x^2/2} \]

其 CDF \(\Phi(x) = \int_{-\infty}^{x} f(t) \, dt\) 没有解析形式的逆函数,因此无法直接使用逆变换采样。

高斯 CDF 不可逆的陷阱

虽然高斯分布的 PDF 有优美的解析形式,但其 CDF 的逆函数(即 probit 函数)不存在封闭形式。这意味着不能直接对高斯分布使用最简单的逆变换采样方法。实践中需要借助变量替换等技巧。

Box-Muller 变换的推导

Box-Muller 变换的核心思想是:同时考虑两个独立的标准正态样本,通过极坐标变换使得每个分量都可以用逆变换采样

\(X, Y \overset{\text{i.i.d.}}{\sim} \mathcal{N}(0, 1)\),其联合密度为:

\[ f_{X,Y}(x, y) = \frac{1}{2\pi} e^{-(x^2 + y^2)/2} \]

引入极坐标变量 \(D = X^2 + Y^2\)(平方半径)和 \(\Theta\)(角度),可以证明:

  • \(\Theta \sim \text{Uniform}(0, 2\pi)\)(角度均匀分布,直接采样)
  • \(D \sim \text{Exponential}(1/2)\),即 \(f_D(d) = \frac{1}{2}e^{-d/2}\)\(\chi^2\) 分布,自由度为 2)

\(D\) 的分布,CDF 为 \(F_D(d) = 1 - e^{-d/2}\),其逆函数为:

\[ d = F_D^{-1}(u) = -2\ln(1 - u) \]

由于 \(1-u\)\(u\) 同为 \(\text{Uniform}(0,1)\),可简化为 \(d = -2\ln(u)\)

Box-Muller 变换的完整公式

给定两个独立的均匀分布样本 \(U_1, U_2 \sim \text{Uniform}(0,1)\)

\[ X = \sqrt{-2\ln U_1} \cdot \cos(2\pi U_2) \]
\[ Y = \sqrt{-2\ln U_1} \cdot \sin(2\pi U_2) \]

\(X, Y\) 为两个独立的标准正态分布样本。一次变换可以同时得到两个高斯样本。

多元高斯分布的采样与 Reparameterization

各向同性(Isotropic)高斯分布

对于多元标准正态分布 \(\mathcal{N}(\mathbf{0}, \mathbf{I})\),由于各维度独立,可以对每个维度分别用 Box-Muller 变换采样。

各向异性(Anisotropic)高斯分布

对于一般的多元高斯分布 \(\mathcal{N}(\boldsymbol{\mu}, \boldsymbol{\Sigma})\),采样方法为重参数化(Reparameterization)

\[ \mathbf{x} = \boldsymbol{\mu} + \mathbf{L} \boldsymbol{\epsilon}, \quad \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) \]

其中 \(\mathbf{L}\) 满足 \(\boldsymbol{\Sigma} = \mathbf{L}\mathbf{L}^T\)(例如 Cholesky 分解)。

Reparameterization Trick

\(\mathcal{N}(\boldsymbol{\mu}, \boldsymbol{\Sigma})\) 采样等价于:

\[ \mathbf{x} = \boldsymbol{\mu} + \boldsymbol{\Sigma}^{1/2} \boldsymbol{\epsilon}, \quad \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) \]

这个技巧不仅是采样的基础,更是 VAE 中实现梯度反向传播的关键——它将随机性“分离”到 \(\boldsymbol{\epsilon}\) 中,使得采样过程对 \(\boldsymbol{\mu}\)\(\boldsymbol{\Sigma}\) 可微。

为什么生成模型偏爱高斯分布?

高斯分布在生成模型中无处不在,原因包括:(1)我们知道如何高效采样;(2)高斯分布具有优良的数学性质(如 KL 散度有闭合形式);(3)中心极限定理保证许多分布渐近趋向高斯;(4)在给定均值和方差的约束下,高斯分布是最大熵分布。

本章小结

当概率分布的形式已知时,我们可以通过逆变换采样、变量替换(如 Box-Muller 变换)以及重参数化等技术进行采样。然而,现实中的数据分布(如自然图像的分布)形式未知,且极其复杂——这正是需要深度生成模型的原因。

生成模型的统一框架:从 Latent 到 Data

核心思想:学习分布间的映射

所有生成模型的共同思路

所有深度生成模型(GAN、VAE、Diffusion Model、Flow Model)共享同一个核心思想:学习一个从简单分布(latent distribution)到复杂数据分布(data distribution)的映射

具体而言:

  1. 选择一个容易采样的简单分布作为 latent distribution \(p(z)\)(通常是标准高斯分布 \(\mathcal{N}(\mathbf{0}, \mathbf{I})\)
  2. 用神经网络学习一个映射 \(G_\theta: z \mapsto x\)
  3. 生成时:采样 \(z \sim p(z)\),计算 \(x = G_\theta(z)\)

不同模型的区别在于如何训练这个映射

符号约定

本课程使用以下贯穿始终的符号:

符号 含义 说明
\(z\) latent 变量 来自简单分布(通常为 \(N(0, I)\)
\(x\) 数据点 来自训练数据集
\(p(z)\) latent / prior 分布 已知
\(p(x)\) / \(p_data(x)\) 数据分布 未知,这是我们要逼近的目标
$p_θ(x z)$ likelihood 分布
$p(z x)$ posterior 分布
本课程使用的符号约定

Autoencoder 的启发

Autoencoder 是理解生成模型的一个起点:

  • Encoder\(f_\phi: x \mapsto z\),将数据点压缩到低维 latent 空间
  • Decoder\(g_\theta: z \mapsto \hat{x}\),从 latent 表示重建数据
  • 训练目标:最小化重建误差 \(\|x - g_\theta(f_\phi(x))\|^2\)

在生成模型的语境下,decoder 就是我们需要的映射——它将 latent 空间中的点映射到数据空间。但关键问题是:如何保证 decoder 能够将 latent distribution 中的任意采样点都映射为合理的数据点?

Autoencoder 不等于生成模型

普通 Autoencoder 的 latent 空间并不服从某个已知的简单分布。如果我们直接从 latent 空间随机采样一个点 \(z\) 并送入 decoder,得到的输出很可能不像真实数据。VAE 正是通过对 latent 空间施加先验约束来解决这个问题。

本章小结

生成模型的统一范式是:从一个已知的简单分布 \(p(z)\) 出发,通过神经网络学习到数据分布 \(p_{\text{data}}(x)\) 的映射。GAN、VAE、Diffusion Model 和 Flow Model 的区别仅在于训练策略的不同。Autoencoder 的 decoder 提供了这种映射的雏形,但需要额外的机制来保证 latent 空间的结构化。

GAN:生成对抗网络

从对抗攻击到生成模型

GAN 的思想起源于对抗攻击(Adversarial Attack)。授课教师通过一个经典例子说明:一个训练好的分类器可以正确识别熊猫,但如果在图像上添加一个人眼几乎不可见的微小扰动(噪声),分类器就会将其误判为鸵鸟——即使将差异放大 10 倍,人眼也很难看出区别。

从对抗攻击到 GAN 的思想飞跃

对抗攻击揭示了一个事实:神经网络可以对人眼无法察觉的细微变化极其敏感。GAN 的创始人 Ian Goodfellow 正是受此启发:如果一个网络(攻击者/生成器)可以生成“欺骗”另一个网络(防御者/判别器)的样本,那么通过两者的竞争,生成器最终能学会生成逼真的数据。

GAN 的架构

GAN 由两个神经网络组成:

  • Generator(生成器) \(G_\theta\):接受 latent 样本 \(z \sim p(z)\),输出“假”数据点 \(G_\theta(z)\)
  • Discriminator(判别器) \(D_\phi\):接受一个数据点,输出该数据点为“真实数据”的概率 \(D_\phi(x) \in {[}0, 1{]}\)

生成器和判别器互相竞争:

  • 判别器的目标:正确区分真实数据和生成数据
  • 生成器的目标:生成能骗过判别器的样本

GAN 的损失函数:Minimax 博弈

GAN 的训练目标是一个 minimax 优化问题:

\[ \min_\theta \max_\phi \; V(G_\theta, D_\phi) = \mathbb{E}_{x \sim p_{\text{data}}} {[}\log D_\phi(x){]} + \mathbb{E}_{z \sim p(z)} {[}\log(1 - D_\phi(G_\theta(z))){]} \]

GAN 损失函数各项的含义

  • \(\mathbb{E}_{x \sim p_{\text{data}}} {[}\log D_\phi(x){]}\):对真实数据,判别器应输出高概率(接近 1),使 \(\log D_\phi(x)\) 尽量大
  • \(\mathbb{E}_{z \sim p(z)} {[}\log(1 - D_\phi(G_\theta(z))){]}\):对生成数据 \(G_\theta(z)\),判别器应输出低概率(接近 0),使 \(1 - D_\phi(G_\theta(z))\) 接近 1

判别器通过最大化 \(V\) 来提高区分能力;生成器通过最小化 \(V\) 来提高欺骗能力。

判别器的最优解

固定生成器 \(G_\theta\),对判别器求最优解:

\[ D^*_\phi(x) = \frac{p_{\text{data}}(x)}{p_{\text{data}}(x) + p_G(x)} \]

其中 \(p_G(x)\) 是生成器诱导的分布。当 \(p_G = p_{\text{data}}\) 时,\(D^*(x) = 1/2\),即判别器无法区分真假——这正是 GAN 训练收敛的理想状态。

全局最优的 GAN

可以证明,当 \(p_G = p_{\text{data}}\) 时,损失函数达到全局最小值 \(-2\log 2\)。此时生成器的分布与数据分布完全匹配。

GAN 的训练难题

GAN 训练中的常见问题

Minimax 优化问题在实践中极其难以优化,容易陷入糟糕的局部最优。常见的失败模式包括:

  • 判别器过强(Discriminator Dominance):判别器收敛速度远快于生成器,导致生成器得到的梯度信号极弱(几乎为零),无法有效学习。这是最常见的失败模式。
  • Mode Collapse(模式坍塌):即使训练顺利进行,生成器也可能只学会生成数据分布中的部分模式(modes),丢失了数据的多样性。例如在多模态数据上,生成器可能只集中生成某一个模式的样本。
  • 训练不稳定:loss 曲线剧烈震荡,难以判断是否收敛。

授课教师提到了一个生动的类比:如果你一开始就设定了极其严格的成功标准(discriminator 太强),那就什么也学不到了——这就像生活中的道理一样。

GAN 训练的工程实践

在实践中,GAN 训练需要大量的工程技巧:

  • 通常先预训练生成器几步,让它能产出略有意义的输出,再引入判别器进行对抗训练
  • 需要仔细平衡两个网络的学习率和训练步数比例
  • 许多公司在 2020 年之前投入了大量专门的工程团队来调试 GAN 训练参数

GAN 的发展历程

GAN 自 2013/2014 年由 Goodfellow 等人提出后,涌现了大量变体。授课教师简要提到了几个里程碑式的工作:

模型 年份 主要贡献
GAN 2014 提出对抗训练框架
DCGAN 2015 引入卷积架构
WGAN 2017 用 Wasserstein 距离替代 JS 散度
Progressive GAN 2017 渐进式增长训练策略
StyleGAN / StyleGAN2 2019/2020 高质量人脸生成
GAN 的重要变体(部分)

为什么从 GAN 转向 Diffusion Model?

授课教师指出,业界从 GAN 转向 Diffusion/Flow Model 的主要原因并非质量——StyleGAN 在 2019 年已经能生成非常逼真的人脸图像。真正的驱动力是:(1)训练困难——minimax 优化极不稳定,需要大量工程投入;(2)多样性不足——mode collapse 问题导致生成样本缺乏多样性。Diffusion Model 通过将生成过程分解为多步去噪,巧妙地规避了这两个问题。

本章小结

GAN 通过生成器和判别器的对抗博弈来学习数据分布,其理论框架优美(minimax 博弈在理想情况下能精确匹配数据分布),但实践中面临训练不稳定、mode collapse 等严重问题。这些问题促使了 VAE 和后来的 Diffusion Model 等替代方案的发展。

VAE:变分自编码器

从 GAN 到 VAE 的动机

GAN 的核心困难在于 minimax 优化。VAE 的思路是:能否不用对抗训练,而是通过更稳定的方式学习从 latent distribution 到 data distribution 的映射?

VAE 的关键创新在于:不再学习一个确定性的映射函数 \(G_\theta(z)\),而是学习一个条件概率分布 \(p_\theta(x|z)\),即给定 latent 变量 \(z\) 后,数据 \(x\) 的分布。

VAE 的概率框架

生成过程(Generative Process)

VAE 定义了以下生成过程:

  1. 从先验分布采样:\(z \sim p(z) = \mathcal{N}(\mathbf{0}, \mathbf{I})\)
  2. 从 likelihood 分布采样:\(x \sim p_\theta(x|z) = \mathcal{N}(\mu_\theta(z), \sigma^2 \mathbf{I})\)

其中 \(\mu_\theta(z)\) 是 decoder 神经网络的输出(给定 \(z\) 预测 \(x\) 的均值),\(\sigma^2\) 是固定的方差超参数。

VAE 的概率生成模型

\[ p_\theta(x, z) = p_\theta(x|z) \cdot p(z) \]

其中:

  • \(p(z) = \mathcal{N}(\mathbf{0}, \mathbf{I})\):先验分布(prior),已知
  • \(p_\theta(x|z) = \mathcal{N}(\mu_\theta(z), \sigma^2 \mathbf{I})\):似然分布(likelihood),由 decoder 参数化
  • \(p_\theta(x) = \int p_\theta(x|z) p(z) \, dz\):边际似然(marginal likelihood),对 \(z\) 积分得到

训练目标:最大化边际似然

理想情况下,我们希望最大化数据的边际对数似然:

\[ \max_\theta \; \mathbb{E}_{x \sim p_{\text{data}}} [\log p_\theta(x)] = \max_\theta \; \mathbb{E}_{x \sim p_{\text{data}}} \left[\log \int p_\theta(x|z) p(z) \, dz \right] \]

边际似然不可计算

积分 \(p_\theta(x) = \int p_\theta(x|z) p(z) \, dz\) 在高维空间中无法精确计算。直觉上:latent 空间的维度可能是数百维,对所有可能的 \(z\) 做积分是不现实的。这就是为什么我们需要变分推断(Variational Inference)。

概率论回顾:VAE 所需的数学工具

边际化(Marginalization)

给定联合分布 \(p(x, z)\),通过对一个变量积分(或求和),可以得到另一个变量的边际分布:

\[ p(x) = \int p(x, z) \, dz = \int p(x|z) p(z) \, dz \]

贝叶斯定理(Bayes' Rule)

\[ p(z|x) = \frac{p(x|z) p(z)}{p(x)} \]

各项的术语约定:

符号 名称
\(p(z)\) Prior(先验):关于 \(z\) 的先验知识
$p(x z)$
$p(z x)$
\(p(x)\) Evidence / Marginal Likelihood(证据):数据的边际概率
贝叶斯定理中各项的术语

KL 散度(Kullback-Leibler Divergence)

KL 散度衡量两个概率分布之间的“距离”(注意:它不是对称的,因此不是严格意义上的距离度量):

\[ D_{\mathrm{KL}}(p \| q) = \mathbb{E}_{x \sim p} \left[\log \frac{p(x)}{q(x)}\right] = \int p(x) \log \frac{p(x)}{q(x)} \, dx \]

KL 散度的关键性质

  • 非负性\(D_{\mathrm{KL}}(p \| q) \geq 0\),当且仅当 \(p = q\) 几乎处处相等时取等
  • 非对称性:一般 \(D_{\mathrm{KL}}(p \| q) \neq D_{\mathrm{KL}}(q \| p)\)
  • 两个高斯分布之间的 KL 散度有封闭形式

两个多元高斯分布的 KL 散度

\(p = \mathcal{N}(\boldsymbol{\mu}_1, \boldsymbol{\Sigma}_1)\)\(q = \mathcal{N}(\boldsymbol{\mu}_2, \boldsymbol{\Sigma}_2)\),则:

\[ D_{\mathrm{KL}}(p \| q) = \frac{1}{2}\left[\log\frac{|\boldsymbol{\Sigma}_2|}{|\boldsymbol{\Sigma}_1|} - d + \mathrm{tr}(\boldsymbol{\Sigma}_2^{-1}\boldsymbol{\Sigma}_1) + (\boldsymbol{\mu}_2 - \boldsymbol{\mu}_1)^T \boldsymbol{\Sigma}_2^{-1} (\boldsymbol{\mu}_2 - \boldsymbol{\mu}_1)\right] \]

其中 \(d\) 是维度。特别地,当 \(q = \mathcal{N}(\mathbf{0}, \mathbf{I})\) 时:

\[ D_{\mathrm{KL}}(\mathcal{N}(\boldsymbol{\mu}, \boldsymbol{\Sigma}) \| \mathcal{N}(\mathbf{0}, \mathbf{I})) = \frac{1}{2}\left[-\log|\boldsymbol{\Sigma}| - d + \mathrm{tr}(\boldsymbol{\Sigma}) + \boldsymbol{\mu}^T\boldsymbol{\mu}\right] \]

这个公式在 VAE 训练中直接使用。

Jensen 不等式与 ELBO 的推导

凸函数与 Jensen 不等式

凸函数(Convex Function)的定义:对任意点 \(x_1, \ldots, x_n\) 和权重 \(t_1, \ldots, t_n\)\(t_i \geq 0\), \(\sum t_i = 1\)),满足:

\[ f\left(\sum_i t_i x_i\right) \leq \sum_i t_i f(x_i) \]

直觉上,凸函数的图形“向下弯曲”,任意两点之间的线段都在函数图形之上。

凹函数(Concave Function)是凸函数的相反:函数图形“向上弯曲”,\(-f\) 为凸函数。\(\log\) 函数是一个重要的凹函数。

Jensen 不等式

\(f\) 为凸函数,\(X\) 为随机变量,则:

\[ f(\mathbb{E}{[}X{]}) \leq \mathbb{E}{[}f(X){]} \]

\(f\) 为凹函数(如 \(\log\)),不等式方向反转:

\[ f(\mathbb{E}{[}X{]}) \geq \mathbb{E}{[}f(X){]} \]

\(\log(\mathbb{E}{[}X{]}) \geq \mathbb{E}{[}\log X{]}\)

ELBO 的推导

ELBO(Evidence Lower Bound)是 VAE 训练的核心目标。以下是完整推导过程。

出发点:我们想最大化边际对数似然 \(\log p_\theta(x)\),但它不可直接计算。引入一个近似后验分布 \(q_\phi(z|x)\)(encoder),我们有:

\[ \begin{align} \log p_\theta(x) &= \log \int p_\theta(x, z) \, dz \nonumber \\ &= \log \int \frac{p_\theta(x, z)}{q_\phi(z|x)} q_\phi(z|x) \, dz \nonumber \\ &= \log \mathbb{E}_{z \sim q_\phi(z|x)} \left[\frac{p_\theta(x, z)}{q_\phi(z|x)}\right] \nonumber \\ &\geq \mathbb{E}_{z \sim q_\phi(z|x)} \left[\log \frac{p_\theta(x, z)}{q_\phi(z|x)}\right] \quad \text{(Jensen 不等式,$\log$ 为凹函数)} \end{align} \]

最后一行就是 ELBO:

\[ \text{ELBO}(\theta, \phi; x) = \mathbb{E}_{z \sim q_\phi(z|x)} \left[\log \frac{p_\theta(x, z)}{q_\phi(z|x)}\right] \]

ELBO 的分解

\(p_\theta(x, z) = p_\theta(x|z)p(z)\) 代入,ELBO 可以分解为两项:

$$

\[ \begin{align} ELBO &= \mathbb{E}_{z \sim q_\phi(z|x)} \left[\log p_\theta(x|z)\right] - D_{KL}(q_\phi(z|x) \| p(z)) \nonumber \end{align} \]
$$

- **重建项**(Reconstruction Term):$\mathbb{E}_{z \sim q_\phi(z|x)} {[}\log p_\theta(x|z){]}$ ——衡量 decoder 从 $z$ 重建 $x$ 的能力。当 $p_\theta(x|z) = \mathcal{N}(\mu_\theta(z), \sigma^2 I)$ 时,这一项等价于负的均方误差(MSE)。
- **正则项**(Regularization / KL Term):$-D_{\mathrm{KL}}(q_\phi(z|x) \| p(z))$ ——鼓励 encoder 的输出分布接近先验 $p(z) = \mathcal{N}(\mathbf{0}, \mathbf{I})$,从而使 latent 空间结构化。

ELBO 与边际似然的关系

实际上,可以更精确地写出:

\[ \log p_\theta(x) = \text{ELBO}(\theta, \phi; x) + D_{\mathrm{KL}}(q_\phi(z|x) \| p_\theta(z|x)) \]

ELBO 是下界而非等式

由于 \(D_{\mathrm{KL}}(q_\phi(z|x) \| p_\theta(z|x)) \geq 0\),ELBO 始终小于等于真实的边际对数似然 \(\log p_\theta(x)\)。差距(gap)等于近似后验 \(q_\phi(z|x)\) 与真实后验 \(p_\theta(z|x)\) 之间的 KL 散度。当 \(q_\phi(z|x) = p_\theta(z|x)\) 时(近似后验恰好等于真实后验),ELBO 等于 \(\log p_\theta(x)\),gap 为零。

VAE 的网络架构

在实现层面,VAE 包括:

  • Encoder 网络 \(q_\phi(z|x)\):输入 \(x\),输出 \(\mu_\phi(x)\)\(\sigma_\phi(x)\)(latent 分布的均值和标准差)
  • Decoder 网络 \(p_\theta(x|z)\):输入 \(z\),输出 \(\mu_\theta(z)\)(重建 \(x\) 的均值)
  • 采样过程:通过 reparameterization trick 采样 \(z = \mu_\phi(x) + \sigma_\phi(x) \odot \epsilon\)\(\epsilon \sim \mathcal{N}(\mathbf{0}, \mathbf{I})\)

Reparameterization Trick 在 VAE 中的关键作用

直接从 \(q_\phi(z|x) = \mathcal{N}(\mu_\phi(x), \sigma^2_\phi(x) \mathbf{I})\) 采样 \(z\) 的操作不可微分,无法通过反向传播优化 \(\phi\)。Reparameterization trick 将采样写为 \(z = \mu_\phi(x) + \sigma_\phi(x) \odot \epsilon\)(其中 \(\epsilon \sim \mathcal{N}(\mathbf{0}, \mathbf{I})\) 与参数无关),使得梯度可以流过 \(\mu_\phi\)\(\sigma_\phi\),实现端到端训练。

VAE 的损失函数

综合以上推导,VAE 的训练目标是最大化 ELBO,等价于最小化以下损失函数:

\[ \mathcal{L}_{\text{VAE}}(\theta, \phi; x) = -\text{ELBO} = -\mathbb{E}_{z \sim q_\phi(z|x)}{[}\log p_\theta(x|z){]} + D_{\mathrm{KL}}(q_\phi(z|x) \| p(z)) \]

\(p_\theta(x|z) = \mathcal{N}(\mu_\theta(z), \sigma^2 \mathbf{I})\)\(p(z) = \mathcal{N}(\mathbf{0}, \mathbf{I})\) 时:

\[ \mathcal{L}_{\text{VAE}} = \frac{1}{2\sigma^2}\|x - \mu_\theta(z)\|^2 + D_{\mathrm{KL}}(\mathcal{N}(\mu_\phi(x), \text{diag}(\sigma^2_\phi(x))) \| \mathcal{N}(\mathbf{0}, \mathbf{I})) \]

VAE 损失函数的直觉

VAE 的损失由两部分组成:

  1. 重建误差(MSE):迫使模型准确重建输入数据
  2. KL 惩罚:迫使 latent 分布接近标准高斯,使 latent 空间平滑、连续、可采样

两项之间存在张力:重建误差希望 latent 编码尽可能保留信息(可能导致各数据点的 latent 分布互不重叠),KL 项则迫使所有 latent 分布向标准高斯靠拢(可能导致信息丢失)。找到好的平衡点是 VAE 调参的核心。

VAE 与 Diffusion Model 的联系

授课教师在讲解 VAE 时多次预示:VAE 的思想与 Diffusion Model 直接相关。具体而言:

  • Diffusion Model 可以理解为一种“层次化”的 VAE,其 latent 变量是一系列逐步加噪的中间状态
  • ELBO 的推导方法可以直接推广到 Diffusion Model
  • VAE 中的 reparameterization trick 在 Diffusion Model 中同样不可或缺

本章小结

VAE 通过变分推断规避了 GAN 的 minimax 优化难题。它引入 encoder(近似后验)和 decoder(likelihood),通过最大化 ELBO(边际对数似然的下界)来训练。ELBO 自然分解为重建项和 KL 正则项,两者的平衡决定了生成质量和 latent 空间的结构化程度。VAE 的训练比 GAN 稳定得多,且其概率框架为后续的 Diffusion Model 奠定了理论基础。

概率论工具箱

本节汇总本讲涉及的关键概率论概念和公式,供快速查阅。

边际化(Marginalization)

\[ p(x) = \int p(x, z) \, dz = \int p(x|z) p(z) \, dz \]

在离散情形下,积分替换为求和:\(p(x) = \sum_z p(x, z)\)

条件概率与贝叶斯定理

\[ p(z|x) = \frac{p(x|z) p(z)}{p(x)} = \frac{p(x|z) p(z)}{\int p(x|z') p(z') \, dz'} \]

期望(Expectation)

\[ \mathbb{E}_{x \sim p}{[}f(x){]} = \int f(x) p(x) \, dx \]

对于离散随机变量:\(\mathbb{E}{[}X{]} = \sum_i x_i p(x_i)\)

KL 散度

\[ D_{\mathrm{KL}}(p \| q) = \int p(x) \log \frac{p(x)}{q(x)} \, dx \geq 0 \]

等号成立当且仅当 \(p = q\)(几乎处处)。

Jensen 不等式

对凸函数 \(f\)\(f(\mathbb{E}{[}X{]}) \leq \mathbb{E}{[}f(X){]}\)

对凹函数 \(f\)(如 \(\log\)):\(f(\mathbb{E}{[}X{]}) \geq \mathbb{E}{[}f(X){]}\)

本章小结

边际化、贝叶斯定理、KL 散度和 Jensen 不等式是理解 VAE 和 Diffusion Model 的数学基础。特别是 Jensen 不等式直接导出了 ELBO,而 KL 散度同时出现在 ELBO 的分解和 VAE 的正则项中。

总结与延伸

本讲核心要点

本讲是 KAIST CS492D 课程的导论,系统性地建立了生成模型的理论框架:

  1. 生成模型的核心问题:给定数据样本,学习底层数据分布 \(p_{\text{data}}(x)\),从而生成新样本
  2. 统一框架:所有深度生成模型都在学习从简单分布 \(p(z)\) 到数据分布 \(p_{\text{data}}(x)\) 的映射
  3. GAN:通过生成器-判别器的对抗博弈(minimax 优化)学习映射。理论优美但训练极不稳定
  4. VAE:通过变分推断学习条件分布 \(p_\theta(x|z)\),最大化 ELBO。训练稳定,为 Diffusion Model 奠定基础
  5. 数学工具:逆变换采样、Box-Muller 变换、reparameterization trick、边际化、贝叶斯定理、KL 散度、Jensen 不等式

GAN vs. VAE 对比

特性 GAN VAE
训练方式 Minimax 对抗训练 最大化 ELBO
训练稳定性 不稳定,容易失败 相对稳定
生成质量 高(尤其是图像清晰度) 中等(倾向模糊)
多样性 容易 mode collapse 较好
理论基础 博弈论 变分推断
是否有 encoder 无(仅 generator + discriminator) 有(encoder + decoder)
latent 空间结构 无显式约束 有 KL 正则化约束
与 Diffusion 关系 强(ELBO 框架直接推广)
GAN 与 VAE 的系统对比

展望:Diffusion Model 与 Flow Model

本讲为后续课程内容铺垫了所有必要的理论基础。在接下来的讲次中,课程将深入探讨:

  • Diffusion Model:可以理解为一种“多步 VAE”,通过逐步加噪和去噪来建模数据分布。ELBO 的推导可以直接推广到 diffusion 设定下
  • Flow Model:通过可逆变换直接建模精确的对数似然(不需要 ELBO 这样的下界近似)
  • Score-based Model:从另一个角度——学习数据分布的 score function(对数密度的梯度)——来实现生成

本讲的采样理论(逆变换采样、reparameterization trick)、概率框架(prior / likelihood / posterior)以及 ELBO 推导将在后续每一讲中反复出现和深化。

拓展阅读

  • Goodfellow et al., Generative Adversarial Nets, NeurIPS 2014
  • Kingma & Welling, Auto-Encoding Variational Bayes, ICLR 2014
  • Kingma & Welling, An Introduction to Variational Autoencoders, Foundations and Trends in ML, 2019
  • Doersch, Tutorial on Variational Autoencoders, arXiv:1606.05908
  • KAIST CS492D 课程主页:https://diffusion.kaist.ac.kr/