Denoising Diffusion Implicit Models

这个笔记写的不错:去噪扩散隐式模型(Denoising Diffusion Implicit Models,DDIM)

摘要

去噪扩散概率模型(DDPMs)在无需对抗性训练的情况下即可实现高质量图像生成,但其采样过程需要对马尔可夫链执行大量步骤。

为加速采样,我们提出去噪扩散隐式模型(DDIMs),这是一类更为高效的迭代隐式概率模型,其训练过程与 DDPMs 相同。

在 DDPMs 中,生成过程被定义为特定马尔可夫扩散过程的逆过程

我们通过一类能够产生相同训练目标的非马尔可夫扩散过程对 DDPMs 进行了推广。

这些非马尔可夫过程可以对应于确定性生成过程,从而形成隐式模型,能够以更快的速度生成高质量样本。我们通过实验证明,与 DDPMs 相比,DDIMs 在真实时间(wall-clock time)上生成高质量样本的速度可提升 10 至 50 倍,允许我们在计算量与样本质量之间进行权衡,并直接在潜在空间中执行具有语义意义的图像插值,同时以极低的误差重建观测样本。

在 DDPM 中,生成过程被定义为马尔可夫扩散过程的反向过程,在逆向采样过程的每一步,模型预测噪声

DDIM 的作者发现,扩散过程并不是必须遵循马尔科夫链, 在之后的基于分数的扩散模型以及基于随机微分等式的理论都有相同的结论。

作者重新定义了扩散过程和逆过程,并提出了一种新的采样技巧,代价是牺牲了一定的多样性, 图像质量略微下降。

1 INTRODUCTION

为缩小去噪扩散概率模型(DDPMs)与生成对抗网络(GANs)之间的效率差距,我们提出了去噪扩散隐式模型(DDIMs)。DDIMs 是隐式概率模型(Mohamed & Lakshminarayanan, 2016),与 DDPMs 密切相关,因为它们采用相同的目标函数进行训练。

2 2 背景

首先回顾一下 DDPM 模型的机制,在 DDPM 中,真实世界的图像数据用随机变量 x0 表示,它的概率密度记作 p(x0), 然而它的真实分布 未知的,即q(x0) ,具体形式是未知的, 所以我们没办法直接从q(x0) 采样生成新的图片。 幸运的是,我们有很多 x0的观测样本, 因此我们可以想办法利用这些观测样本估计出 q(x0)的一个近似表示, 然后从这个近似表示中抽样生成样本

核心的思想是,构建一个马尔科夫链式结构,逐步的向x0 上添加高斯随机噪声,并最终令其演变成一个纯高斯数据(标准正态分布), 把这个过程称为加噪过程,或者前向过程。 它的逆向过程就是逐步降噪的过程, 主要估计出逆向过程中每一步的降噪转换核 p ( x t − 1 ∣ p t ) p(x_{t-1}|p_{t}) p(xt−1∣pt) , 就可以从一个标准正态分布的高斯噪声数据 x T x_T xT , 逐步的降噪生成一张图片数据。

假设我们拥有一组来自数据分布 q ( x 0 ) q(x_0) q(x0) 的样本,我们的目标是学习一个模型分布 p θ ( x 0 ) p_\theta(x_0) pθ(x0),使其能够逼近 q ( x 0 ) q(x_0) q(x0) 并且易于从中采样。

去噪扩散概率模型(DDPMs)属于潜变量模型,其形式为 p θ ( x 0 ) = ∫ p θ ( x 0 : T ) d x 1 : T p_\theta(x_0) = \int p_\theta(x_{0:T}) dx_{1:T} pθ(x0)=∫pθ(x0:T)dx1:T,其中联合分布定义为 p θ ( x 0 : T ) : = p θ ( x T ) ∏ t = 1 T p θ ( t ) ( x t − 1 ∣ x t ) p_\theta(x_{0:T}) := p_\theta(x_T) \prod_{t=1}^{T} p^{(t)}\theta(x{t-1}|x_t) pθ(x0:T):=pθ(xT)t=1∏Tpθ(t)(xt−1∣xt)。这里, x 1 , ... , x T x_1, \dots, x_T x1,...,xT 是与 x 0 x_0 x0 处于相同样本空间 X \mathcal{X} X 中的潜变量。


想象你有一张清晰的照片(这是真实数据 x 0 x_0 x0),以及一张完全充满静电噪声的图片(这是噪声 x T x_T xT)。

在扩散模型中,我们假设从清晰照片到噪声图片的过程,并不是直接一步完成的,而是经过了 T T T 个中间步骤。

  • x 0 x_0 x0:原始数据(例如:一张清晰的猫的照片)。
  • x T x_T xT:纯噪声(高斯噪声)。
  • x 1 , ... , x T − 1 x_1, \dots, x_{T-1} x1,...,xT−1:这些就是潜变量(Latent Variables) 。它们处于 x 0 x_0 x0 和 x T x_T xT 之间,代表了数据从"清晰"逐渐变得"模糊"再到"完全噪声"的中间状态。

"联合分布定义为 p θ ( x 0 : T ) : = p θ ( x T ) ∏ t = 1 T p θ ( t ) ( x t − 1 ∣ x t ) p_\theta(x_{0:T}) := p_\theta(x_T) \prod_{t=1}^T p_\theta^{(t)}(x_{t-1} | x_t) pθ(x0:T):=pθ(xT)∏t=1Tpθ(t)(xt−1∣xt)"

这里的公式描述的是反向生成过程的数学表达。

  • p θ ( x T ) p_\theta(x_T) pθ(xT):起始状态,即采样一个纯高斯噪声。
  • ∏ t = 1 T p θ ( t ) ( x t − 1 ∣ x t ) \prod_{t=1}^T p_\theta^{(t)}(x_{t-1} | x_t) ∏t=1Tpθ(t)(xt−1∣xt):这意味着我们从 t = T t=T t=T 开始,利用模型(参数为 θ \theta θ)预测如何从 x t x_t xt 变成 x t − 1 x_{t-1} xt−1,一直重复到 t = 1 t=1 t=1。

联合概率的链式法则(Chain Rule of Probability),马尔可夫链(Markov Chain)的联合概率分布。在扩散模型(Diffusion Models)的逆向过程中,从 x T x_{T} xT开始,每一步的变换只依赖于当前状态。

连乘部分,本质上是在计算在给定初始起点 x T x_{T} xT的情况下,整条生成路径 ( x 0 : T − 1 ) (x_{0:T-1}) (x0:T−1)出现的联合概率

  • 简单来说,这个公式描述了**"从噪声生成图像"**这一完整路径的概率。

积分的作用:

" p θ ( x 0 ) = ∫ p θ ( x 0 : T ) d x 1 : T p_\theta(x_0) = \int p_\theta(x_{0:T}) dx_{1:T} pθ(x0)=∫pθ(x0:T)dx1:T"

因为我们要计算最终生成数据 x 0 x_0 x0 的概率,但我们不知道中间的具体路径 x 1 ... x T x_1 \dots x_T x1...xT 是什么,所以数学上需要对所有可能的中间路径进行积分(求和) 。这表示无论中间过程怎么走,只要最终能回到 x 0 x_0 x0,都算作有效生成。


模型参数 θ \theta θ 通过最大化变分下界来拟合数据分布 q ( x 0 ) q(x_0) q(x0):

max ⁡ θ E q ( x 0 ) log ⁡ p θ ( x 0 ) ≤ max ⁡ θ E q ( x 0 , x 1 , ... , x T ) log ⁡ p θ ( x 0 : T ) − log ⁡ q ( x 1 : T ∣ x 0 ) ( 2 ) \max_\theta \mathbb{E}{q(x_0)}\\log p_\\theta(x_0) \leq \max\theta \mathbb{E}_{q(x_0, x_1, \dots, x_T)} \\log p_\\theta(x_{0:T}) - \\log q(x_{1:T}\|x_0) \quad (2) θmaxEq(x0)logpθ(x0)≤θmaxEq(x0,x1,...,xT)logpθ(x0:T)−logq(x1:T∣x0)(2)

其中 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:T∣x0) 是作用于潜变量的某种推断分布。

最大化变分下界(ELBO)

"模型参数 θ \theta θ 通过最大化变分下界来拟合数据分布... max ⁡ θ E q ( x 0 ) log ⁡ p θ ( x 0 ) ≤ max ⁡ θ E log ⁡ p θ ( x 0 : T ) − log ⁡ q ( x 1 : T ∣ x 0 ) \max_\theta \mathbb{E}{q(x_0)}\\log p_\\theta(x_0) \le \max\theta \mathbb{E}\\log p_\\theta(x_{0:T}) - \\log q(x_{1:T}\|x_0) maxθEq(x0)logpθ(x0)≤maxθElogpθ(x0:T)−logq(x1:T∣x0)"

变分推断(Variational Inference)引入了证据下界(Evidence Lower BOund, ELBO)

  • log ⁡ p θ ( x 0 : T ) \log p_\theta(x_{0:T}) logpθ(x0:T):这是模型生成的联合概率。
  • − log ⁡ q ( x 1 : T ∣ x 0 ) -\log q(x_{1:T}|x_0) −logq(x1:T∣x0):这是一个"惩罚项"或"参考项"。 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:T∣x0) 被称为**推断分布(Inference Distribution)**或近似后验分布。
  • 在前向扩散过程中,我们其实已经知道如何从 x 0 x_0 x0 变成 x T x_T xT(这是确定的加噪过程)。因此,我们可以构造一个已知的分布 q q q 来近似模型在反向过程中应该遵循的潜变量分布。

与典型的潜变量模型(如VAE变分自编码器,Rezende 等人,2014)不同,DDPMs 使用固定的(而非可训练的)推断过程 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:T∣x0),且潜变量具有较高的维度。例如,Ho 等人(2020)考虑了以下由递减序列 α 1 : T ∈ ( 0 , 1 ] T \alpha_{1:T} \in (0, 1]^T α1:T∈(0,1]T 参数化的马尔可夫链,其转移过程具有高斯性质:

q ( x 1 : T ∣ x 0 ) : = ∏ t = 1 T q ( x t ∣ x t − 1 ) , 其中 q ( x t ∣ x t − 1 ) : = N ( α t α t − 1 x t − 1 , ( 1 − α t α t − 1 ) I ) ( 3 ) q(x_{1:T}|x_0) := \prod_{t=1}^{T} q(x_t|x_{t-1}), \quad \text{其中 } q(x_t|x_{t-1}) := \mathcal{N}\left( \sqrt{\frac{\alpha_t}{\alpha_{t-1}}} x_{t-1}, \left(1 - \frac{\alpha_t}{\alpha_{t-1}}\right)I \right) \quad (3) q(x1:T∣x0):=t=1∏Tq(xt∣xt−1),其中 q(xt∣xt−1):=N(αt−1αt xt−1,(1−αt−1αt)I)(3)

这个可以认为是我们有数据分布q(x0)的观测样本, 有了x0的观测样本之后,相当于 x0 的值已知, 此时可以写成已知 x0的条件概率分布.

q ( x 1 : T ∣ x 0 ) : = ∏ t = 1 T q ( x t ∣ x t − 1 ) , q(x_{1:T}|x_0) := \prod_{t=1}^{T} q(x_t|x_{t-1}), \quad q(x1:T∣x0):=t=1∏Tq(xt∣xt−1),

前向扩散过程的转换核 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xt∣xt−1)是一个条件高斯分布, 它的概率密度为

q ( x t ∣ x t − 1 ) : = N ( α t α t − 1 x t − 1 , ( 1 − α t α t − 1 ) I ) ( 3 ) q(x_t|x_{t-1}) := \mathcal{N}\left( \sqrt{\frac{\alpha_t}{\alpha_{t-1}}} x_{t-1}, \left(1 - \frac{\alpha_t}{\alpha_{t-1}}\right)I \right) \quad (3) q(xt∣xt−1):=N(αt−1αt xt−1,(1−αt−1αt)I)(3)

有了这个转换(加噪)核,就可以逐步的把一张有意义的图像数据 x0 转换为一个纯高斯噪声数据 x T x_T xT 。

这里协方差矩阵的对角线元素被确保为正。由于采样过程从 x 0 x_0 x0 自回归地演进到 x T x_T xT,这一过程被称为前向过程 。我们称潜变量模型 p θ ( x 0 : T ) p_\theta(x_{0:T}) pθ(x0:T) 为生成过程 ,因为它从 x T x_T xT 采样至 x 0 x_0 x0,旨在近似难以处理的逆过程 q ( x t − 1 ∣ x t ) q(x_{t-1}|x_t) q(xt−1∣xt)。直观地说,前向过程逐步向观测值 x 0 x_0 x0 添加噪声,而生成过程则逐步去除噪声观测值中的噪声(见图1左侧)。

然而这个加噪计算过程需要一步一步计算,计算效率比较差, 这时可以利用条件高斯分布的一个计算技巧,直接从 x0 一步计算得到任意时刻的xt , 这个过程可以表示为条件概率分布 q ( x t ∣ x 0 ) q(x_t|x_0) q(xt∣x0) :

前向过程的一个特殊性质在于:

q ( x t ∣ x 0 ) : = ∫ q ( x 1 : t ∣ x 0 ) d x 1 : ( t − 1 ) ∼ N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) ; q(x_t|x_0) := \int q(x_{1:t}|x_0) dx_{1:(t-1)} \sim \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t}x_0, (1-\bar{\alpha}_t)I); q(xt∣x0):=∫q(x1:t∣x0)dx1:(t−1)∼N(xt;αˉt x0,(1−αˉt)I);

(注:原文中公式(4)的系数可能指累乘后的系数,通常记为 α ˉ t \bar{\alpha}_t αˉt,此处保留原文逻辑结构)

q ( x t ∣ x 0 ) q(x_t|x_0) q(xt∣x0)的直接算数计算等式为线性组合。我们可以将 x t x_t xt 表示为 x 0 x_0 x0 和噪声变量 ϵ \epsilon ϵ 的线性组合:

x t = α ˉ t x 0 + 1 − α ˉ t ϵ , 其中 ϵ ∼ N ( 0 , I ) . ( 4 ) x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon, \quad \text{其中 } \epsilon \sim \mathcal{N}(0, I). \quad (4) xt=αˉt x0+1−αˉt ϵ,其中 ϵ∼N(0,I).(4)

当我们将 α ˉ T \bar{\alpha}T αˉT 设置得足够接近 0 时,对于任意 x 0 x_0 x0, q ( x T ∣ x 0 ) q(x_T|x_0) q(xT∣x0) 都会收敛到标准高斯分布,因此自然地设定先验分布为 p θ ( x T ) : = N ( 0 , I ) p\theta(x_T) := \mathcal{N}(0, I) pθ(xT):=N(0,I)。如果所有的条件分布都被建模为均值函数可训练且方差固定的高斯分布,公式 (2) 中的目标函数可以简化为¹:

L γ ( ϵ θ ) : = ∑ t = 1 T γ t E x 0 ∼ q ( x 0 ) , ϵ t ∼ N ( 0 , I ) ∥ ϵ θ ( t ) ( α ˉ t x 0 + 1 − α ˉ t ϵ t ) − ϵ t ∥ 2 2 ( 5 ) L_\gamma(\epsilon_\theta) := \sum_{t=1}^{T} \gamma_t \mathbb{E}_{x_0 \sim q(x_0), \epsilon_t \sim \mathcal{N}(0,I)} \left \\\|\\epsilon\^{(t)}_\\theta (\\sqrt{\\bar{\\alpha}_t}x_0 + \\sqrt{1-\\bar{\\alpha}_t}\\epsilon_t) - \\epsilon_t\\\|_2\^2 \\right \quad (5) Lγ(ϵθ):=t=1∑TγtEx0∼q(x0),ϵt∼N(0,I)∥ϵθ(t)(αˉt x0+1−αˉt ϵt)−ϵt∥22(5)

其中 ϵ θ : = { ϵ θ ( t ) } t = 1 T \epsilon_\theta := \{\epsilon^{(t)}\theta\}{t=1}^T ϵθ:={ϵθ(t)}t=1T 是一组包含 T T T 个函数的集合,每个 ϵ θ ( t ) : X → X \epsilon^{(t)}\theta : \mathcal{X} \to \mathcal{X} ϵθ(t):X→X(由 t t t 索引)都是一个具有可训练参数 θ ( t ) \theta^{(t)} θ(t) 的函数,而 γ : = γ 1 , ... , γ T \gamma := \\gamma_1, \\dots, \\gamma_T γ:=γ1,...,γT 是目标函数中正系数向量,其值取决于 α 1 : T \alpha{1:T} α1:T。在 Ho 等人(2020)中,优化的是 γ = 1 \gamma = 1 γ=1 时的目标函数,以最大化训练模型的生成性能;这也与基于得分匹配(Hyvärinen, 2005;Vincent, 2011)的噪声条件得分网络(Song & Ermon, 2019)所使用的目标函数相同。

从训练好的模型中采样 x 0 x_0 x0 的步骤如下:首先从先验分布 p θ ( x T ) p_\theta(x_T) pθ(xT) 中采样 x T x_T xT,然后迭代地从生成过程中采样 x t − 1 x_{t-1} xt−1。

逆向过程:

加噪过程的逆过程称为降噪过程,降噪过程是对联合概率 p ( x 0 : T ) p(x_{0:T}) p(x0:T)按照反向过程进行链式分解:

  • x 0 x_0 x0:原始数据(例如:一张清晰的猫的照片)。
  • x T x_T xT:纯噪声(高斯噪声)。
  • x 1 , ... , x T − 1 x_1, \dots, x_{T-1} x1,...,xT−1:这些就是潜变量(Latent Variables) 。它们处于 x 0 x_0 x0 和 x T x_T xT 之间,代表了数据从"清晰"逐渐变得"模糊"再到"完全噪声"的中间状态。

"联合分布定义为

p θ ( x 0 : T ) : = p θ ( x T ) ∏ t = 1 T p θ ( t ) ( x t − 1 ∣ x t ) p_\theta(x_{0:T}) := p_\theta(x_T) \prod_{t=1}^T p_\theta^{(t)}(x_{t-1} | x_t) pθ(x0:T):=pθ(xT)t=1∏Tpθ(t)(xt−1∣xt)

他表示在 xt 的基础上去掉一部分高斯噪声得到 x t − 1 x_{t-1} xt−1,所以称为降噪过程。

  • 其中 p ( x T ) p(x_T) p(xT) 的概率密度是知道的,它是一个标准高斯分布 N ( 0 , I ) N(0,I) N(0,I)
  • 我们的关键就是估计出 p ( x t − 1 ∣ x t ) p(x_{t-1}|x_t) p(xt−1∣xt) 的一个近似表示。

然而 p ( x t − 1 ∣ x t ) p(x_{t-1}|x_t) p(xt−1∣xt)是难以计算的, 即使根据贝叶斯定理得出 p ( x t − 1 ∣ x t ) p(x_{t-1}|x_t) p(xt−1∣xt) 的表达式, 它的分母部分(归一化项)是含有积分的,这个积分是没有解析解的,是非常难以计算的。 因此,我们想到用一个模型(神经网络)取拟合学习条件概率分布 p ( x t − 1 ∣ x t ) p(x_{t-1}|x_t) p(xt−1∣xt) ,然后利用学习好的模型,充当 p ( x t − 1 ∣ x t ) p(x_{t-1}|x_t) p(xt−1∣xt) ,这样就有了逆向过程的完整链式结构,也就可以通过逆向过程,从一个随机高斯噪声 逐步生成一张真实的图片 。

我们知道学习一个概率分布的未知参数的常用算法是极大似然估计 , 极大似然估计是通过极大化观测数据的对数概率(似然)实现的。

我们的目标是让模型学会生成数据,根据最大似然估计理论,我们需要极大化观测数据的对数似然ln(p(x0)) ,然而整个网络中随机变量有个 T 个,可是只有 x0 有观测样本。

整个网络的联合概率分布是 p ( x 0 : T ) p(x_{0:T}) p(x0:T),我们只有x0 的观测数据(样本) ,没有x1:T 的观测样本,因此我们极大化的是边缘分布 p(x0)

联合概率p(x_{0:T}) 进行边缘化进而得到 x0 的边缘概率 p(x0), 如下式所示,

l n p ( x 0 ) = l n ∫ p ( x 0 : T ) d x 1 : T ln p(x_0) = ln \int{p(x_{0:T})dx_{1:T}} lnp(x0)=ln∫p(x0:T)dx1:T

在机器学习和概率图模型中,当我们有一组潜变量 (Latent Variables,这里是 x 1 : T x_{1:T} x1:T)和观测变量 (Observed Variables,这里是 x 0 x_0 x0)时,观测数据的似然(Likelihood)定义为所有潜变量的联合概率之和(积分)

p ( x 0 ) = ∫ p ( x 0 , x 1 , . . . , x T ) d x 1 . . . d x T = ∫ p ( x 0 : T ) d x 1 : T p(x_0) = \int p(x_0, x_1, ..., x_T) dx_1 ... dx_T = \int p(x_{0:T}) dx_{1:T} p(x0)=∫p(x0,x1,...,xT)dx1...dxT=∫p(x0:T)dx1:T

这行公式在数学定义上是完全正确的。 它表示:

"数据 x 0 x_0 x0 出现的概率,等于所有可能的中间噪声状态 x 1 : T x_{1:T} x1:T 与 x 0 x_0 x0 同时出现的联合概率之和。"

这是一个多元积分,我举个多元积分例子:

  1. ∫ p ( x 0 , x 1 ) d x 1 \int p(x_0, x_1) dx_1 ∫p(x0,x1)dx1 :这是一个标量 (一个具体的数字)。它表示 x 0 x_0 x0 的边缘概率密度
  2. ∫ ∫ p ( x 0 , x 1 ) d x 0 d x 1 \int \int p(x_0, x_1) dx_0 dx_1 ∫∫p(x0,x1)dx0dx1 :这也是一个标量 (一个具体的数字),而且它通常等于 1 。它表示整个联合分布的总概率质量
情况 A: ∫ p ( x 0 , x 1 ) d x 1 \int p(x_0, x_1) dx_1 ∫p(x0,x1)dx1
  • 积分变量 : x 1 x_1 x1。
  • 自由变量 : x 0 x_0 x0 保持不变。
  • 结果 :一个关于 x 0 x_0 x0 的函数,记为 p ( x 0 ) p(x_0) p(x0)。
  • 物理意义边缘概率密度(Marginal PDF)
    • 它告诉我们:不管 x 1 x_1 x1 是什么状态,观测到 x 0 x_0 x0 的概率密度是多少。
    • 在扩散模型中,这就是我们要极大化的目标函数 ln ⁡ p ( x 0 ) \ln p(x_0) lnp(x0) 的核心部分。
情况 B: ∬ p ( x 0 , x 1 ) d x 0 d x 1 \iint p(x_0, x_1) dx_0 dx_1 ∬p(x0,x1)dx0dx1
  • 积分变量 : x 0 x_0 x0 和 x 1 x_1 x1 都被积分掉了。
  • 自由变量:无。
  • 结果:一个常数(数值)。
  • 物理意义全空间总概率
    • 根据概率归一化条件(Normalization Condition),任何合法的概率密度函数在整个定义域上的积分必须等于 1
    • 所以, ∬ p ( x 0 , x 1 ) d x 0 d x 1 = 1 \iint p(x_0, x_1) dx_0 dx_1 = 1 ∬p(x0,x1)dx0dx1=1。
几何直观:切片 vs. 体积

想象 p ( x 0 , x 1 ) p(x_0, x_1) p(x0,x1) 是一个三维空间中的"山"表面,横轴是 x 0 x_0 x0,纵轴是 x 1 x_1 x1,高度是概率密度。

情况 A: ∫ p ( x 0 , x 1 ) d x 1 \int p(x_0, x_1) dx_1 ∫p(x0,x1)dx1 ------ "切片求和"
  • 动作 :固定 x 0 x_0 x0 在某个位置(比如切一刀),然后把这一"条"上的所有高度(沿 x 1 x_1 x1 方向)加起来。
  • 结果 :你得到了一个高度值。如果你移动 x 0 x_0 x0 的位置,这个高度值会变。
  • 产出 :一个新的函数 p ( x 0 ) p(x_0) p(x0),它描述了 x 0 x_0 x0 这一维的分布形状(比如正态分布曲线)。
情况 B: ∬ p ( x 0 , x 1 ) d x 0 d x 1 \iint p(x_0, x_1) dx_0 dx_1 ∬p(x0,x1)dx0dx1 ------ "全盘称重"
  • 动作 :不仅对 x 1 x_1 x1 积分,还对 x 0 x_0 x0 积分。这意味着你把整座"山"底下的所有土都挖出来称重量。
  • 结果:一个总重量。
  • 产出 :数字 1 (只要 p p p 是合法的概率分布)。
回到你的扩散模型上下文: 对于 ∫ p ( x 0 , x 1 ) d x 1 \int p(x_0, x_1) dx_1 ∫p(x0,x1)dx1

这是最关键的一步

  • 我们不知道 p ( x 0 ) p(x_0) p(x0) 长什么样,因为它是由复杂的神经网络生成的。
  • 通过积分 x 1 x_1 x1,我们将高维联合分布"压缩"回低维的数据空间。
  • 目的 :得到观测数据 x 0 x_0 x0 的似然值。我们想要最大化这个值。
  • p(x0:T) 是高维联合概率,
  • 积分 ∫p(x0:T)dx1:T 涉及 T 个中间潜变量 x1:T 的高维积分。
  • 这个积分通常是不可解的(intractable),尤其是当 T 很大且维度很高时,我们无法直接对这个积分进行梯度下降优化。

公式 ln⁡p(x0)=ln⁡∫p(x0:T)dx1:T ​ 是起点,它揭示了问题的本质(边缘化不可解)。而后续引入 q 和 ELBO 是解决方案,它让我们能够通过采样和近似来优化这个不可解的问题。

因此,我们不能直接最大化 ln⁡p(x0),我们需要找到一个可优化的代理目标 。解决方案:引入变分推理(Variational Inference),为了绕过这个不可解的积分,扩散模型使用了变分下界(ELBO)。

没有观测样本的变量 x 1 : T x_{1:T} x1:T 称为隐变量, 这是一个典型的含有隐变量模型的估计问题。隐变量的存在(需要边际化消除)导致 对数似然函数存在了积分操作,这导致对数函数无法分解成简单的形式, 进而难以求解其梯度,无法直接极大化。 这时可以利用 Jensen 不等式,得到对数似然函数的一个下界函数(ELBO), 当满足一定条件时,极大化这个下界函数和极大化对数似然是等价的。

我直接摘抄一个推导

这个推导过程看上去很复杂,但最后的结果却很简洁,由3个子项构成,现在分别介绍一下各项的含义。

第二项不包含任意可学习参数,因此可以忽略掉。 另外两项都是一个期望项,解决方法和 VAE 一样,可以通过采样法(MCMC)近似求解期望。 然而,第三项存在一个小问题,它的期望是关于两个变量的 x t − 1 , x t + 1 xt-1,xt+1 xt−1,xt+1 , 用采样法(MCMC)同时对两个随机变量进行采样,会导致更大的方差,这会使得优化过程不稳定,不容易收敛 2。 因此直接优化 公式(2.1.52) 并不是最佳的选择,我们继续看能不能改进一下。

根据条件独立性

我再重新推导 ELBO 函数,推导过程如下:

对比一下 公式 发生了一些变化,

代入各项之后,最后的目标函数是一个简单的均方误差,这里记作 L L L , 其中 γ t \gamma_t γt表示一些常数项,它不影响极大化的结果。

前向过程的长度 T T T 是 DDPMs 中的一个重要超参数。从变分推断的角度来看,较大的 T T T 值可以使逆过程更接近高斯分布(Sohl-Dickstein 等人,2015),从而使由高斯条件分布建模的生成过程成为良好的近似;这解释了为何要选择较大的 T T T 值,例如 Ho 等人(2020)中使用的 T = 1000 T=1000 T=1000。然而,由于获取样本 x 0 x_0 x0 必须依次执行所有 T T T 次迭代,而不能并行处理,因此从 DDPMs 中采样的速度远慢于其他深度生成模型。这使得它们在计算资源有限且对延迟敏感的任务中变得不切实际。

(以上属于是回顾DDPM)

3 非马尔可夫前向过程(Non-Markovian Forward Processes)

作者观察到DDPM 的Loss 主要依赖边缘概率密度分布 q ( x t ∣ x 0 ) q(x_t|x_0) q(xt∣x0),但是并不直接依赖联合概率 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:T∣x0),似乎可以采用非 markov 去改变generative 过程。如图1

传统 DDPM 的问题:

在标准的扩散模型(如 DDPM)中,生成过程是一个漫长的迭代过程。为了从噪声中生成一张清晰图片,模型通常需要进行数百甚至上千次去噪步骤(每一步减去一点噪声)。这是因为传统的扩散模型假设前向加噪过程是**马尔可夫链(Markovian)**的,即每一步只依赖于上一步的状态,无法直接从早期阶段的信息跳跃到后期。

文本的核心洞察:

作者指出,DDPM 的损失函数(Objective Function,记为 L γ L_\gamma Lγ)实际上只依赖于数据在每一步的边缘分布 q ( x t ∣ x 0 ) q(x_t|x_0) q(xt∣x0),而并不直接依赖于整个联合分布 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:T∣x0)。

  • 这意味着: 存在无数种不同的联合分布(即不同的"推理过程"或"加噪路径"),它们都能产生相同的边缘分布,从而产生相同的损失函数值。
  • 结论: 我们可以自由选择一种非马尔可夫的前向推理过程。这种新选择不仅保持了相同的优化目标,还能极大地简化反向生成过程,从而减少迭代次数。
A. 马尔可夫过程 vs. 非马尔可夫过程
  • 马尔可夫过程 (Markovian): "未来只取决于现在,与过去无关"。在标准扩散模型中, x t x_t xt 只取决于 x t − 1 x_{t-1} xt−1。这种记忆缺失导致了生成速度极慢。
  • 非马尔可夫过程 (Non-Markovian): "未来可能取决于过去和现在"。在文中提出的新过程中, x t x_t xt 不仅取决于 x t − 1 x_{t-1} xt−1,还直接取决于原始数据 x 0 x_0 x0。这意味着模型拥有对"起点"的记忆,从而可以更聪明地规划去噪路径。
B. 边缘分布 (Marginals) vs. 联合分布 (Joints)
  • 边缘分布 q ( x t ∣ x 0 ) q(x_t|x_0) q(xt∣x0): 无论中间经过多少步,第 t t t 步的状态分布是固定的(通常是高斯分布)。
  • 联合分布 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:T∣x0): 描述从 x 0 x_0 x0 到 x T x_T xT 整个轨迹的概率。
  • 关键点: 既然损失函数只关心边缘分布,我们就可以改变中间的路径(联合分布)而不改变最终的效果。这就像是从北京到上海,你可以坐高铁(慢但标准),也可以坐飞机(快),只要起点和终点的地标一致,导航软件看到的"距离"是一样的。
C. 变分下界 (Variational Inference Objective)

这是训练扩散模型的数学基础。作者定义了一个新的目标函数 J σ J_\sigma Jσ,用来衡量生成的分布 p θ p_\theta pθ 和真实的推断分布 q σ q_\sigma qσ 之间的差异。

3.1 non-markov 前向过程,加噪声。

如果你想绕过中间的所有隐变量 x 1 : T x_{1:T} x1:T,直接求最终生成的图像 x 0 x_0 x0 的边缘概率 P ( x 0 ) P(x_0) P(x0),这时就需要用到全概率公式(连续形式,即积分):

P ( x 0 ) = ∫ P ( x 0 : T ) d x 1 : T P(x_0) = \int P(x_{0:T}) dx_{1:T} P(x0)=∫P(x0:T)dx1:T

这才是全概率公式在扩散模型中的体现(将所有路径的可能性求和/积分起来)。

直接通过bayes 进行构造前向过程。

先定义从 x0 到 xT ​ 的步骤(公式6),然后定义从 xt 和 x0 回到 xt−1 ​ 的概率(公式7)。

  • x 0 x_0 x0:原始数据(例如:一张清晰的猫的照片)。
  • x T x_T xT:纯噪声(高斯噪声)。

在传统 DDPM 中,逆向步骤通常只基于 xt 预测噪声或 x0,然后采样。

在这里,由于显式地引入了 x0 作为条件,这个过程不再是马尔可夫的。

参数 σ 的作用:

  • σ 控制前向过程的随机性(Stochasticity)。
  • 当 σ→0 时(极限情况): 过程变为确定性的。如果你知道 x0 和 xt,那么 xt−1 就是固定的,没有噪声。这正是 DDIM(Denoising Diffusion Implicit Models)的核心思想------将随机扩散过程变为确定性映射

公式 (8) 的贝叶斯推导,说明即使我们定义了逆向过程,前向过程也可以由此推导出来,但它不再是马尔可夫的,因为 xt​ 直接依赖于 x0​。

这里的正向过程不再具有马尔可夫性,因为每个 x t x_t xt 可能同时依赖于 x t − 1 x_{t-1} xt−1 和 x 0 x_0 x0。 σ \sigma σ 的大小控制了正向过程的随机性程度;当 σ → 0 \sigma \to 0 σ→0 时,我们进入一种极端情形:只要已知某个时刻 t t t 的 x 0 x_0 x0 和 x t x_t xt,那么 x t − 1 x_{t-1} xt−1 就被确定且固定不变。

3.2 生成过程与统一的变分推断目标

接下来,我们定义一个可训练的生成过程 p θ ( x 0 : T ) p_\theta(x_{0:T}) pθ(x0:T),其中每个 p θ ( t ) ( x t − 1 ∣ x t ) p_\theta^{(t)}(x_{t-1}|x_t) pθ(t)(xt−1∣xt) 都利用了对 q σ ( x t − 1 ∣ x t , x 0 ) q_\sigma(x_{t-1}|x_t, x_0) qσ(xt−1∣xt,x0) 的知识。直观地说,给定一个带噪声的观测值 x t x_t xt,我们首先对相应的 x 0 x_0 x0 做出预测,然后利用已定义的逆条件分布 q σ ( x t − 1 ∣ x t , x 0 ) q_\sigma(x_{t-1}|x_t, x_0) qσ(xt−1∣xt,x0) 从中采样得到 x t − 1 x_{t-1} xt−1。

对于某些 x 0 ∼ q ( x 0 ) x_0 \sim q(x_0) x0∼q(x0) 和 ϵ t ∼ N ( 0 , I ) \epsilon_t \sim \mathcal{N}(0, I) ϵt∼N(0,I),可以通过公式 (4) 获得 x t x_t xt。模型 ϵ θ ( t ) ( x t ) \epsilon_\theta^{(t)}(x_t) ϵθ(t)(xt) 随后试图从 x t x_t xt 预测 ϵ t \epsilon_t ϵt,且无需知道 x 0 x_0 x0。通过重写公式 (4),我们可以预测去噪后的观测值,即在给定 x t x_t xt 的情况下对 x 0 x_0 x0 的预测:

f θ ( t ) ( x t ) : = ( x t − 1 − α t ⋅ ϵ θ ( t ) ( x t ) ) / α t . ( 9 ) f_\theta^{(t)}(x_t) := (x_t - \sqrt{1 - \alpha_t} \cdot \epsilon_\theta^{(t)}(x_t)) / \sqrt{\alpha_t}. \quad (9) fθ(t)(xt):=(xt−1−αt ⋅ϵθ(t)(xt))/αt .(9)

接着,我们可以定义生成过程,其固定先验为 p θ ( x T ) = N ( 0 , I ) p_\theta(x_T) = \mathcal{N}(0, I) pθ(xT)=N(0,I),且

p θ ( t ) ( x t − 1 ∣ x t ) = { N ( f θ ( 1 ) ( x 1 ) , σ 1 2 I ) 如果 t = 1 q σ ( x t − 1 ∣ x t , f θ ( t ) ( x t ) ) 否则 , ( 10 ) p_\theta^{(t)}(x_{t-1}|x_t) = \begin{cases} \mathcal{N}(f_\theta^{(1)}(x_1), \sigma_1^2 I) & \text{如果 } t = 1 \\ q_\sigma(x_{t-1}|x_t, f_\theta^{(t)}(x_t)) & \text{否则} \end{cases}, \quad (10) pθ(t)(xt−1∣xt)={N(fθ(1)(x1),σ12I)qσ(xt−1∣xt,fθ(t)(xt))如果 t=1否则,(10)

其中 q σ ( x t − 1 ∣ x t , f θ ( t ) ( x t ) ) q_\sigma(x_{t-1}|x_t, f_\theta^{(t)}(x_t)) qσ(xt−1∣xt,fθ(t)(xt)) 的定义如公式 (7) 所示,只是将 x 0 x_0 x0 替换为 f θ ( t ) ( x t ) f_\theta^{(t)}(x_t) fθ(t)(xt)。对于 t = 1 t=1 t=1 的情况,我们添加了一些高斯噪声(协方差为 σ 1 2 I \sigma_1^2 I σ12I),以确保生成过程处处有支撑(supported everywhere)。

我们通过以下变分推理目标函数优化 θ \theta θ(这是关于 ϵ θ \epsilon_\theta ϵθ 的泛函):

J σ ( ϵ θ ) : = E x 0 : T ∼ q σ ( x 0 : T ) log ⁡ q σ ( x 1 : T ∣ x 0 ) − log ⁡ p θ ( x 0 : T ) ( 11 ) J_\sigma(\epsilon_\theta) := \mathbb{E}{x{0:T} \sim q_\sigma(x_{0:T})} \\log q_\\sigma(x_{1:T}\|x_0) - \\log p_\\theta(x_{0:T}) \quad (11) Jσ(ϵθ):=Ex0:T∼qσ(x0:T)logqσ(x1:T∣x0)−logpθ(x0:T)(11)

= E x 0 : T ∼ q σ ( x 0 : T ) log ⁡ q σ ( x T ∣ x 0 ) + ∑ t = 2 T log ⁡ q σ ( x t − 1 ∣ x t , x 0 ) − ∑ t = 1 T log ⁡ p θ ( t ) ( x t − 1 ∣ x t ) − log ⁡ p θ ( x T ) = \mathbb{E}{x{0:T} \sim q_\sigma(x_{0:T})} \left \\log q_\\sigma(x_T\|x_0) + \\sum_{t=2}\^T \\log q_\\sigma(x_{t-1}\|x_t, x_0) - \\sum_{t=1}\^T \\log p_\\theta\^{(t)}(x_{t-1}\|x_t) - \\log p_\\theta(x_T) \\right =Ex0:T∼qσ(x0:T)logqσ(xT∣x0)+t=2∑Tlogqσ(xt−1∣xt,x0)−t=1∑Tlogpθ(t)(xt−1∣xt)−logpθ(xT)

其中, q σ ( x 1 : T ∣ x 0 ) q_\sigma(x_{1:T}|x_0) qσ(x1:T∣x0) 按照公式 (6) 进行因式分解, p θ ( x 0 : T ) p_\theta(x_{0:T}) pθ(x0:T) 按照公式 (1) 进行因式分解。

从 J σ J_\sigma Jσ 的定义来看,似乎针对每一个 σ \sigma σ 的选择都需要训练一个不同的模型,因为它对应于不同的变分目标函数(以及不同的生成过程)。然而,如下文所示, J σ J_\sigma Jσ 在特定的权重 γ \gamma γ 下等价于 L γ L_\gamma Lγ。

定理 1。 对于所有 σ > 0 \sigma > 0 σ>0,存在 γ ∈ R > 0 T \gamma \in \mathbb{R}^T_{>0} γ∈R>0T 和 C ∈ R C \in \mathbb{R} C∈R,使得 J σ = L γ + C J_\sigma = L_\gamma + C Jσ=Lγ+C。

变分目标函数 L γ L_\gamma Lγ 的特殊之处在于,如果模型 ϵ θ ( t ) \epsilon_\theta^{(t)} ϵθ(t) 的参数在不同的 t t t 之间不共享,那么 ϵ θ \epsilon_\theta ϵθ 的最优解将不依赖于权重 γ \gamma γ(因为通过对求和中的每一项分别最大化,即可达到全局最优)。 L γ L_\gamma Lγ 的这一性质具有两个含义。一方面,这证明了在 DDPM 中使用 L 1 L_1 L1 作为变分下界的代理目标函数是合理的;另一方面,由于根据定理 1, J σ J_\sigma Jσ 等价于某个 L γ L_\gamma Lγ,因此 J σ J_\sigma Jσ 的最优解与 L 1 L_1 L1 的最优解相同。因此,如果模型 ϵ θ \epsilon_\theta ϵθ 中的参数在 t t t 之间不共享,那么 Ho 等人 (2020) 使用的 L 1 L_1 L1 目标函数也可以作为变分目标函数 J σ J_\sigma Jσ 的代理目标函数。


  • 我们在推理阶段 (生成阶段)不需要 x 0 x_0 x0(因为它是未知的噪声),但我们需要利用在训练阶段学到的知识。

  • 模型 ϵ θ ( x t ) \epsilon_\theta(x_t) ϵθ(xt) 从 x t x_t xt 预测噪声 ϵ t \epsilon_t ϵt。

  • 根据公式 (9),我们可以从这个预测噪声中重构出 x 0 x_0 x0 的估计值:

    f θ ( t ) ( x t ) : = ( x t − 1 − α t ⋅ ϵ θ ( t ) ( x t ) ) / α t f^{(t)}\theta(x_t) := (x_t - \sqrt{1-\alpha_t} \cdot \epsilon^{(t)}\theta(x_t)) / \sqrt{\alpha_t} fθ(t)(xt):=(xt−1−αt ⋅ϵθ(t)(xt))/αt

    这相当于问神经网络:"基于当前的噪声图片 x t x_t xt,你觉得原始的干净图片 x 0 x_0 x0 长什么样?"

  • 然后,生成步骤 p θ ( x t − 1 ∣ x t ) p_\theta(x_{t-1}|x_t) pθ(xt−1∣xt) 使用这个预测的 f θ ( t ) ( x t ) f^{(t)}_\theta(x_t) fθ(t)(xt) 来代替真正的 x 0 x_0 x0,代入到之前定义的非马尔可夫逆向分布中采样

定理 1 (Theorem 1) 的重大意义:

对于所有的 σ > 0 \sigma > 0 σ>0,存在权重 γ \gamma γ 和常数 C C C,使得 J σ = L γ + C J_\sigma = L_\gamma + C Jσ=Lγ+C。

解读:

  1. 目标函数等价性: 无论你选择什么样的 σ \sigma σ(即无论你选择多么"快速"或多么"随机"的推断过程),你优化的变分目标 J σ J_\sigma Jσ 在数学上都等价于标准的 DDPM 损失函数 L γ L_\gamma Lγ(加权和)。
  2. 参数共享的启示:
    • 在训练扩散模型时,我们通常使用参数共享 (即同一个神经网络 ϵ θ \epsilon_\theta ϵθ 处理所有时间步 t t t,虽然输入不同)。
    • 如果参数不共享(即每个时间步有独立的网络),那么最优解与权重 γ \gamma γ 无关。
    • 重要推论: 因为 J σ J_\sigma Jσ 等价于 L γ L_\gamma Lγ,且标准 DDPM 使用 L 1 L_1 L1(均匀权重)作为代理损失函数。既然定理说 J σ J_\sigma Jσ 也等价于某个 L γ L_\gamma Lγ,而优化 L γ L_\gamma Lγ 的结果与优化 L 1 L_1 L1 在参数共享的情况下通常收敛到相似的解,这就证明了:我们可以直接使用标准的、简单的 DDPM 损失函数来训练这个新的、非马尔可夫模型。

4. 意义与影响 (Implications)

  1. 加速生成 (Speedup):

    这是该论文最大的贡献。通过选择较小的 σ \sigma σ(特别是 σ = 0 \sigma=0 σ=0),前向过程变得非常确定。这意味着在反向生成时,我们可以跳过许多中间步骤。DDPM 需要 1000 步去噪,而 DDIM( σ = 0 \sigma=0 σ=0 的特例)可能只需要 10-50 步就能生成高质量样本。

  2. 理论统一:

    它证明了 DDPM 的损失函数不仅仅适用于马尔可夫链。任何遵循相同边缘分布分布的非马尔可夫过程都可以用同样的方法训练。这扩展了扩散模型的适用范围。

  3. 确定性生成:

    当 σ → 0 \sigma \to 0 σ→0 时,生成过程变成了确定性的(Denoising Diffusion Implicit Models)。对于给定的噪声,生成的图片总是相同的(只要模型权重固定)。这使得模型更适合需要可复现性的任务,也允许使用ODE求解器进行采样,进一步加速。

这段文本详细阐述了DDIM 的理论基础。它通过证明变分推断目标函数仅依赖于边缘分布而非联合分布 ,允许研究者设计非马尔可夫的前向过程 。这种新过程允许在生成阶段使用更少的步骤 (确定性或低随机性),同时保持与标准DDPM相同的优化目标,从而实现了显著的生成速度提升

(厉害,实在是厉害!)

4. 采样过程

4 从广义生成过程中采样

以 L1 为目标,我们不仅学习了索尔-迪克斯坦等人(Sohl-Dickstein et al., 2015)和霍等人(Ho et al., 2020)所考虑的马尔可夫推理过程的生成过程,还学习了由参数 σ 参数化的许多非马尔可夫前向过程的生成过程。因此,我们可以本质上将预训练的 DDPM 模型作为新目标问题的解,并通过调整 σ 来寻找一种更能满足我们需求的、生成样本更优的生成过程。

4.1 去噪扩散隐式模型

根据公式 (10) 中的 p θ ( x 1 : T ) p_\theta(x_{1:T}) pθ(x1:T),可以从样本 x t x_t xt 生成样本 x t − 1 x_{t-1} xt−1,具体方式如下:

x t − 1 = α t − 1 ( x t − 1 − α t ϵ θ ( t ) ( x t ) α t ) ⏟ "预测的 x 0 " + 1 − α t − 1 − σ t 2 ⋅ ϵ θ ( t ) ( x t ) ⏟ "指向 x t 的方向" + σ t ϵ t ⏟ 随机噪声 ( 12 ) x_{t-1} = \underbrace{\sqrt{\alpha_{t-1}} \left( \frac{x_t - \sqrt{1-\alpha_t}\epsilon_\theta^{(t)}(x_t)}{\sqrt{\alpha_t}} \right)}{\text{"预测的 } x_0 \text{"}} + \underbrace{\sqrt{1-\alpha{t-1} - \sigma_t^2} \cdot \epsilon_\theta^{(t)}(x_t)}{\text{"指向 } x_t \text{ 的方向"}} + \underbrace{\sigma_t \epsilon_t}{\text{随机噪声}} \quad (12) xt−1="预测的 x0" αt−1 (αt xt−1−αt ϵθ(t)(xt))+"指向 xt 的方向" 1−αt−1−σt2 ⋅ϵθ(t)(xt)+随机噪声 σtϵt(12)

其中 ϵ t ∼ N ( 0 , I ) \epsilon_t \sim \mathcal{N}(0, I) ϵt∼N(0,I) 是与 x t x_t xt 独立的标准高斯噪声,我们定义 α 0 : = 1 \alpha_0 := 1 α0:=1。 σ \sigma σ 的不同取值对应于不同的生成过程,但它们均使用相同的模型 ϵ θ \epsilon_\theta ϵθ,因此无需重新训练模型。当对所有 t t t 满足 σ t = ( 1 − α t − 1 ) / ( 1 − α t ) 1 − α t / α t − 1 \sigma_t = \sqrt{(1-\alpha_{t-1})/(1-\alpha_t)} \sqrt{1-\alpha_t/\alpha_{t-1}} σt=(1−αt−1)/(1−αt) 1−αt/αt−1 时,前向过程变为马尔可夫过程,生成过程即转化为 DDPM。

我们注意到另一种特殊情况,即对所有 t t t(注5) σ t = 0 \sigma_t = 0 σt=0;此时前向过程在给定 x t − 1 x_{t-1} xt−1 和 x 0 x_0 x0 的条件下是确定性的( t = 1 t=1 t=1 除外);在生成过程中,随机噪声 ϵ t \epsilon_t ϵt 前面的系数变为零。由此得到的模型成为一种隐式概率模型(Mohamed & Lakshminarayanan, 2016),其中样本通过固定程序(从 x T x_T xT 到 x 0 x_0 x0)从潜在变量生成。我们将此模型命名为去噪扩散隐式模型(DDIM,发音为 /diːdiːɛm/),因为它是使用 DDPM 目标函数训练的隐式概率模型(尽管前向过程不再具有扩散性质)。

4.2 加速的生成过程

在前面的章节中,生成过程被视为逆向过程的近似;由于前向过程包含 T T T 个步骤,生成过程也被迫采样 T T T 个步骤。然而,只要 q σ ( x t ∣ x 0 ) q_\sigma(x_t|x_0) qσ(xt∣x0) 保持固定,去噪目标 L 1 L_1 L1 就不依赖于特定的前向程序。因此,我们可以考虑长度小于 T T T 的前向过程,从而在不训练不同模型的情况下加速相应的生成过程。

让我们考虑前向过程并非定义在所有潜在变量 x 1 : T x_{1:T} x1:T 上,而是定义在一个子集 { x τ 1 , ... , x τ S } \{x_{\tau_1}, \dots, x_{\tau_S}\} {xτ1,...,xτS} 上,其中 τ \tau τ 是序列 1 , ... , T 1, \\dots, T 1,...,T 中长度为 S S S 的递增子序列。具体而言,我们定义在 x τ 1 , ... , x τ S x_{\tau_1}, \dots, x_{\tau_S} xτ1,...,xτS 上的顺序前向过程,使得 q ( x τ i ∣ x 0 ) = N ( α τ i x 0 , ( 1 − α τ i ) I ) q(x_{\tau_i}|x_0) = \mathcal{N}(\sqrt{\alpha_{\tau_i}}x_0, (1-\alpha_{\tau_i})I) q(xτi∣x0)=N(ατi x0,(1−ατi)I) 与"边际分布"相匹配(见图2所示)。生成过程现在根据逆向序列 reverse ( τ ) \text{reverse}(\tau) reverse(τ) 对潜在变量进行采样,我们将其称为(采样)轨迹。当采样轨迹的长度远小于 T T T 时,由于采样过程的迭代性质,我们可以显著提高计算效率。

使用与第 3 节类似的论证,我们可以证明使用通过 L 1 L_1 L1 目标训练的模型是合理的,因此训练过程无需任何更改。我们表明,只需对公式 (12) 中的更新进行轻微调整,即可获得新的、更快的生成过程,这适用于 DDPM、DDIM 以及公式 (10) 中考虑的所有生成过程。这些细节包含在附录 C.1 中。

原则上,这意味着我们可以训练一个具有任意数量前向步骤的模型,但在生成过程中仅从其中的某些步骤进行采样。因此,经过训练的模型可以考虑比 Ho et al. (2020) 中考虑的步骤多得多,甚至是一个连续时间变量 t t t(Chen et al., 2020)。我们将这方面的实证研究留待未来的工作。

4.3 与神经常微分方程(Neural ODEs)的相关性

此外,我们可以根据公式 (12) 重写 DDIM 的迭代过程,其与求解常微分方程(ODEs)的欧拉积分(Euler integration)之间的相似性变得更加明显:

x t − Δ t α t − Δ t = x t α t + ( 1 − α t − Δ t α t − Δ t − 1 − α t α t ) ϵ θ ( x t ) ( 13 ) \frac{x_{t-\Delta t}}{\sqrt{\alpha_{t-\Delta t}}} = \frac{x_t}{\sqrt{\alpha_t}} + \left( \sqrt{\frac{1-\alpha_{t-\Delta t}}{\alpha_{t-\Delta t}}} - \sqrt{\frac{1-\alpha_t}{\alpha_t}} \right) \epsilon_\theta(x_t) \quad (13) αt−Δt xt−Δt=αt xt+(αt−Δt1−αt−Δt −αt1−αt )ϵθ(xt)(13)

为了推导相应的常微分方程,我们可以将 ( 1 − α / α ) (\sqrt{1-\alpha}/\sqrt{\alpha}) (1−α /α ) 重新参数化为 σ \sigma σ,将 ( x / α ) (x/\sqrt{\alpha}) (x/α ) 重新参数化为 x ˉ \bar{x} xˉ。在连续情况下, σ \sigma σ 和 x x x 是时间 t t t 的函数,其中 σ : R ≥ 0 → R ≥ 0 \sigma : \mathbb{R}{\ge 0} \to \mathbb{R}{\ge 0} σ:R≥0→R≥0 是连续且单调递增的,并满足 σ ( 0 ) = 0 \sigma(0) = 0 σ(0)=0。公式 (13) 可以被视为以下常微分方程的欧拉方法:

d x ˉ ( t ) d σ ( t ) = ϵ θ ( x ˉ ( t ) σ 2 + 1 ) , ( 14 ) \frac{d\bar{x}(t)}{d\sigma(t)} = \epsilon_\theta \left( \frac{\bar{x}(t)}{\sqrt{\sigma^2 + 1}} \right), \quad (14) dσ(t)dxˉ(t)=ϵθ(σ2+1 xˉ(t)),(14)

其中初始条件为 x ( T ) ∼ N ( 0 , σ ( T ) ) x(T) \sim \mathcal{N}(0, \sigma(T)) x(T)∼N(0,σ(T)),且 σ ( T ) \sigma(T) σ(T) 非常大(对应于 α ≈ 0 \alpha \approx 0 α≈0 的情况)。这表明,通过足够的离散化步骤,我们也可以逆转生成过程(从 t = 0 t=0 t=0 到 T T T),这会将 x 0 x_0 x0 编码为 x T x_T xT,并模拟公式 (14) 中常微分方程的反向过程。这意味着与 DDPM 不同,我们可以使用 DDIM 来获取观测数据的编码(以 x T x_T xT 的形式),这对于需要模型潜在表示的其他下游应用可能很有用。

在另一项同时发表的工作(Song et al., 2020)中,作者提出了一种"概率流常微分方程"(probability flow ODE),旨在基于得分函数恢复随机微分方程(SDE)的边缘密度,从中可以获得类似的采样调度策略。在此,我们指出,我们的常微分方程等价于他们工作的一个特例(对应于 DDPM 的连续时间模拟)。

命题 1 :公式 (14) 中的常微分方程,在使用最优模型 ϵ θ \epsilon_\theta ϵθ 时,等价于 Song et al. (2020) 中对应于"方差爆炸"(Variance-Exploding)SDE 的概率流常微分方程。

我们将证明包含在附录 B 中。虽然这些常微分方程是等价的,但采样过程并非如此,因为针对概率流常微分方程的欧拉方法会产生以下更新:

x t − Δ t α t − Δ t = x t α t + 1 2 ( 1 − α t − Δ t α t − Δ t − 1 − α t α t ) ⋅ α t 1 − α t ⋅ ϵ θ ( x t ) ( 15 ) \frac{x_{t-\Delta t}}{\sqrt{\alpha_{t-\Delta t}}} = \frac{x_t}{\sqrt{\alpha_t}} + \frac{1}{2} \left( \sqrt{\frac{1-\alpha_{t-\Delta t}}{\alpha_{t-\Delta t}}} - \sqrt{\frac{1-\alpha_t}{\alpha_t}} \right) \cdot \sqrt{\frac{\alpha_t}{1-\alpha_t}} \cdot \epsilon_\theta(x_t) \quad (15) αt−Δt xt−Δt=αt xt+21(αt−Δt1−αt−Δt −αt1−αt )⋅1−αtαt ⋅ϵθ(xt)(15)

当 α t \alpha_t αt 和 α t − Δ t \alpha_{t-\Delta t} αt−Δt 足够接近时,上式等价于我们的更新公式。然而,在采样步数较少时,这些选择会产生差异;我们针对 d σ ( t ) d\sigma(t) dσ(t)(其对"时间" t t t 的缩放依赖较小)进行欧拉步进,而 Song et al. (2020) 则是针对 d t dt dt 进行欧拉步进。

从代码角度,DDIM 和 DDPM 有区别吗?

训练(Training)阶段的代码逻辑完全一样(损失函数相同)。

推理(Inference/采样)阶段的代码逻辑完全不同(步长、噪声迭代公式不同);

多样性代价:DDIM 是一种确定性(Deterministic)的生成过程,而 DDPM 是随机性(Stochastic)的。确定性意味着相同的输入必然得到相同的输出,从而丢失了随机噪声带来的"探索空间",导致结果多样性降低。

A. 训练阶段(Training):没有区别

无论使用 DDPM 还是 DDIM,模型学到的东西是一模一样的

  • 损失函数 :都是最小预测噪声的 MSE Loss:
    L = E t , x 0 , ϵ ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 \mathcal{L} = \mathbb{E}_{t, x_0, \epsilon} \\\| \\epsilon - \\epsilon_\\theta(\\sqrt{\\bar{\\alpha}_t}x_0 + \\sqrt{1-\\bar{\\alpha}_t}\\epsilon, t) \\\|\^2 L=Et,x0,ϵ∥ϵ−ϵθ(αˉt x0+1−αˉt ϵ,t)∥2
  • 模型结构 :都是 UNet 预测噪声 ϵ θ \epsilon_\theta ϵθ。
  • 前向过程 :都是固定的高斯加噪过程 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xt∣xt−1)。

结论:训练 DDPM 模型得到的权重,可以直接用于 DDIM 采样。你不需要为 DDIM 单独训练一个新模型。

B. 推理/采样阶段(Inference):代码逻辑完全不同

这是两者差异最大的地方。DDPM 是马尔可夫链,必须一步步退回去;DDIM 是非马尔可夫链,可以"跳跃"着走。

特性 DDPM (Denoising Diffusion Probabilistic Models) DDIM (Denoising Diffusion Implicit Models)
核心公式 随机性 采样: x t − 1 = μ θ ( x t , t ) + σ t ϵ x_{t-1} = \mu_\theta(x_t, t) + \sigma_t \epsilon xt−1=μθ(xt,t)+σtϵ 确定性 采样: x t − 1 = μ ~ θ ( x t , t ) x_{t-1} = \tilde{\mu}_\theta(x_t, t) xt−1=μ~θ(xt,t)
噪声项 包含随机噪声 ϵ ∼ N ( 0 , I ) \epsilon \sim \mathcal{N}(0, I) ϵ∼N(0,I) 没有 随机噪声项( σ t = 0 \sigma_t=0 σt=0)
步数 T 通常需要 1000 步才能生成高质量图像 可以大幅减少到 10-50 步(甚至更少)
代码实现差异 每一轮循环都需要 torch.randn 每一轮循环只需要计算均值,无需随机数
速度 慢(因为步数多) 快(因为步数少,且无随机采样开销)

代码片段对比(伪代码):

python 复制代码
# --- DDPM 采样循环 ---
for t in reversed(range(T)):
    # 1. 预测噪声
    predicted_noise = model(x_t, t)
    
    # 2. 计算均值 mu
    mu = ... 
    
    # 3. 【关键点】添加随机噪声
    if t > 0:
        noise = torch.randn_like(x_t) # <--- 这里引入了随机性
        x_{t-1} = mu + sqrt(variance) * noise
    else:
        x_{t-1} = mu

# --- DDIM 采样循环 ---
for t in reversed(range(T)): # 注意:T 可能只有 20 或 50
    # 1. 预测噪声
    predicted_noise = model(x_t, t)
    
    # 2. 【关键点】直接计算前一步的确定性估计
    # 这里没有随机噪声项,完全由 mu 决定
    x_{t-1} = calculate_deterministic_step(x_t, predicted_noise, t, prev_t)

总结 :如果你把 T 从 1000 降到 10,DDPM 的代码会崩溃(生成一团噪点),而 DDIM 的代码能正常工作。这就是为什么代码逻辑不同。


2. 为何认为 DDIM 牺牲了一定的多样性?

要理解这一点,必须理解**随机性(Stochasticity)多样性(Diversity)**的关系。

A. DDPM 的随机性 = 多样性

在 DDPM 中,每一步都添加随机噪声 σ t ϵ \sigma_t \epsilon σtϵ。

  • 即使你给模型两个完全相同的 x T x_T xT(纯噪声),由于每一步添加的随机噪声 ϵ \epsilon ϵ 不同,最终生成的 x 0 x_0 x0 也会不同。
  • 比喻:就像你在走迷宫,每一步都有几个岔路,你需要扔骰子决定往哪走。多次扔骰子,你会走出完全不同的路线(多样性)。
B. DDIM 的确定性 = 唯一性

在 DDIM 中, σ t = 0 \sigma_t = 0 σt=0。

  • 公式变为: x t − 1 = f ( x t , model ) x_{t-1} = f(x_t, \text{model}) xt−1=f(xt,model)。
  • 这是一个确定性函数 。如果输入 x T x_T xT 相同,模型预测的噪声相同,那么输出的 x t − 1 x_{t-1} xt−1 必然相同。
  • 比喻:迷宫里只有一条直路,没有岔路。你只能走出唯一的一条路线。如果你重复走,结果永远一样。
C. 为什么说是"牺牲"?

因为 DDIM 强制将"多步随机过程"映射到了一个"单一路径"上。

  1. 去除了探索空间

    DDPM 在每一步都保留了大量的概率质量(因为加了噪声),这允许生成过程偏离"均值路径",从而探索数据流形(Data Manifold)附近的其他区域。

    DDIM 切断了这种偏离,强制沿着一条最可能的路径(均值轨迹)移动。

  2. 模态坍塌(Modal Collapse)风险

    如果训练数据中某些类别的特征比较模糊,DDPM 的随机性可以帮助模型"猜"出多种可能的解释(比如画猫,耳朵有点尖或有点圆都可以)。

    但 DDIM 会收敛到一个特定的解。如果初始噪声 x T x_T xT 固定,它永远只会生成同一种特定姿态/风格的猫。

  3. 直观实验

    • 固定随机种子,用 DDPM 生成 10 张猫图,你会发现姿势、光线、甚至品种可能略有不同(多样性高)。
    • 固定随机种子,用 DDIM 生成 10 张猫图,你会发现 10 张图几乎一模一样(多样性低)。

3. 真的"牺牲"了吗?有没有办法挽回?

是的,DDIM 确实通过去除随机性 来换取速度

但是,开发者们想出了一个办法来找回多样性 ,同时保持 DDIM 的速度:使用不同的初始噪声 x T x_T xT

  • DDIM 的优势 :虽然每一步是确定性的,但只要你改变起点 x T x_T xT(即初始随机噪声),你就能生成完全不同的图像。
  • DDPM 的优势 :即使起点 x T x_T xT 相同,每一步的随机性也能让你生成不同的图像。

总结对比:

维度 DDPM DDIM
随机来源 路径随机:每一步都加噪声 起点随机 :仅靠初始 x T x_T xT 不同
同一 x T x_T xT 生成结果 每次生成都不同 每次生成都相同(除非换 x T x_T xT)
多样性感知 高(局部随机性) 低(确定性轨迹)
速度

最终结论

DDIM 牺牲的是局部随机性带来的微观多样性 ,但它通过确定性映射 实现了大步长加速。在实际应用中,由于我们通常会改变 x T x_T xT(即换一批随机种子),DDIM 生成的图像库在宏观上依然具有足够的多样性,足以满足大多数生成任务的需求。

附录、DDIM 没有积分

是的,DDIM 在计算最终图像的概率时,同样避开了全概率公式的积分。

不仅如此,DDIM 在理论层面上做了一次彻底的颠覆:它直接消除了概率论中的随机性,把一个概率模型(Probabilistic Model)变成了一个确定性模型(Deterministic Model)。

1. 为什么 DDIM 可以不用积分?

在 DDPM 中,理论上要求解 P ( x 0 ) P(x_0) P(x0),必须对所有随机路径进行高维积分:

P ( x 0 ) = ∫ P ( x 0 : T )   d x 1 : T P(x_0) = \int P(x_{0:T}) \, \mathrm{d}x_{1:T} P(x0)=∫P(x0:T)dx1:T

这是因为从 x T x_T xT 到 x 0 x_0 x0 的每一步都包含高斯噪声(随机性),路径有无数条。

而 DDIM(Denoising Diffusion Implicit Models) 的核心创新点在于:它修改了逆向过程的定义,将每一步的步进方差(随机噪声)设为 0(即参数 σ t = 0 \sigma_t = 0 σt=0)。 3

  • 这意味着:一旦初始随机噪声 x T x_T xT 被确定,接下来生成图像的路径就完全固定了。
  • 一条输入噪声,对应一条绝对唯一的生成轨迹,对应一张最终图像。 1, 4, 5

既然路径是唯一的,这就不是一个概率上的"全概率多路径积分问题",而变成了一个映射问题: x 0 = f θ ( x T ) x_0 = f_\theta(x_T) x0=fθ(xT)。求解概率时,只需要计算 x T x_T xT 的多元标准高斯分布概率,再乘上变量代换的雅可比行列式即可。 5

2. 数学视角的转换:从"概率积分"到"微分方程"

由于消除了随机性,DDIM 的采样过程在数学上不再被看作是一个马尔可夫链的条件概率连乘,而是被证明为是常微分方程(ODE)的数值求解器。 6, 7

你可以把 DDIM 理解为在用欧拉法(Euler Method)去逼近求解一个特定的 概率流常微分方程(Probability Flow ODE): 5, 6

x t − 1 = α t − 1 x ^ 0 ( x t ) + 1 − α t − 1 ⋅ ϵ θ ( x t ) x_{t-1} = \sqrt{\alpha_{t-1}} \hat{x}0(x_t) + \sqrt{1 - \alpha{t-1}} \cdot \epsilon_\theta(x_t) xt−1=αt−1 x^0(xt)+1−αt−1 ⋅ϵθ(xt)

在这个公式里:

  • 每一项都是确定的数值计算,没有任何类似 N ( 0 , I ) \mathcal{N}(0, \mathbf{I}) N(0,I) 的随机采样项。
  • 既然在采样时连随机数都不用抽了,自然也就不存在"对所有可能路径进行全概率求和或积分"的必要了。 1, 3

总结

  • DDPM:为了避开全概率的高维积分,选择去最大化变分下界(VLB),通过训练预测每一步高斯分布的均值。
  • DDIM:直接在采样阶段把方差砍到 0,把概率积分问题降维成了确定性的常微分方程(ODE)数值积分,因此它不仅摆脱了全概率积分,还能做到跨步长快速采样。

训练的损失函数

L = E t , x 0 , ϵ ∥ ϵ ⏟ 真实噪声 − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ ⏟ x t , t ) ⏟ 模型预测的噪声 ∥ 2 \mathcal{L} = \mathbb{E}_{t, x_0, \epsilon} \\\| \\underbrace{\\epsilon}_{\\text{真实噪声}} - \\underbrace{\\epsilon_\\theta(\\underbrace{\\sqrt{\\bar{\\alpha}_t}x_0 + \\sqrt{1-\\bar{\\alpha}_t}\\epsilon}_{x_t}, t)}_{\\text{模型预测的噪声}} \\\|\^2 L=Et,x0,ϵ∥真实噪声 ϵ−模型预测的噪声 ϵθ(xt αˉt x0+1−αˉt ϵ,t)∥2

α ˉ t x 0 + 1 − α ˉ t ϵ \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon αˉt x0+1−αˉt ϵ ------ 输入 x t x_t xt

这是**重参数化技巧(Reparameterization Trick)**的体现。

在扩散模型中,从 x 0 x_0 x0 到 x t x_t xt 的转移分布是 q ( x t ∣ x 0 ) = N ( α ˉ t x 0 , ( 1 − α ˉ t ) I ) q(x_t|x_0) = \mathcal{N}(\sqrt{\bar{\alpha}_t}x_0, (1-\bar{\alpha}_t)I) q(xt∣x0)=N(αˉt x0,(1−αˉt)I)。

如果我们直接采样 x t x_t xt,我们需要从正态分布里采样,这会导致梯度无法回传(因为采样过程不可导)。

为了能让梯度从 Loss 传回模型,我们直接把 x t x_t xt 表示 为 x 0 x_0 x0 和 ϵ \epsilon ϵ 的线性组合:

  • α ˉ t x 0 \sqrt{\bar{\alpha}_t}x_0 αˉt x0:保留下来的信号部分。
  • 1 − α ˉ t ϵ \sqrt{1-\bar{\alpha}_t}\epsilon 1−αˉt ϵ:添加进去的噪声部分。

这样, x t x_t xt 就变成了一个确定性计算(只要有 x 0 x_0 x0 和 ϵ \epsilon ϵ 就能算出来),从而允许反向传播。

参考

kayla_ddims.pdf