扩散模型小结

扩散模型是一类基于逐步加噪与去噪过程的生成模型。其核心思想来源于非平衡热力学:通过一个前向扩散过程将数据逐渐转化为噪声,再通过一个反向去噪过程从噪声中重建数据。

本文档介绍扩散模型的关键数学原理,包括前向过程、反向过程、变分下界(ELBO)以及训练目标。

1. 前向扩散过程(Forward Process)

给定原始数据 $x_0 \sim q(x_0)$(例如图像),前向过程通过 $T$ 步逐步加入高斯噪声,最终使 $x_T$ 近似为标准高斯分布:

$$ q(x_t \mid x_{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \beta_t} x_{t-1}, \beta_t \mathbf{I}) $$

其中:

  • $\beta_t \in (0, 1)$ 是预设的噪声调度(noise schedule),通常随 $t$ 递增;
  • $t = 1, 2, \dots, T$。

通过重参数化技巧,可以直接从 $x_0$ 采样任意时刻 $x_t$,而无需逐步模拟:

$$ x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, \quad \epsilon \sim \mathcal{N}(0, \mathbf{I}) $$

其中:

  • $\alpha_t = 1 - \beta_t$,

    $$ \bar{\alpha}_t = \prod_{s=1}^t \alpha_s $$

该性质极大提升了训练效率。


2. 反向生成过程(Reverse Process)

目标是学习一个神经网络模型 $p_\theta$ 来近似真实反向过程 $q(x_{t-1} \mid x_t)$:

$$ p_\theta(x_{t-1} \mid x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t)) $$

DDPM(Denoising Diffusion Probabilistic Models) 中,通常固定协方差 $\Sigma_\theta = \sigma_t^2 \mathbf{I}$(如 $\sigma_t^2 = \beta_t$ 或 $\sigma_t^2 = \tilde{\beta}_t$),仅学习均值 $\mu_\theta$。

关键洞察:由于前向过程是高斯的,反向过程的真实后验 $q(x_{t-1} \mid x_t, x_0)$ 也是高斯分布,其均值可解析表达:

$$ \tilde{\mu}_t(x_t, x_0) = \frac{\sqrt{\bar{\alpha}_{t-1}} \beta_t}{1 - \bar{\alpha}_t} x_0 + \frac{\sqrt{\alpha_t} (1 - \bar{\alpha}_{t-1})}{1 - \bar{\alpha}_t} x_t $$

因此,模型可转为预测 $x_0$预测噪声 $\epsilon$


3. 噪声预测目标(DDPM 训练目标)

定义神经网络 $\epsilon_\theta(x_t, t)$ 用于预测在生成 $x_t$ 时所加的噪声 $\epsilon$。

由前向过程:

$$ x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon \quad \Rightarrow \quad \epsilon = \frac{x_t - \sqrt{\bar{\alpha}_t} x_0}{\sqrt{1 - \bar{\alpha}_t}} $$

训练目标是最小化预测噪声与真实噪声之间的均方误差:

$$ \mathcal{L}_\text{simple}(\theta) = \mathbb{E}_{t \sim \text{Unif}\{1,\dots,T\},\, x_0 \sim q(x_0),\, \epsilon \sim \mathcal{N}(0, \mathbf{I})} \left[ \left\| \epsilon - \epsilon_\theta\left( \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon,\, t \right) \right\|^2 \right] $$

该目标是原始变分下界(ELBO)的简化形式,在实践中效果极佳。


4. 变分下界(Evidence Lower Bound, ELBO)

扩散模型的完整训练目标源于最大化数据对数似然的变分下界:

$$ \log p_\theta(x_0) \geq \mathbb{E}_{q(x_{1:T} \mid x_0)} \left[ \log \frac{p_\theta(x_{0:T})}{q(x_{1:T} \mid x_0)} \right] =: \mathcal{L}_\text{ELBO} $$

展开后可得:

$$ \mathcal{L}_\text{ELBO} = \underbrace{\mathbb{E}_{q(x_T \mid x_0)} \left[ -\log p_\theta(x_T) \right]}_{\text{先验项 } L_T} - \sum_{t=2}^T \underbrace{\mathbb{E}_{q(x_{t-1}, x_t \mid x_0)} \left[ D_\text{KL}\left( q(x_{t-1} \mid x_t, x_0) \,\|\, p_\theta(x_{t-1} \mid x_t) \right) \right]}_{\text{去噪项 } L_{t-1}} - \underbrace{\mathbb{E}_{q(x_1 \mid x_0)} \left[ \log p_\theta(x_0 \mid x_1) \right]}_{\text{重构项 } L_0} $$

在 DDPM 中,$L_T$ 通常忽略(因 $x_T \approx \mathcal{N}(0, \mathbf{I})$),而 $L_{t-1}$ 可转化为高斯 KL 散度,最终等价于噪声预测损失。


5. 采样算法(Reverse Sampling)

训练完成后,从 $x_T \sim \mathcal{N}(0, \mathbf{I})$ 开始,逐步去噪生成样本:

x = torch.randn(batch_size, *data_shape)
for t in reversed(range(1, T+1)):
    z = torch.randn_like(x) if t > 1 else 0
    epsilon_pred = epsilon_theta(x, t)
    x = (1 / sqrt(alpha_t)) * (x - (beta_t / sqrt(1 - alpha_bar_t)) * epsilon_pred) + sigma_t * z

其中:

  • $\sigma_t = \sqrt{\beta_t}$(或使用其他调度);
  • 所有系数均可由 $\alpha_t, \bar{\alpha}_t$ 推导。

参考文献

  • Ho, J., Jain, A., & Abbeel, P. (2020). Denoising Diffusion Probabilistic Models. NeurIPS.
  • Sohl-Dickstein, J., et al. (2015). Deep Unsupervised Learning using Nonequilibrium Thermodynamics.
  • Song, Y., et al. (2020). Score-Based Generative Modeling through Stochastic Differential Equations.

添加新评论