本文目录导读:

我们来详细梳理一下去噪扩散概率模型(DDPM)。
这可以说是现代生成式AI(如DALL-E 2, Stable Diffusion)的基础架构,它的核心思想非常优雅:通过逐步向数据添加噪声来破坏它,然后学习如何逆向这个过程来恢复数据。
我将从直觉、数学原理(简洁版)、训练与采样流程、以及优缺点这几个方面来讲解。
核心直觉
想象你有一张清晰的照片,你一点一点地往上撒沙子(添加噪声),直到最后照片完全被沙子覆盖,变成一片纯噪声(纯随机像素)。
- 正向过程(破坏):就是撒沙子的过程。
- 逆向过程(生成):就是学习如何“吸走”沙子,从纯噪声中一步步恢复出一张清晰的图片。
这才是真正的生成模型——它不学习数据的标签,而是学习数据的结构和分布。
数学原理(直观版)
DDPM 定义了两个马尔可夫链(每一步只依赖上一步):
A. 正向扩散过程 (Forward Diffusion Process)
这是一个固定的、无参数的过程,给定一个真实数据点 $x_0$,我们按照一个方差计划(Variance Schedule,通常用 $\beta_1, ..., \beta_T$ 表示)逐步添加高斯噪声。
公式: $q(xt | x{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \betat} x{t-1}, \beta_t I)$
-
含义:给定上一步的状态 $x_{t-1}$,当前状态 $x_t$ 服从一个高斯分布,其均值是上一步的缩放,方差是 $\beta_t$(一个很小的数,代表添加的噪声强度)。
-
关键技巧(重参数化):我们不需要一步一步地走,可以直接一步到位地得到任意 $t$ 时刻的噪声数据: $$x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon$$
- $\alpha_t = 1 - \beta_t$
- $\bar{\alpha}t = \prod{i=1}^t \alpha_i$ (所有 $\alpha$ 的乘积)
- $\epsilon \sim \mathcal{N}(0, I)$ (标准高斯噪声)
重要结论:当 $T$ 足够大,且 $\beta_t$ 设计合理时,$x_T$ 几乎完全是一个标准高斯噪声 $\mathcal{N}(0, I)$。
B. 逆向过程 (Reverse Process)
这是我们需要学习的参数化过程,模型 $p_\theta$ 的目标是学习如何逆转每一步的噪声添加,如果每一步的噪声增量 $\betat$ 很小,那么逆向步的条件分布也近似是一个高斯分布,我们用神经网络来预测这个高斯分布的均值 $\mu\theta$ 和方差 $\Sigma_\theta$(通常方差被固定为常数)。
公式: $p\theta(x{t-1} | xt) = \mathcal{N}(x{t-1}; \mu_\theta(xt, t), \Sigma\theta(x_t, t))$
- 核心任务:给定当前噪声图 $x_t$ 和步数 $t$,预测前一时刻的均值。
训练目标
DDPM发现,直接预测均值很困难,但可以做等价的变换:预测噪声 $\epsilon$。
在训练时,我们:
- 随机抽取一张真实图片 $x_0$。
- 随机抽取一个时间步 $t$。
- 生成一个随机噪声 $\epsilon$(形状和 $x_0$ 一样)。
- 用重参数化公式得到 $x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon$。
- 将 $xt$ 和 $t$ 输入到神经网络 $\epsilon\theta$ 中,要求网络预测出我们之前加入的噪声 $\epsilon$。
损失函数(简化版): $$\mathcal{L} = \mathbb{E}_{x0, \epsilon, t} \left[ || \epsilon - \epsilon\theta(x_t, t) ||^2 \right]$$
直观理解:网络学会了“看到”图片中的噪声残留,并输出它估计的噪声,我们让它最小化与真实噪声的均方误差。
采样 (生成新图片)
训练完成后,我们有了一个能预测噪声的神经网络 $\epsilon_\theta$,现在生成新图片:
- 初始化:从标准高斯分布中抽取一个随机噪声 $x_T \sim \mathcal{N}(0, I)$。
- 迭代去噪:从 $t = T$ 到 $t = 1$,依次进行:
- 用网络预测 $xt$ 中的噪声:$\epsilon\theta(x_t, t)$。
- 通过公式反推出 $x{t-1}$:
$$x{t-1} = \frac{1}{\sqrt{\alpha_t}} \left(x_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}t}} \epsilon\theta(x_t, t) \right) + \sigma_t z$$
- $\sigma_t z$ 是一个随机噪声项(当 $t>1$ 时加入,增加多样性;$t=1$ 时不加,为了最终结果更稳定)。
- $z \sim \mathcal{N}(0, I)$。
- 输出:最终得到 $x_0$,即生成的清晰图片。
为什么 DDPM 如此强大?
- 训练稳定:相比GAN(生成对抗网络)中的对抗训练(让生成器和判别器相互博弈),DDPM的训练目标是最小化简单的均方误差,无需平衡两个网络,极其稳定。
- 模式覆盖好:DDPM学习整个数据分布,不容易出现“模式坍塌”(即只生成少数几种结果)。
- 高质量样本:以生成图像的多样性和保真度著称。
主要缺点
- 采样速度极慢:这是最致命的缺点,它需要连续迭代成百上千次(T通常是1000)才能生成一张图,相比之下,GAN通常一步生成。
- 改进:后来提出了DDIM(去噪扩散隐式模型)、DPM-Solver等加速采样方法,将步数从1000降低到10-50步。
- 计算成本高:训练和采样都需要大量的计算资源(尤其是硬内存和时间)。
- 对超参数敏感:噪声计划($\beta_t$的设计)对结果影响很大,需要精心调整。
总结表
| 特性 | 描述 |
|---|---|
| 核心思想 | 向数据逐步加噪声(固定前向),然后学习逐步去噪(参数化反向)。 |
| 关键技巧 | 重参数化(一步到位得到任意时刻噪声)、预测噪声(而非直接预测均值)。 |
| 训练目标 | L2 损失 —— 最小化预测噪声与真实噪声的差异。 |
| 优势 | 训练稳定、生成质量高、模式覆盖广。 |
| 劣势 | 采样速度慢、计算成本高。 |
| 典型应用 | 图像生成(DALL-E 2, Imagen, Stable Diffusion)、音频生成、分子生成。 |
DDPM通过训练一个神经网络去预测(并移除)添加在图片上的高斯噪声,从而掌握了从纯随机噪声中一步步生成真实、清晰图像的能力。
希望这个梳理能帮你理解DDPM!后续如果要深入了解加速采样的DDIM,或者条件生成的引导控制,随时可以继续交流。