第3章:扩散模型的数学原理
3.5 变分推断视角与证据下界(ELBO)
理论推导
扩散模型可以从变分推断(Variational Inference, VI)的视角进行解释,其核心是通过最大化证据下界(Evidence Lower Bound, ELBO)来近似数据分布。对于扩散模型,ELBO的推导过程如下:
联合分布与变分分布
正向扩散过程定义为一个马尔可夫链,其联合分布为:逆向去噪过程通过参数化的变分分布 ( p_\theta(x_{t-1}|x_t) ) 近似真实后验 ( q(x_{t-1}|x_t) )。
ELBO的分解
对数似然的变分下界可表示为:进一步分解为:
关键项的意义
- 重构项:( \log p_\theta(x_0|x_1) ) 衡量从 ( x_1 ) 重建原始数据 ( x_0 ) 的能力。
- KL散度项:迫使逆向过程 ( p_\theta ) 匹配正向过程的后验 ( q(x_{t-1}|x_t, x_0) )。
与扩散模型的联系
在DDPM中,ELBO的优化等价于最小化以下损失函数:
其中 ( \epsilon_\theta ) 是预测噪声的神经网络,( x_t = \sqrt{\alpha_t} x_0 + \sqrt{1-\alpha_t} \epsilon )。
案例研究:图像生成中的ELBO优化
以CIFAR-10数据集为例,训练时通过以下步骤实现ELBO最大化:
- 采样时间步 ( t \sim \text{Uniform}(1, T) )。
- 计算噪声图像 ( x_t ) 并预测噪声 ( \epsilon_\theta(x_t, t) )。
- 通过梯度下降最小化均方误差损失 ( | \epsilon - \epsilon_\theta |^2 )。
代码示例(PyTorch)
import torch
import torch.nn.functional as F
def elbo_loss(model, x0, t, noise):
# 正向扩散过程生成x_t
alpha_t = get_alpha(t) # 调度函数
x_t = torch.sqrt(alpha_t) * x0 + torch.sqrt(1 - alpha_t) * noise
# 预测噪声
pred_noise = model(x_t, t)
# 计算均方误差(ELBO的简化形式)
loss = F.mse_loss(pred_noise, noise)
return loss
示意图
图:ELBO分解为重构项(绿色)和KL散度项(蓝色),逆向过程通过神经网络逼近真实后验。
关键结论
- ELBO为扩散模型提供了理论保障,确保训练过程的稳定性。
- 实际实现中,ELBO的优化简化为噪声预测任务,大幅降低了计算复杂度。
- 变分视角揭示了扩散模型与VAEs的相似性,但扩散模型通过马尔可夫链实现了更灵活的生成过程。
