DDIM 是如何加速 DDPM 的?

DDIM 是如何加速 DDPM 的?

1. 核心结论

DDIM 加速 DDPM 的核心思路可以概括为一句话:

DDPM 必须一步一步采样,而 DDIM 可以跳步采样。

DDPM 通常需要从 T=1000 一步步采样到 T=0,每一步都要调用一次神经网络,所以速度很慢。

DDIM 改变了采样方式。它不再严格按照 t -> t-1 的方式走,而是可以从 t 直接跳到更早的时间步,比如 t-20t-50。因此原本 1000 步的采样过程,可以减少到 50 步甚至更少。

2. DDPM 为什么不能随便跳步?

DDPM 的反向采样过程是一个马尔可夫链:

也就是说,在 DDPM 里,模型每一步只定义了:

如果想从 ,理论上必须先经过

所以 DDPM 的采样过程被锁定为:

它不能直接从 跳到 ,因为 DDPM 的反向过程本身没有定义这种大步跳跃。

3. DDIM 的突破:先预测 x0,再跳到任意时间步

DDIM 的关键思路是:

不要只想着从当前时刻走到下一个时刻,而是先从当前带噪图像估计出原始图像 x0,再从这个 x0 重新加噪到目标时间步。

也就是说,DDIM 的一步采样大致分成两步:

其中 t' 可以是 t-1,也可以是 t-20,甚至可以跳得更远。

这就是 DDIM 能跳步的原因。

4. 关键公式:前向加噪公式

DDPM 和 DDIM 都依赖同一个前向加噪公式:

这个公式的含义是:

其中:

  • 是原始干净图像;
  • 是第 步的带噪图像;
  • 是标准正态噪声;
  • 控制原图保留多少;
  • 控制噪声加入多少。

t 很小时, 接近 1:

图像还比较干净。

t 很大时, 接近 0:

图像几乎变成纯噪声。

5. 是什么?

是一组预先计算好的数。

首先定义一组噪声强度参数

通常它们会从很小的值逐渐变大,例如:

然后定义:

再把它们累乘起来:

所以 会随着 增大而逐渐变小。

直觉上:

  • t 越大, 越小,原图信息越少,噪声越多。
  • t 越小, 越大,原图信息越多,噪声越少。

6. 为什么预测噪声后可以得到 x0?

因为前向公式是一个线性方程:

在采样时, 是已知的, 也是已知的。

神经网络会预测噪声

于是可以直接把公式变形,解出对原图的估计:

这一步不需要额外训练模型,只是代数运算。

不过这个 只是一个估计值。因为神经网络预测的噪声不一定完全准确,所以它不是完美的原图,而是“粗略还原”出来的原图。


7. DDIM 是怎么跳步的?

DDIM 拿到 之后,可以直接构造任意更早时间步的图像。

公式可以写成:

其中 t' < t

如果选择:,那就是小步采样。

如果选择:,那就是跳步采样。

所以 DDIM 的采样逻辑可以理解为:

text
1
2
3
4
5
6
7
当前带噪图像 x_t

模型预测噪声 epsilon_theta

反推出原图估计 x0_pred

从 x0_pred 重新加噪到更早的时间步 x_{t'}

这就是 DDIM 能够从 t 直接跳到 t-20 的原因。


DDIM 是如何加速 DDPM 的?
https://d4wnnn.github.io/2026/06/06/Notion/DDIM 是如何加速 DDPM 的?/
作者
D4wn
发布于
2026年6月6日
许可协议