← 返回题目列表

DDIM 是什么?扩散模型采样为什么慢,如何加速?

高频 中等 第 7 / 25 题 更新于 2026/07/28
DDIM采样加速扩散模型蒸馏

简化版

扩散模型采样慢,是因为反向去噪要一步步跑几十上百次网络。DDIM(Denoising Diffusion Implicit Models) 是最经典的加速采样器:它把 DDPM 的随机反向过程改造成非马尔可夫、确定性的过程,允许跳步采样——训练照旧用 1000 步,采样时只挑其中 20–50 步就能出高质量图,且确定性采样让同一噪声可复现、可插值。更进一步的加速还有 DPM-Solver(高阶常微分方程求解器)和蒸馏类方法(LCM、Turbo,几步甚至一步出图)。

详细版

慢的根源

DDPM 采样是马尔可夫链,x_{t-1} 只能由 x_t 得到,必须逐步从 T 走到 0,且每步都要一次 U-Net 前向。T=1000 就意味着 1000 次前向,非常慢。

DDIM 的两个改造

  1. 非马尔可夫化 + 确定性:DDIM 重新构造了一族反向过程,它们和 DDPM 有相同的训练目标(所以能直接复用训练好的网络,不用重训),但反向不再依赖「逐步随机」。把随机项系数设为 0 时,采样变成完全确定的。
  2. 跳步采样:正因为不再是逐步马尔可夫,DDIM 可以在时间上取一个稀疏子序列(如从 1000 步里取 50 步)直接跳着走,大幅减少前向次数。

DDIM 单步(确定性)

x₀_pred = ( x_t − √(1-ᾱ_t)·ε_θ(x_t,t) ) / √ᾱ_t         # 先估计干净图
x_{t-1} = √ᾱ_{t-1}·x₀_pred + √(1-ᾱ_{t-1})·ε_θ(x_t,t)   # 再按下一步的噪声水平重构

DDIM 的额外好处

  • 确定性 → 可复现:固定初始噪声就固定输出。
  • 可做潜空间插值:两个噪声之间插值能得到语义平滑过渡的图。
  • 更少步数仍高质量:20–50 步接近 1000 步 DDPM 的质量。

更强的加速谱系

  • DPM-Solver / DPM-Solver++:把反向过程看成常微分方程(ODE),用高阶数值解法,10–20 步出图。
  • 蒸馏 / 一致性模型(Consistency Models、LCM、SDXL-Turbo):把多步过程蒸馏进网络,1–4 步生成,逼近实时。

完整版教学

记忆钩子:扩散模型题沿着加噪学会还原、采样逐步去噪、条件控制方向、速度质量取舍这条线讲,答案就不会散。

一、把慢的原因说透

扩散采样的耗时 ≈ 步数 × 单步网络前向成本。要加速只有两条路:减少步数降低单步成本

  • 降低单步成本 → Latent Diffusion(在小的潜空间跑)、更轻的网络。
  • 减少步数 → DDIM、DPM-Solver、蒸馏。

DDPM 之所以被迫用很多步,是因为它的反向是马尔可夫链:每一步的推导都假设「相邻两步噪声差很小」,步子迈大了近似就崩,图就糊。所以想跳步,必须先摆脱「逐步马尔可夫」这个枷锁——这正是 DDIM 做的事。

二、DDIM 的关键:训练目标不变,采样过程可换

DDIM 最精妙的地方在于一个观察:DDPM 的训练损失 L_simple 只依赖前向的边缘分布 q(x_t|x₀),并不依赖前向是不是马尔可夫。 也就是说,只要保证「任意时刻 x_t 的分布」和 DDPM 一致,反向过程可以另设计一族。

DDIM 就构造了这样一族非马尔可夫的前向/反向过程,它们共享同一个 q(x_t|x₀),因此:

  • 可以直接用 DDPM 训练好的网络,无需重训(这点非常重要,是它能即插即用的原因);
  • 反向过程里有一个可调的随机性参数 η:η=1 退化回 DDPM(随机),η=0 变成确定性 DDIM

三、逐句读懂 DDIM 采样公式

DDIM(η=0)单步分两小步理解:

第一步:从当前带噪图和预测噪声,反解出对干净图的估计
   x₀_pred = ( x_t − √(1-ᾱ_t)·ε_θ(x_t,t) ) / √ᾱ_t

第二步:按"下一个时间步 s 的噪声水平"重新组装
   x_s = √ᾱ_s·x₀_pred + √(1-ᾱ_s)·ε_θ(x_t,t)

直觉:先大胆猜出最终的干净图 x₀_pred,再把它”退回”到目标噪声水平。因为这里 s 可以不是 t-1,而是任意更小的时间步,所以能跳步。整个过程没有随机项(η=0),故确定。

四、确定性带来的三个实用能力

  1. 可复现:固定 x_T 种子就固定结果,方便调试和产品化。
  2. 语义插值:对两张图各自的初始噪声做球面插值(slerp),确定性采样会给出语义平滑过渡的中间图(如脸 A 渐变到脸 B)。DDPM 的随机性做不到这种干净插值。
  3. 图像编辑/反演(inversion):确定性过程可以近似「把一张真实图反推回它的初始噪声」(DDIM inversion),再改条件重新生成,实现基于真实图的编辑。

五、加速方法全景对比

方法思路典型步数是否需重训
DDPM随机马尔可夫逐步1000
DDIM非马尔可夫、确定性、跳步20–50否(复用)
DPM-Solver++把反向当 ODE,高阶数值解10–20否(复用)
蒸馏(Progressive/Guided)学生网络学多步的合并4–8是(蒸馏)
一致性模型 / LCM学”任意点直接映射到 x₀”1–4是(蒸馏/专训)
对抗蒸馏(SDXL-Turbo/ADD)蒸馏+GAN 判别器保锐利1–4

一条演进主线:DDIM/DPM-Solver 靠”更聪明地解同一个反向过程”来减步(免重训);蒸馏/一致性模型靠”重新训练网络学会大步跳”来把步数压到个位数(需重训)。

六、常见误区与追问

  • 误区:DDIM 要重新训练模型。 不用,它复用 DDPM 训好的网络,只改采样过程。
  • 误区:步数越少越好。 步数太少(如 DDIM 用 5 步)质量会下降;每种采样器都有质量/速度的权衡点。
  • 追问:DDIM 为什么能跳步而 DDPM 不能? 因为 DDPM 反向是逐步马尔可夫、依赖相邻步小噪声差的近似;DDIM 用非马尔可夫构造摆脱了这个约束。
  • 追问:确定性采样牺牲了什么? 牺牲了每次采样的随机多样性(同噪声必同图),但换来可复现、可插值、可编辑。要多样性可调 η>0 或换初始噪声。
  • 追问:LCM/Turbo 为什么能一步出图? 它们通过蒸馏/一致性训练,让网络学会「从任意噪声点直接预测干净图」,把上百步的迭代压缩进一次前向。

七、加强记忆

DDIM 记「同训练、换采样、能跳步、可确定」四点:它和 DDPM 训练目标一致(复用网络不重训),把反向改成非马尔可夫,η=0 时完全确定,于是能从 1000 步里挑 20–50 步跳着采样,还额外获得可复现、可插值、可反演编辑的能力。 加速的大图景是:DDIM/DPM-Solver「更会解」(免重训减到十几步)→ 蒸馏/一致性模型「学会大跳」(重训压到 1–4 步)。采样慢是扩散唯一的硬伤,而这条加速链正在把它一点点抹平。