0%

从 DDPM 到 DDIM 的演进推导

从 DDPM 到 DDIM 的演进推导:定义前向 -> 求解分布 -> 寻找反向步 -> 破除马尔可夫约束

为建立严密逻辑链条,系统总结与推导脉络如下:

一、核心 Motivation:从“物理模拟”到“数学加速”

(一)DDPM:定义游戏规则

  • 目标:学习反向马尔可夫链,将纯高斯噪声还原为数据。
  • 痛点:采样效率极低。反向推导严格依赖相邻时刻马尔可夫假设($x_{t - 1}$ 需由 $x_t$ 得到),生成图像需循环 1000 步,无法跳步。

(二)DDIM:打破“相邻”的枷锁

  • 核心改进动机
    • 加速采样:构建可“跳步”的采样公式(如从 $t = 100$ 直接跳到 $t = 50$ )。
    • 确定性映射:让初值噪声 $x_T$ 与生成图像 $x_0$ 一一对应,支持图像编辑(Inversion)。
  • 变与不变
    • 不变:训练目标(Objective)不变。DDIM 发现 DDPM 训练仅依赖边缘分布 $q(xt|x_0)$,可直接复用 DDPM 训练好的 $\epsilon\theta$ 模型。
    • 变化:前向过程假设改变。DDPM 假设前向为马尔可夫过程;DDIM 重新定义“非马尔可夫”前向过程,边缘分布与 DDPM 保持一致。

二、DDPM 核心推导:马尔可夫链的闭环

DDPM 推导分“前向加噪”和“反向去噪”两步。

(一)Step 1:前向过程(扩散)

  • 单步定义:给定 $x{t - 1}$,下一步 $x_t$ 增加少量噪声:
    $q(x_t | x
    {t - 1}) = \mathcal{N}(xt; \sqrt{1 - \beta_t}x{t - 1}, \beta_t\mathbf{I})$
  • 任意时刻推导:利用递归性质 + 重参数化技巧,直接写出 $x_t$ 关于 $x_0$ 的分布(令 $\alpha_t = 1 - \beta_t$):
    $x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}\epsilon, \quad \epsilon \sim \mathcal{N}(0, \mathbf{I})$
    这是扩散模型核心性质:已知原始数据,可直接采样任意时刻噪声图像。

(二)Step 2:反向过程(采样)

  • 核心难点:无法直接求 $q(x_{t - 1}|x_t)$。
  • 贝叶斯中转:利用贝叶斯公式 $q(x{t - 1}|x_t, x_0) = q(x_t|x{t - 1}, x0) \frac{q(x{t - 1}|x_0)}{q(x_t|x_0)}$,右边三项均为已知高斯分布。
  • 采样公式:代入高斯分布密度函数计算,求出 $q(x{t - 1}|x_t, x_0)$ 均值。因未知真实 $x_0$,模型 $\epsilon\theta$ 预测 $xt$ 噪声间接预测 $x_0$:
    $x
    {t - 1} = \frac{1}{\sqrt{\alphat}} \left( x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon\theta(x_t, t) \right) + \sigma_t z, \quad z \sim \mathcal{N}(0, \mathbf{I})$

三、DDIM 核心推导:重构前向概率流

DDIM 关键洞察:只要 $q(x_t|x_0)$ 不变,反向过程无需遵循马尔可夫链。

(一)Step 1:定义非马尔可夫前向过程

DDIM 构造含超参数 $\sigma_t$ 的通用分布形式:

$q\sigma(x{t - 1}|xt, x_0) = \mathcal{N}(x{t - 1}; \text{mean}, \sigma_t^2\mathbf{I})$

为保证边缘分布 $q(x_t|x_0)$ 与 DDPM 一致,均值项设计为三部分组合。

(二)Step 2:统一采样公式(核心结论)

基于上述构造,DDIM 推导出采样公式:
$x{t - 1} = \underbrace{\sqrt{\bar{\alpha}{t - 1}} \left( \frac{xt - \sqrt{1 - \bar{\alpha}_t}\epsilon\theta(xt, t)}{\sqrt{\bar{\alpha}_t}} \right)}{\text{预测的 } x0 \text{ 部分}} + \underbrace{\sqrt{1 - \bar{\alpha}{t - 1} - \sigmat^2} \cdot \epsilon\theta(xt, t)}{\text{指向 } xt \text{ 的修正方向}} + \underbrace{\sigma_t \epsilon_t}{\text{随机噪声}}$

(三)Step 3:动机的实现(为什么能加速?)

  • 跳步(Sub - sampling):DDPM 中 $x{t - 1}$ 依赖 $x_t$;DDIM 公式可将 $t - 1$ 替换为任意更小时刻 $\tau$,支持从 $x{1000}$ 直接推导 $x_{900}$,跳过中间步骤。
  • 确定性(DDIM 核心):令 $\sigma_t = 0$ 时,随机噪声项消失,$x_T$(纯噪声)确定则生成轨迹确定,扩散模型等价于求解常微分方程(ODE)。

四、总结:两者的本质差异对比

维度 DDPM DDIM
推导基石 马尔可夫链的贝叶斯推导 满足边缘分布一致性的非马尔可夫构造
采样公式 DDIM 中 $\sigma_t$ 取特定值的特例 泛化框架,调节 $\sigma_t$ 控随机性
数学形态 随机微分方程 (SDE) $\sigma_t = 0$ 时为常微分方程 (ODE)
实用价值 奠定生成质量,推理慢 开启快速采样与图像编辑大门

一些更详细的推导

这是一份经过严格数学逻辑梳理的 DDPM 与 DDIM 核心架构总结。我们不仅关注公式本身,更关注每一个公式背后的逻辑必然性。

1. DDPM 核心推导:变分下界($L_{vlb}$)的完整脉络

DDPM 的目标是最小化负对数似然 $-\log p\theta(x_0)$。由于直接计算边缘分布不可行,我们推导其变分上界(即变分下界 $L{vlb}$ 的负数)。

Step 1: 引入变分推断

利用 Jensen 不等式,将目标函数展开为路径上的联合分布:
$
-\log p\theta(x_0) \le \mathbb{E}{q(x{1:T}|x_0)} \left[ \log \frac{q(x{1:T}|x0)}{p\theta(x{0:T})} \right] = L{vlb}
$

Step 2: 展开与分解

根据马尔可夫链性质,$q(x{1:T}|x_0) = \prod{t=1}^T q(xt|x{t-1})$ 且 $p\theta(x{0:T}) = p(xT) \prod{t=1}^T p\theta(x{t-1}|x_t)$。

代入上式并利用贝叶斯公式 $q(xt|x{t-1}, x0) = \frac{q(x{t-1}|xt, x_0)q(x_t|x_0)}{q(x{t-1}|x_0)}$ 进行重组(此处省略项对消的代数过程):

  • $L_T$:前向扩散终点与先验噪声的距离,由于前向过程固定,该项为常数。
  • $L{t-1}$:核心训练项。它要求模型 $p\theta(x{t-1}|x_t)$ 去拟合以 $x_0$ 为条件的后验分布 $q(x{t-1}|x_t, x_0)$。

Step 3: 核心推导动机

为什么 $L_{t-1}$ 变得可计算了?

因为在给定 $x0$ 时,$q(x{t-1}|x_t, x_0)$ 具有闭式解(高斯分布)。通过计算两个高斯分布的 KL 散度,DDPM 将生成问题转化为了噪声预测问题:

$
L{simple} = \mathbb{E}{x0, \epsilon, t} \left[ | \epsilon - \epsilon\theta(x_t, t) |^2 \right]
$


2. DDIM 核心推导:基于“待定系数法”重构后验分布

DDIM 的核心洞察是:DDPM 的训练目标只依赖于边缘分布 $q(x_t|x_0)$

为什么只依赖边缘分布?
回顾 DDPM 的损失函数 $L{\text{simple}} = \mathbb{E}{x0, \epsilon} [| \epsilon - \epsilon\theta(xt, t) |^2]$,其中输入的 $x_t$ 是通过 $x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon$ 得到的。可以看出,计算 Loss 仅需知道 $t$ 时刻 $x_t$ 相对于 $x_0$ 的分布(即边缘分布),而不需要知道 $x_t$ 究竟是经过怎样的路径(是否通过马尔可夫链)生成的(后面有进一步解释)。
这意味着: 只要我们构造一个新的前向过程,保证其边缘分布与 DDPM 一致,就能直接复用训练好的 $\epsilon
\theta$ 模型,这为我们重新设计采样路径提供了理论自由度。

Step 1: 明确已知条件与约束

我们需要构造的分布必须满足以下两个核心约束(为了保证能复用 DDPM 训练好的模型):

  1. 边缘分布守恒:任意时刻 $t$,数据必须满足高斯分布:
  2. 时刻 $t-1$ 的一致性:同理,时刻 $t-1$ 也必须满足:

Step 2: 待定系数法构建 $x_{t-1}$

为了建立 $x_{t-1}$ 与 $x_t$ 的联系,我们观察到 $x_t$ 可以唯一确定当前时刻的累积噪声 $\epsilon_t$(在给定 $x_0$ 时):

我们可以假设生成的 $x{t-1}$ 是由三部分组成的线性组合:“信号部分” ($x_0$)、“已知噪声部分” ($\epsilon_t$) 和 “新引入的随机噪声” ($\epsilon{new}$)。

设定待定系数方程:

其中 $\epsilon_{new} \sim \mathcal{N}(0, \mathbf{I})$,$\sigma_t$ 是我们手动引入控制随机性的超参数。

求解系数 $C_1$ 和 $C_2$:
我们要让上式满足 Step 1 中的边缘分布定义 $x{t-1} \sim \mathcal{N}(\sqrt{\bar{\alpha}{t-1}}x0, (1-\bar{\alpha}{t-1})\mathbf{I})$。

  1. 匹配均值(确定 $C_1$)
    对 $x_{t-1}$ 取期望(给定 $x_0$),噪声项均值为 0:

    根据边缘分布定义,均值应为 $\sqrt{\bar{\alpha}{t-1}} x_0$。
    $\therefore C_1 = \sqrt{\bar{\alpha}
    {t-1}}$

  2. 匹配方差(确定 $C_2$)
    计算 $x{t-1}$ 的方差。由于 $\epsilon_t$ 和 $\epsilon{new}$ 相互独立,方差具有可加性:

    根据边缘分布定义,总方差应为 $1 - \bar{\alpha}{t-1}$。
    $\therefore C_2^2 = (1 - \bar{\alpha}
    {t-1}) - \sigmat^2 \implies C_2 = \sqrt{1 - \bar{\alpha}{t-1} - \sigma_t^2}$

Step 3: 得到最终生成公式

将解出的系数代回原方程,我们得到了 $x{t-1}$ 的解析形式(这也是 $q(x{t-1}|x_t, x_0)$ 的采样实现):

在实际采样(反向过程)中,$x_0$ 是未知的,也无法获取真实的 $\epsilont$。因此,我们利用训练好的神经网络 $\epsilon\theta(x_t, t)$ 来预测噪声,并推导出预测的 $x_0$(记为 $\hat{x}_0$):

  1. 估计噪声:$\epsilont \approx \epsilon\theta(x_t, t)$
  2. 估计原图:$\hat{x}0 = \frac{x_t - \sqrt{1-\bar{\alpha}_t}\epsilon\theta(x_t, t)}{\sqrt{\bar{\alpha}_t}}$

将 $\hat{x}0$ 和 $\epsilon\theta$ 代入 Step 3 的公式,即得到 DDIM 最终采样公式

通过这种推导,我们可以清晰地看到:

  • DDPM 是上述公式中 $\sigma_t^2$ 取最大值(即完全匹配马尔可夫链方差)时的特例。
  • DDIM 是令 $\sigma_t=0$ 时的特例,此时随机项消失,采样变为确定的线性组合。

最后的说明——为什么:计算 Loss 仅需知道 $t$ 时刻 $x_t$ 相对于 $x_0$ 的分布(即边缘分布),而不需要知道 $x_t$ 究竟是经过怎样的路径(是否通过马尔可夫链)生成的?

简单来说,原因在于:我们在训练时,是直接“跳”到 $t$ 时刻生成 $x_t$ 的,根本没有通过马尔可夫链一步步走过去。

以下是详细的逻辑拆解:

1. 训练数据的构造方式:直接采样,而非递归生成

在 DDPM 的训练代码(以及算法原理)中,为了获得训练样本 $x_t$,我们并没有执行 $x_0 \to x_1 \to x_2 \dots \to x_t$ 这样的 $t$ 次加噪步骤。

相反,利用高斯分布的可加性,我们使用了一个“一步直达”的公式(即边缘分布公式):

这意味着:

  • 当你计算 Loss 时,计算机做的事情是:随机取一张图 $x_0$,随机取一个时间 $t$,随机取一个噪声 $\epsilon$,直接通过上述公式算出 $x_t$。
  • 在这个瞬间,中间状态 $x1, x_2, \dots, x{t-1}$ 在计算图中根本不存在
2. 神经网络的视角:只看当前,不问过往

再看 Loss 函数的具体计算过程:

神经网络 $\epsilon_\theta$ 接收的输入只有两个:

  1. 当前的状态 $x_t$
  2. 当前的时间 $t$

神经网络的任务是:“看着这张 $t$ 时刻的噪声图,猜猜刚才加了多少噪($\epsilon$)”。

关键点在于:只要 $x_t$ 的分布是正确的(即满足 $q(x_t|x_0)$),神经网络就能学会去噪。至于这个 $x_t$ 到底是怎么来的——是严格遵循马尔可夫链一步步加噪来的,还是像 DDIM 那样通过其他非马尔可夫路径来的,甚至是直接用公式算出来的——神经网络完全不知道,也不在乎

3. 数学上的独立性(目标函数的解耦)

虽然 DDPM 的 Loss 推导最初是从联合分布 $q(x_{1:T}|x_0)$ 的变分下界(ELBO)开始的:

但经过推导化简后,最终的 $L_{\text{simple}}$ 变成了对每个时刻 $t$ 的独立期望:

注意这里的期望 $\mathbb{E}$ 下标变成了 $q(x_t|x_0)$。这意味着,优化 $t$ 时刻的 Loss,只取决于 $t$ 时刻的边缘分布。各个时刻 $t$ 之间的依赖关系在 Loss 函数的最终形式中被解耦了。


3. DDIM 为什么能“跳步”?

DDIM 跳步公式

定义一个子序列 $\tau = [\tau_1, \tau_2, \dots, \tau_S]$,其中 $S \ll T$。采样公式改写为:

$
x{\tau{i-1}} = \sqrt{\bar{\alpha}{\tau{i-1}}} \hat{x}0 + \sqrt{1-\bar{\alpha}{\tau{i-1}}-\sigma{\taui}^2} \epsilon\theta(x{\tau_i}, \tau_i) + \sigma{\tau_i} \epsilon
$

核心原因分析:为什么 DDIM 能跳而 DDPM 不能?

核心原因:概率依赖的解耦

  • DDPM 的局限:DDPM 的采样逻辑建立在反向马尔可夫链 $p(x_{t-1}|x_t)$ 上。这个分布只有在步长极小($\beta_t \to 0$)时,才能被近似为高斯分布。如果你强行跳步(比如从 $t=1000$ 跳到 $t=500$),步长过大,高斯近似失效,生成质量会崩溃。
  • DDIM 的突破:DDIM 重新定义的 $q(x_{t-1}|x_t, x_0)$ 本质上不是通过相邻步的近似得到的,而是通过强制匹配全局边缘分布 $q(x_t|x_0)$ 构造出来的。这意味着无论 $t$ 和 $t-1$ 之间跨度有多大,这个数学关系在定义上永远成立。

确定性轨迹 vs 概率漂移

DDIM 在 $\sigma_t=0$ 时变成了一个确定性的常微分方程(ODE)求解过程。在 ODE 框架下,跨步采样本质上就是更粗粒度的数值积分(如欧拉法),虽然会有截断误差,但不会像 DDPM 那样因为概率分布不匹配而导致“迷失方向”。

4. 总结对比

特性 DDPM DDIM
数学基础 马尔可夫链 + 贝叶斯后验近似 非马尔可夫构造 + 边缘分布匹配
采样公式项 均值(包含当前噪声)+ 固定方差噪声 预测 $x_0$ 项 + 修正方向项 + 可变噪声项
跳步能力 不支持(受限于马尔可夫高斯近似) 支持(解耦了步间依赖,满足全局一致性)
生成性质 随机性随机演化 确定性映射(当 $\sigma_t=0$)