扩散模型
本文目录20 节
VAE 原理
似然生成模型:给定一个数据集 x_D,训练使得模型最大化似然 p_\phi(x_D)。
1. ELBO 的定义和公式
VAE 的目标是对数据 x 的分布 p(x) 进行建模,但直接优化 p(x) 通常不可行。通过引入潜变量 z,对对数边际似然 \log p(x) 进行变分下界(ELBO)的近似:
\log p(x) = \mathbb{E}_ {q_\phi(z|x)} \left[\log \frac{p(x, z)}{q_\phi(z|x)} \right] + \text{KL}\left[q_\phi(z|x) \| p(z|x)\right]- 第一项是 ELBO,即对
\log p(x)的下界:
\text{ELBO} = \mathbb{E}_ {q_\phi(z|x)}[\log p(x, z) - \log q_\phi(z|x)]- 第二项是 KL 散度,用于衡量模型
q_\phi(z|x)和真实后验p(z|x)的差异。
2. ELBO 和 \log p(x) 的关系
ELBO 是 \log p(x) 的下界,差值由 KL 散度决定:
\log p(x) - \text{ELBO} = \text{KL} \left[q_\phi(z|x) \| p(z|x)\right]如果 KL 散度为 0,意味着 q_\phi(z|x) = p(z|x),此时 ELBO 与 \log p(x) 相等。
3. 为什么优化 VAE 等价于最大化 ELBO?
VAE 的建模框架是通过 encoder(推断网络) q_\phi(z|x) 和 decoder(生成网络) p_\theta(x|z),学习数据 x 与潜变量 z 的关系。
q_\phi(z|x):近似p(z|x)p_\theta(x|z):从潜变量生成数据
通过最大化 ELBO:
- 第一项(重构误差): 提升模型
p_\theta(x|z)对数据的生成质量。 - 第二项(KL 散度): 减少
q_\phi(z|x)与真实分布p(z|x)的偏差。
4. KL 散度的意义
- KL 散度反映了 encoder
q_\phi(z|x)对真实后验p(z|x)的拟合程度。 - 目标:最小化 KL 散度,使得
q_\phi(z|x)尽可能接近p(z|x)。 - 限制:直接优化 KL 散度不可行,因为真实分布
p(z|x)是未知的。
5. VAE 优化的核心
- ELBO 最大化既可以:
- 提高生成器
p_\theta(x|z)的重构能力。 - 让推断器
q_\phi(z|x)更接近真实后验p(z|x)。
- 提高生成器
这使得 VAE 能够有效学习数据的隐变量结构,完成生成与重构任务。
结论
VAE 的核心思想是通过最大化 ELBO,在生成数据 x 和隐变量 z 的关系中找到一个平衡:
- KL 散度最小化 → encoder 近似真实后验
- 重构误差最小化 → decoder 生成的样本逼近真实数据分布
ELBO(Evidence Lower Bound)
1. ELBO 的分解公式
通过链式法则和 KL 散度的定义,ELBO 被分解为两部分:
\text{ELBO} = \mathbb{E}_ {q_\phi(z|x)}[\log p_\theta(x|z)] - D_\text{KL}[q_\phi(z|x) \| p(z)]-
第一项(Reconstruction Term):
\mathbb{E}_ {q_\phi(z|x)}[\log p_\theta(x|z)]- 表示从潜变量
z生成原始数据x的能力。 - 目标是最大化重构概率,即让生成的
x尽可能接近原始数据。
- 表示从潜变量
-
第二项(Prior Matching Term):
D_\text{KL}[q_\phi(z|x) \| p(z)]- 表示 encoder 生成的潜变量
z的分布q_\phi(z|x)和先验分布p(z)之间的差异。 - 目标是最小化 KL 散度,使得潜变量分布接近先验分布(通常是标准正态分布
N(0, I))。
- 表示 encoder 生成的潜变量
2. 两个部分的作用和优化目标
重构项(Reconstruction Term)
- 作用:
- 优化 decoder 的重构能力,确保从潜变量
z恢复出输入数据x。
- 优化 decoder 的重构能力,确保从潜变量
- 优化目标:
- 最大化
\mathbb{E}_ {q_\phi(z|x)}[\log p_\theta(x|z)],提高生成质量。
- 最大化
先验匹配项(Prior Matching Term)
- 作用:
- 通过最小化 KL 散度,让 encoder 生成的潜变量分布
q_\phi(z|x)接近先验p(z)。
- 通过最小化 KL 散度,让 encoder 生成的潜变量分布
- 优化目标:
- 最小化
D_\text{KL}[q_\phi(z|x) \| p(z)],确保隐变量空间的规范性。
- 最小化
3. 两部分如何协作?
- 重构项:优化生成能力(decoder)
- 先验匹配项:优化潜变量分布(encoder)
这两个部分是一个平衡过程:
- 重构能力越强,样本越真实。
- 潜变量越符合先验分布,生成过程越稳定且泛化能力更好。
4. 为什么需要先验匹配项?
如果去掉先验匹配项(KL 散度部分),VAE 会退化为普通自编码器(AE):
- AE 没有对潜变量空间进行规范化,生成器难以生成新样本。
- 只能进行重构,而无法作为生成模型使用。
5. 总结
VAE 的 ELBO 分解为:
- 重构项:提升生成器的质量。
- 先验匹配项:保证潜变量分布的规范性。
通过最大化 ELBO,VAE 在生成质量与潜变量空间规范性之间取得平衡。
重参数化技巧(Reparameterization Trick)
1. 定义
重参数化技巧是 VAE 中用于解决随机采样导致参数不可导的问题的方法。通过引入一个可分解的噪声变量,使采样过程对模型参数可导,从而支持梯度反传。
2. 为什么需要重参数化?
在 VAE 中,潜变量 z 从正态分布中采样:
z \sim \mathcal{N}(\mu_\phi(x), \sigma_\phi^2(x))直接采样会导致采样过程(包含参数 \phi)不可导,无法优化模型参数。
3. 实现方法
通过重参数化,将采样写成确定性变换:
z = \mu_\phi(x) + \sigma_\phi(x) \cdot \epsilon其中:
\mu_\phi(x):encoder 输出的均值\sigma_\phi(x):encoder 输出的标准差\epsilon \sim \mathcal{N}(0, I):从标准正态分布采样的独立噪声
关键点:
- 分离随机性与参数:随机性来自
\epsilon,与网络参数\phi无关。 - 保持采样分布不变:经过变换后,
z仍然符合原分布。
4. 好处
- 可导性:采样过程对参数可导。
- 优化效率:梯度计算高效。
- 灵活性:适用于任意可微分采样分布。
5. 过程总结
- Encoder:
- 输入
x,输出\mu_\phi(x)和\sigma_\phi(x)。
- 输入
- 随机性分离:
- 采样
\epsilon \sim \mathcal{N}(0, I)。 - 计算
z = \mu_\phi(x) + \sigma_\phi(x) \cdot \epsilon。
- 采样
- Decoder:
- 使用
z生成数据x的重构结果。
- 使用
6. 总结
重参数化技巧是 VAE 的核心步骤,通过可导变换解决采样带来的优化问题,使 VAE 既保留随机性又能高效训练。