1857 字
9 分钟
扩散模型笔记-1:DDPM 和 DDIM

引言#

过去几年,生成模型领域经历了一轮范式更替。GAN 在 2016-2020 年间主导了视觉生成,但其对抗训练的不稳定性、模式崩塌问题始终是结构性短板。Autoregressive 模型凭借 scaling law 在语言建模上取得了统治地位,并逐步向视觉领域渗透。与此同时,以 DDPM 为代表的扩散模型以简单稳定的训练目标和 FID 领先的生成质量在图像、视频、音频等领域迅速成为 SOTA,Stable Diffusion、Sora 等系统均以此为基座。

然而,DDPM 的生成速度是其最大瓶颈——一条完整的 Markov 链(通常 1000 步)使采样成本远超 GAN 或 AR 的单前向推理。DDIM 正是在此背景下提出的解决方案:通过将扩散过程重新解释为非马尔可夫过程族,在无需重新训练的条件下大幅加速采样,并赋予生成过程确定性和可逆性。


DDPM:去噪扩散概率模型#

DDPM 就是通过对数据不断加噪成为真实噪声(通常是高斯噪声),和从真实噪声不断去噪还原成原始数据的过程中,学习到去噪的过程,进而就能对真实噪声进行随机采样,还原(生成)成各式各样的数据。

前向过程(扩散过程)#

给定真实数据分布 x0q(x0)x_0 \sim q(x_0),前向过程定义为一个固定的 Markov 链,逐步向数据中添加高斯噪声:

q(xtxt1):=N(xt;1βtxt1, βtI)q(x_t | x_{t-1}) := \mathcal{N}\left(x_t; \sqrt{1-\beta_t}\, x_{t-1},\ \beta_t I\right)

其中 βt(0,1)\beta_t \in (0,1) 是预设的噪声调度表。整个前向过程的联合分布为:

q(x1:Tx0):=t=1Tq(xtxt1)q(x_{1:T} | x_0) := \prod_{t=1}^T q(x_t | x_{t-1})

一个重要的性质是:我们可以一步到位地从 x0x_0 采样任意时刻 ttxtx_t。令 αt:=1βt\alpha_t := 1 - \beta_tαˉt:=s=1tαs\bar\alpha_t := \prod_{s=1}^t \alpha_s,则:

q(xtx0)=N(xt;αˉtx0, (1αˉt)I)q(x_t | x_0) = \mathcal{N}\left(x_t; \sqrt{\bar\alpha_t}\, x_0,\ (1 - \bar\alpha_t) I\right)

这意味着 xtx_t 可以写成:

xt=αˉtx0+1αˉtϵ,ϵN(0,I)x_t = \sqrt{\bar\alpha_t}\, x_0 + \sqrt{1 - \bar\alpha_t}\, \epsilon,\quad \epsilon \sim \mathcal{N}(0, I)

TT 足够大时,αˉT0\bar\alpha_T \to 0,从而 q(xTx0)N(0,I)q(x_T | x_0) \approx \mathcal{N}(0, I),满足先验假设。

反向过程#

反向过程的目标是学习一个参数化的 Markov 链 pθ(x0:T)p_\theta(x_{0:T}) 来近似前向过程的后验。反向过程也建模为高斯转移:

pθ(xt1xt):=N(xt1;μθ(xt,t), Σθ(xt,t))p_\theta(x_{t-1} | x_t) := \mathcal{N}\left(x_{t-1}; \mu_\theta(x_t, t),\ \Sigma_\theta(x_t, t)\right)

起点为 p(xT)=N(0,I)p(x_T) = \mathcal{N}(0, I)

变分下界与训练目标#

模型通过最大化对数似然的变分下界(ELBO)来训练:

logpθ(x0)Eq(x1:Tx0)[logpθ(x0:T)q(x1:Tx0)]\log p_\theta(x_0) \geq \mathbb{E}_{q(x_{1:T}|x_0)}\left[\log\frac{p_\theta(x_{0:T})}{q(x_{1:T}|x_0)}\right]

展开后得到三个部分:

  1. 重构项L0=logpθ(x0x1)L_0 = -\log p_\theta(x_0 | x_1)
  2. 去噪匹配项Lt=DKL(q(xt1xt,x0)pθ(xt1xt)),1<tTL_t = D_{KL}(q(x_{t-1} | x_t, x_0) \parallel p_\theta(x_{t-1} | x_t)),\quad 1 < t \leq T
  3. 先验匹配项LT=DKL(q(xTx0)p(xT))L_T = D_{KL}(q(x_T | x_0) \parallel p(x_T))

关键点在于:后验分布 q(xt1xt,x0)q(x_{t-1} | x_t, x_0) 有闭式解。利用贝叶斯公式:

q(xt1xt,x0)=N(xt1;μ~t(xt,x0), β~tI)q(x_{t-1} | x_t, x_0) = \mathcal{N}\left(x_{t-1}; \tilde\mu_t(x_t, x_0),\ \tilde\beta_t I\right)

其中:

μ~t(xt,x0)=αt(1αˉt1)1αˉtxt+αˉt1βt1αˉtx0\tilde\mu_t(x_t, x_0) = \frac{\sqrt{\alpha_t}\,(1 - \bar\alpha_{t-1})}{1 - \bar\alpha_t}\, x_t + \frac{\sqrt{\bar\alpha_{t-1}}\,\beta_t}{1 - \bar\alpha_t}\, x_0

β~t=1αˉt11αˉtβt\tilde\beta_t = \frac{1 - \bar\alpha_{t-1}}{1 - \bar\alpha_t}\, \beta_t

参数化选择#

Ho et al. (2020) 做出了两个关键的设计决策:

决策一:固定方差。令 Σθ(xt,t)=σt2I\Sigma_\theta(x_t, t) = \sigma_t^2 I,其中 σt2=βt\sigma_t^2 = \beta_tβ~t\tilde\beta_t。实验表明两种选择效果相近。

决策二:预测噪声。将 μθ\mu_\theta 重新参数化为对噪声 ϵ\epsilon 的预测。利用 x0=(xt1αˉtϵ)/αˉtx_0 = (x_t - \sqrt{1 - \bar\alpha_t}\, \epsilon) / \sqrt{\bar\alpha_t},代入 μ~t\tilde\mu_t 并化简:

μθ(xt,t)=1αt(xtβt1αˉtϵθ(xt,t))\mu_\theta(x_t, t) = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{\beta_t}{\sqrt{1 - \bar\alpha_t}}\,\epsilon_\theta(x_t, t)\right)

最终的训练目标简化为:

Lsimple=Et,x0,ϵ[ϵϵθ(αˉtx0+1αˉtϵ, t)2]L_{\text{simple}} = \mathbb{E}_{t, x_0, \epsilon}\left[\left\|\epsilon - \epsilon_\theta(\sqrt{\bar\alpha_t}\, x_0 + \sqrt{1 - \bar\alpha_t}\, \epsilon,\ t)\right\|^2\right]

这一形式极其简洁:网络只需预测所添加的噪声 ϵ\epsilon

采样算法(DDPM)#

DDPM 的采样遵循反向 Markov 链,从 xTN(0,I)x_T \sim \mathcal{N}(0, I) 开始,逐步去噪:

xt1=1αt(xtβt1αˉtϵθ(xt,t))+σtz,zN(0,I)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,\quad z \sim \mathcal{N}(0, I)

其中 z=0z = 0t=1t = 1 时。

核心观察:DDPM 的采样过程是随机的——每步都注入新的噪声 zz。这使得采样过程必须走完全部 TT 步(通常 T=1000T = 1000)才能保证质量。


DDIM:去噪扩散隐式模型#

DDIM (Song et al., 2021) 的核心贡献是:将扩散模型重新解释为隐式模型(implicit model),从而支持在更少的采样步数下生成高质量样本

非马尔可夫前向过程#

DDIM 的关键洞察是:DDPM 的训练目标 LsimpleL_{\text{simple}} 实际上只依赖于边际分布 q(xtx0)q(x_t | x_0),而不依赖于联合分布 q(x1:Tx0)q(x_{1:T} | x_0)。这意味着:

我们可以构造不同的前向过程(具有不同的联合分布),只要它们共享相同的边际分布,训练出的模型就可以互换使用。

DDIM 定义了一类非马尔可夫前向过程族 QσQ_\sigma。其关键性质是:

qσ(xtx0)=N(αˉtx0, (1αˉt)I)q_\sigma(x_t | x_0) = \mathcal{N}\left(\sqrt{\bar\alpha_t}\, x_0,\ (1 - \bar\alpha_t)I\right)

边际分布与 DDPM 完全一致

反向过程#

在 DDIM 的框架下,给定 xtx_tx0x_0,可以构造如下反向条件分布:

qσ(xt1xt,x0)=N(αˉt1x0+1αˉt1σt2 xtαˉtx01αˉt, σt2I)q_\sigma(x_{t-1} | x_t, x_0) = \mathcal{N}\left(\sqrt{\bar\alpha_{t-1}}\, x_0 + \sqrt{1 - \bar\alpha_{t-1} - \sigma_t^2}\ \frac{x_t - \sqrt{\bar\alpha_t}\, x_0}{\sqrt{1 - \bar\alpha_t}},\ \sigma_t^2 I\right)

其中 σt0\sigma_t \geq 0 是一个自由参数,控制反向过程的随机性。

验证一下:当 σt2=β~t=1αˉt11αˉtβt\sigma_t^2 = \tilde\beta_t = \frac{1 - \bar\alpha_{t-1}}{1 - \bar\alpha_t}\beta_t 时,该分布退化为 DDPM 的后验 q(xt1xt,x0)q(x_{t-1} | x_t, x_0)。因此 DDPM 是 DDIM 框架的一个特例

采样算法#

利用预测噪声的替换 x0=(xt1αˉtϵθ(xt,t))/αˉtx_0 = (x_t - \sqrt{1 - \bar\alpha_t}\, \epsilon_\theta(x_t, t)) / \sqrt{\bar\alpha_t},DDIM 的采样步骤为:

xt1=αˉt1(xt1αˉtϵθ(xt,t)αˉt)+1αˉt1σt2 ϵθ(xt,t)+σtϵtx_{t-1} = \sqrt{\bar\alpha_{t-1}}\left(\frac{x_t - \sqrt{1 - \bar\alpha_t}\, \epsilon_\theta(x_t, t)}{\sqrt{\bar\alpha_t}}\right) + \sqrt{1 - \bar\alpha_{t-1} - \sigma_t^2}\ \epsilon_\theta(x_t, t) + \sigma_t \epsilon_t

其中 ϵtN(0,I)\epsilon_t \sim \mathcal{N}(0, I)

确定性采样(DDIM 的特例)#

σt=0\sigma_t = 0 时,反向过程变为完全确定性

xt1=αˉt1(xt1αˉtϵθ(xt,t)αˉt)+1αˉt1 ϵθ(xt,t)x_{t-1} = \sqrt{\bar\alpha_{t-1}}\left(\frac{x_t - \sqrt{1 - \bar\alpha_t}\, \epsilon_\theta(x_t, t)}{\sqrt{\bar\alpha_t}}\right) + \sqrt{1 - \bar\alpha_{t-1}}\ \epsilon_\theta(x_t, t)

这个确定性的映射 xtxt1x_t \mapsto x_{t-1} 使得整个采样过程是可逆的,从而可以将 x0x_0 编码回隐空间 xTx_T。这正是 DDIM 被称为”隐式模型”的原因。

加速采样#

由于训练好的模型可以在不同的前向过程之间共享,DDIM 可以在训练好的模型上直接进行加速采样(无需重新训练)。具体做法是:

  1. 从原始的 TT 步中均匀选取一个子序列 {t1,t2,,tS}\{t_1, t_2, \dots, t_S\},其中 t1=T,tS=1t_1 = T, t_S = 1
  2. 按此子序列执行反向步骤
xts1=αˉts1(xts1αˉtsϵθ(xts,ts)αˉts)+1αˉts1σts2 ϵθ(xts,ts)+σtsϵtsx_{t_{s-1}} = \sqrt{\bar\alpha_{t_{s-1}}}\left(\frac{x_{t_s} - \sqrt{1 - \bar\alpha_{t_s}}\, \epsilon_\theta(x_{t_s}, t_s)}{\sqrt{\bar\alpha_{t_s}}}\right) + \sqrt{1 - \bar\alpha_{t_{s-1}} - \sigma_{t_s}^2}\ \epsilon_\theta(x_{t_s}, t_s) + \sigma_{t_s} \epsilon_{t_s}

实验表明,即使采样步数 SS 减少到 1010-5050 步,DDIM 仍能保持较高的生成质量。


DDPM 与 DDIM 的对比#

特性DDPMDDIM
前向过程Markov 链非 Markov 过程族
反向过程随机 (每步注入噪声)可确定可随机 (σ 控制)
采样步数需完整 T 步 (通常 1000)可大幅减少 (10-100 步)
采样质量高 (代价是慢)相近 (步数足够时)
可逆性σ=0 时可逆
训练目标LsimpleL_{\text{simple}} (预测噪声)完全相同 (复用权重)
隐空间解释有 (确定映射 x0xTx_0 \leftrightarrow x_T)

理论联系#

DDPM 与 DDIM 的关系可以沿两条轴线理解:

  • σt0\sigma_t \to 0:DDIM 退化为确定性采样,隐式模型成立,支持加速和可逆插值。但确定性也意味着失去了 DDPM 中随机性带来的多样性增益。
  • σt=(1αˉt1)/(1αˉt)βt\sigma_t = \sqrt{(1 - \bar\alpha_{t-1})/(1 - \bar\alpha_t) \cdot \beta_t}:DDIM 恢复为 DDPM。

Song et al. 进一步证明,σt\sigma_t 的取值实际上对应了反向随机微分方程中扩散系数的一个自由选择——不同的 σt\sigma_t 对应了同一个正向 SDE 的不同反向表示。这一连接为后续的分数扩散 SDE (Score SDE) 框架奠定了基础。

扩散模型笔记-1:DDPM 和 DDIM
https://laplacan.icu/posts/diffusion/diffusion-note-1/
作者
LapLacan
发布于
2026-06-10
许可协议
CC BY-NC-SA 4.0