图像生成(二)——扩散模型(DDPM)与去噪扩散隐式模型(DDIM)

我们将深入拆解扩散模型的两大奠基之作:DDPM(Denoising Diffusion Probabilistic Models,去噪扩散概率模型) 与 DDIM(Denoising Diffusion Implicit Models,去噪扩散隐式模型)。我们将从生成模型的历史困境出发,一步步揭示 DDPM 是如何打破僵局的,以及 DDIM 是如何以优雅的数学直觉解决 DDPM 的缺陷,最终让扩散模型真正走向实用的。

1. DDPM 之前的“黑暗时代”——生成模型的两难困境

在扩散模型爆发之前,深度生成模型主要由两大巨头统治:GAN(生成对抗网络)VAE(变分自编码器)。然而,它们各自带着难以克服的结构性缺陷:

  1. GAN 的困境(质量高但极不稳定): GAN 通过生成器和判别器的博弈来生成图像。虽然它能生成极其锐利、高质量的图像,但它的训练过程极度不稳定。“模式崩溃”(Mode Collapse):GAN 倾向于只生成它最有把握的几类图像,缺乏对整个真实数据分布的覆盖能力(即缺乏多样性,Recall 低)。此外,GAN 由于缺乏明确的似然函数(Likelihood)评估,很难进行严谨的概率建模。
  2. VAE 的困境(稳定但极其模糊): VAE 通过编码器将数据压缩到潜空间,再由解码器还原,目标是最大化数据的变分下界(ELBO)。VAE 训练极其稳定,且理论极其优美。但问题在于,VAE 假设了过于简单的先验分布(通常是标准高斯分布),在重建时通常使用 MSE 损失,这导致生成的图像总是缺乏高频细节,极其模糊(Blurry)
  3. 基于流的模型(Flows)与自回归模型(Autoregressive): 前者对网络架构限制严(必须可逆),后者生成速度慢(必须逐像素生成)。

为什么会有这些问题?

本质上,传统的生成模型试图“一步到位”地将一个简单的随机噪声映射为极其复杂的高维图像分布。这种跨度太大了,对于神经网络来说,一次性学好这个极其复杂的非线性映射,要么容易学偏(GAN),要么只能学个大概的平均值(VAE)。


2. DDPM 破局——将“一步登天”化为“百步穿杨”

2020年,DDPM(Denoising Diffusion Probabilistic Models) 横空出世。它解决上述问题的核心思想是:既然一步到位太难,那我们就把它拆分成1000个极其微小的步骤。

2.1 DDPM 是如何工作的?本质原理是什么?

DDPM 包含两个过程:前向加噪过程(Forward Process)逆向去噪过程(Reverse Process)

前向过程(破坏图像):
DDPM 定义了一个马尔可夫链(Markov Chain),在 $T$ 步内(通常 $T=1000$),逐步向原始干净图像 $x_0$ 中添加微小的高斯噪声,直到图像完全变成一团纯噪声 $x_T$。
每一步的转移概率定义为:

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

根据马尔可夫性质和高斯分布的叠加性,我们可以直接写出任意时刻 $t$ 时的边缘分布(不需要一步步算):

$$q(x_t|x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t}x_0, (1 - \bar{\alpha}_t)I)$$

(其中 $\alpha_t = 1 - \beta_t$,$\bar{\alpha}_t = \prod_{s=1}^t \alpha_s$)

逆向过程(生成图像):
生成过程就是前向过程的逆转。如果我们知道 $q(x_{t-1}|x_t)$,我们就能从纯噪声 $x_T \sim \mathcal{N}(0, I)$ 开始,一步步去噪,最终还原出 $x_0$。 虽然真实的后验 $q(x_{t-1}|x_t)$ 无法直接计算,但在 $\beta_t$ 极小的情况下,这个逆过程在数学上也被证明是一个高斯分布。因此,我们可以用一个神经网络 $p_\theta$ 去拟合它:

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

2.2 DDPM 的神来之笔:目标函数的极致简化

在训练时,DDPM 同样使用优化变分下界(VLB)的思路,将多步预测转化为多个 KL 散度的和:

$$L_{t-1} = D_{KL}(q(x_{t-1}|x_t, x_0) || p_\theta(x_{t-1}|x_t))$$

真实的后验均值其实是可以由 $x_0$ 和 $x_t$ 推导出来的:

$$\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$ 或者预测均值 $\tilde{\mu}_t$,不如让神经网络去预测这一步添加的“噪声 $\epsilon$”
经过精妙的推导,极其复杂的 VLB 被化简为了一个极其简单的均方误差(MSE)损失函数 $L_{simple}$

$$L_{simple}(\theta) := \mathbb{E}_{t, x_0, \epsilon} \left[ ||\epsilon - \epsilon_\theta(\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}\epsilon, t)||^2 \right]$$

2.3 为什么 DDPM 能够完美解决前人的问题?

  • 解决 GAN 的不稳定与模式崩溃: DDPM 优化的是明确的变分下界(虽然是简化版),没有判别器的对抗博弈,训练就是一个简单的 MSE 回归问题,极其稳定。同时它作为似然模型,能极好地覆盖所有数据分布(Recall 高),不会遗漏模式。
  • 解决 VAE 的模糊问题: DDPM 将“大跨度”的生成拆分成了 1000 个极其简单的“微小去噪”任务。而且,DDPM 的简化目标函数 $L_{simple}$ 实际上等价于多尺度的去噪分数匹配(Denoising Score Matching)。它不再强求拟合一个完美的平滑潜空间,而是学习引导噪声走向真实数据流形的梯度方向,因此能生成极其锐利、充满高频细节的图像。

3. DDPM 的“致命阿喀琉斯之踵”

尽管 DDPM 生成质量惊人,但它有一个致命的缺陷:

为什么慢?为什么DDPM做不到加速?

在 DDPM 中,生成过程被严格定义为马尔可夫扩散过程的逆转。马尔可夫链的特性是,当前状态 $x_{t-1}$ 严格依赖于上一个状态 $x_t$。
在训练时,网络可以在任意 $t$ 步加噪;但在采样(生成)时,你必须从 $T=1000$ 开始,一步一步地迭代到 $t=0$
对于高分辨率图像,生成单张图片可能需要经过 1000 次庞大的 U-Net 前向传播。在一张 2080Ti 上生成 5 万张图甚至需要几十、几百个小时,而 GAN 只需要不到一分钟。
DDPM 无法跳步: 如果强行跳步(比如跨越几十步去噪),就破坏了马尔可夫链“相邻两步之间是高斯分布”的数学假设,生成的图像质量会立刻崩塌。


4. DDIM 的降维打击——重构底层逻辑,实现几十倍加速

为了解决采样速度问题,2021 年,DDIM(Denoising Diffusion Implicit Models) 给出了一个解法。

4.1 DDIM 的核心改进与本质原理

DDIM 的作者敏锐地发现了一个事实:DDPM 的训练目标 $L_{simple}$ 实际上根本不依赖于前向过程是否是马尔可夫链。 回看 $L_{simple}$,它只依赖于边缘分布 $q(x_t|x_0)$,而完全没有用到联合分布 $q(x_{1:T}|x_0)$。

本质原理(非马尔可夫前向过程):
这意味着,只要我们构造出一个新的前向过程,保证它的边缘分布 $q(x_t|x_0)$ 依然是 $\mathcal{N}(x_t; \sqrt{\bar{\alpha}_t}x_0, (1 - \bar{\alpha}_t)I)$,那么我们就完全可以共用 DDPM 已经训练好的那个预测噪声的网络 $\epsilon_\theta$。

于是,DDIM 大胆地抛弃了马尔可夫假设,定义了一个全新的、包含参数 $\sigma$ 的非马尔可夫推断过程 $q_\sigma(x_{t-1}|x_t, x_0)$。在这个新过程中,给定 $x_0$ 和 $x_t$,推导 $x_{t-1}$ 的公式被改写。
随之而来的,是全新的逆向生成步更新公式:

$$x_{t-1} = \sqrt{\alpha_{t-1}} \left( \frac{x_t - \sqrt{1 - \alpha_t}\epsilon_\theta(x_t)}{\sqrt{\alpha_t}} \right) + \sqrt{1 - \alpha_{t-1} - \sigma_t^2} \cdot \epsilon_\theta(x_t) + \sigma_t \epsilon_t$$

在这个公式中,$\sigma_t$ 是一个我们可以自由控制的超参数:

  • 当 $\sigma_t = \sqrt{(1 - \alpha_{t-1}) / (1 - \alpha_t)} \sqrt{1 - \alpha_t / \alpha_{t-1}}$ 时,这就是原汁原味的 DDPM
  • 当 $\sigma_t = 0$ 时,公式的最后一项(随机噪声项)完全消失。这意味着,只要初始噪声 $x_T$ 给定,整个生成过程 $x_T \rightarrow x_0$ 变成了完全确定性(Deterministic)的。这就是所谓的隐式模型(Implicit Model),也就是 DDIM 名字的由来。

4.2 为什么 DDIM 可以做到几十倍加速?

因为 DDIM 不再被马尔可夫链的严苛假设所绑架。
在 DDPM 中,必须走完 1000 步,因为每一步的方差都必须匹配严格的扩散轨迹。
而在 DDIM 中,既然生成过程变成了确定性的积分(本质上是一个神经常微分方程 Neural ODE),我们完全可以在时间序列 $[1, T]$ 中任意抽取一个极短的子序列 $\tau$(比如只抽 10, 20, 50 步)进行采样。 这就相当于用大步长去解常微分方程(Euler method)。DDIM 证明了,即便我们只用 20 到 50 步,就能生成质量与 DDPM 走 1000 步几乎媲美的图像,实现了 10 倍到 50 倍的直接加速,而且完全不需要重新训练模型。

4.3 为什么 DDIM 还能做到 DDPM 做不到的“语义插值”和“精准重建”?

因为 DDPM 的生成过程充满了 $\sigma_t \epsilon_t$ 这样的随机噪声注入,同一个初始噪声 $x_T$,每次采样出来的图像都完全不同。
DDIM 是确定性的($\sigma_t=0$)

  • 一致性(Consistency): 无论你用 20 步、50 步还是 1000 步去采样,只要起始噪声 $x_T$ 一样,DDIM 总是能生成具有极高相似度和相同高级语义特征的同一张图像。
  • 语义插值(Semantic Interpolation): 因为这种确定性,DDIM 的潜空间 $x_T$ 直接编码了图像的语义结构。我们可以取两个生成的噪声 $x_T^{(0)}$ 和 $x_T^{(1)}$,通过球面线性插值(Slerp),在潜空间中平滑过渡。解码出来的图像,会呈现出极其丝滑、有意义的语义演变(例如一只狗平滑地变成另一只狗),这在充满随机性的 DDPM 中是绝不可能做到的。
  • 编码与完美重建(Reconstruction): 借助常微分方程的对称性,DDIM 甚至可以将一张真实的图片 $x_0$,顺着确定性的轨迹逆向编码成纯噪声 $x_T$,然后再完美无缺地重新解码回 $x_0$(误差极低),让扩散模型拥有了媲美 Normalizing Flows 的能力。

5. 总结

DDPM 是黑暗中的火把,它指明了用“马尔可夫降噪链”去拟合复杂分布的道路,用极简的 $L_{simple}$ 跨越了GAN和VAE难以逾越的鸿沟。
DDIM 则是真正的工业级革命,它通过极其深邃的数学洞察,剥离了马尔可夫的枷锁,将随机的扩散过程转化为确定性的神经 ODE。这不仅带来了几十倍的速度飞跃,更赋予了扩散模型完美的潜空间控制力。

正是因为 DDPM 的奠基和 DDIM 在采样速度上的解放,才有了后来我们在 Stable Diffusion、Midjourney 等大模型上体会到的秒级出图体验。

L'amor che move il sole e l'altre stelle.