去噪扩散概率模型(DDPM)是扩散模型大家族中一种杰出且高效的框架。该模型由 Ho 等人于 2020 年提出,它采用一个固定的多步前向过程,逐步向数据添加高斯噪声,并结合一个学习到的逆向过程,通过迭代去除噪声来生成新的数据样本。
前向过程:添加噪声
前向过程,也称为扩散过程,定义为一个马尔可夫链。它在 T 个离散时间步长中,通过添加少量高斯噪声,逐步破坏一个初始数据点 x0∼q(x0)。每个时间步 t 的噪声水平由预定义的方差调度 {βt}t=1T 控制,其中 0<β1<β2<...<βT<1。通常,T 很大(例如 T=1000),并且 βt 值很小,以确保每一步的变化都很小。
噪声样本 xt 在给定前一个样本 xt−1 时的分布是高斯分布:
q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)
在此,N(x;μ,σ2I) 表示关于变量 x、均值为 μ、对角协方差为 σ2I 的高斯分布。
这个过程的一个重要属性是,我们可以通过闭合形式直接从原始数据 x0 采样 xt,避免了迭代所有中间步骤。令 αt=1−βt 和 αˉt=∏i=1tαi。那么,xt 在 x0 为条件下的分布也是高斯分布:
q(xt∣x0)=N(xt;αˉtx0,(1−αˉt)I)
这个方程可以解释为将原始图像 x0 按 αˉt 缩放,并添加按 1−αˉt 缩放的高斯噪声 ϵ∼N(0,I):
xt=αˉtx0+1−αˉtϵ
随着 t 趋近于 T,αˉt 趋近于 0(因为 0<αt<1)。因此,xT 几乎完全独立于 x0,并类似于一个各向同性高斯分布 N(0,I)。方差调度 βt 通常选择为线性增长、二次增长或基于余弦调度。
逆向过程:学习去噪
DDPM 的生成能力源于学习逆向过程:从纯噪声 xT∼N(0,I) 开始,逐步去除噪声以获得一个逼真的样本 x0。这涉及学习 t=T,T−1,...,1 的转移概率 pθ(xt−1∣xt)。
如果 βt 足够小,真实的逆向转移 q(xt−1∣xt) 也会近似为高斯分布。难点在于计算真实的逆向转移 q(xt−1∣xt) 需要对所有可能的数据点进行边际化,这难以处理。然而,后验 q(xt−1∣xt,x0) 可以 处理,并且可以证明是高斯分布:
q(xt−1∣xt,x0)=N(xt−1;μ~t(xt,x0),β~tI)
这里
μ~t(xt,x0)=1−αˉtαˉt−1βtx0+1−αˉtαt(1−αˉt−1)xt
和 β~t=1−αˉt1−αˉt−1βt。
由于我们在逆向采样过程中没有 x0(这正是我们想要生成的!),我们使用神经网络来近似这个分布。DDPM 将逆向转移 pθ(xt−1∣xt) 参数化为高斯分布:
pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))
目标是训练参数 θ,使该分布紧密匹配真实的(但未知的)q(xt−1∣xt)。
网络参数化与简化目标函数
在最初的 DDPM 论文中,逆向过程的方差固定为未训练的常数 Σθ(xt,t)=σt2I。两个常见的选择是 σt2=βt 或 σt2=β~t。因此,神经网络只需要预测均值 μθ(xt,t)。
并非直接预测均值 μθ,DDPM 将网络重新参数化,以预测在步骤 t 添加的噪声 ϵ。回想前向过程方程:xt=αˉtx0+1−αˉtϵ。我们可以重新排列此方程,以 xt 和 ϵ 表示 x0:
x0=αˉt1(xt−1−αˉtϵ)
将此 x0 的表达式代入理想均值 μ~t(xt,x0) 的公式中,使我们能够以预测噪声 ϵθ(xt,t) 表示均值 μθ:
μθ(xt,t)=αt1(xt−1−αˉtβtϵθ(xt,t))
这种重新参数化建立了最小化预测均值 μθ 与真实均值 μ~t 之间差异,以及最小化预测噪声 ϵθ 与实际噪声 ϵ 之间差异的联系。
作者发现,使用源自数据对数似然变分下界(VLB)的简化目标函数来训练模型,在实践中效果非常好,并且更易于实现。这个简化目标旨在最小化前向过程中添加的真实噪声 ϵ 与网络预测的噪声 ϵθ 之间的均方误差:
Lsimple(θ)=Et∼U(1,T),x0∼q(x0),ϵ∼N(0,I)[∥ϵ−ϵθ(xt,t)∥2]
噪声样本 xt=αˉtx0+1−αˉtϵ 是使用原始数据 x0 和在随机选择的时间步 t 处采样的噪声 ϵ 生成的。
本质上,网络 ϵθ 以噪声样本 xt 和时间步 t 作为输入,并试图预测从 x0 生成 xt 所使用的噪声分量 ϵ。用此目标进行训练有效地教导网络在不同噪声水平下去噪样本。
图示固定的前向(加噪)过程,从数据 x0 到噪声 xT;以及学习到的逆向(去噪)过程,通过在每个步骤预测噪声 ϵθ 来从噪声 xT 生成数据 x0。
DDPM 训练与采样算法
训练:
- 采样一个真实数据点 x0∼q(x0)。
- 从 {1,...,T} 中均匀采样一个时间步 t。
- 采样噪声 ϵ∼N(0,I)。
- 计算噪声样本 xt=αˉtx0+1−αˉtϵ。
- 使用梯度下降,通过最小化损失 ∥ϵ−ϵθ(xt,t)∥2 来训练神经网络 ϵθ。在多次迭代和多个数据点上重复此过程。
采样(生成):
- 从纯噪声 xT∼N(0,I) 开始。
- 从 t=T 倒数到 1 迭代:
a. 如果 t>1,则采样 z∼N(0,I),否则 z=0。
b. 使用训练好的网络预测噪声 ϵθ(xt,t)。
c. 使用包含预测噪声的逆向转移公式计算去噪样本 xt−1:
xt−1=αt1(xt−1−αˉtβtϵθ(xt,t))+σtz
(此处 σt 是固定的标准差,例如 βt 或 β~t)。
- 最终结果 x0 即为生成的样本。
DDPM 为理解现代基于扩散的生成建模提供了坚实的基础。其生成高质量样本的能力,尤其是在图像合成方面,源于这种精心定义的加噪过程,以及通过直观的噪声预测目标训练出的去噪网络。后续部分将介绍基于分数的解释等变体,以及提高采样效率和控制的方法。