去噪扩散概率模型(DDPM)是一个许多高阶技术所建立的底层框架。理解其主要运作方式,对于探索更复杂的架构和训练方法非常必要。DDPMs遵循一个简单而有效的工作原理:通过正向扩散过程系统地破坏数据结构,然后学习一个反向过程来恢复它,从而有效地生成新数据。
正向过程:添加噪声
正向过程,记为 q,在 T 个离散时间步长上逐步向初始数据点 x0(例如图像)添加高斯噪声。此过程定义为马尔可夫链,其中时间步 t 的状态 xt 仅依赖于前一步的状态 xt−1。
具体来说,转换由条件高斯分布定义:
q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)
这里,βt 表示在步长 t 添加的噪声的方差。这些方差由预设的方差调度 {βt}t=1T 决定,通常是随时间增加的小值(例如,从 10−4 到 0.02)。随着 t 增加,数据逐步失去其独特特性,如果 T 足够大,最终会接近各向同性高斯分布 xT∼N(0,I)。
此过程的一个有用性质是,我们可以直接从 x0 采样 xt,而无需迭代中间步骤。设 αt=1−βt 且 αˉt=∏s=1tαs,则分布 q(xt∣x0) 也是高斯的:
q(xt∣x0)=N(xt;αˉtx0,(1−αˉt)I)
这使得我们能够使用重参数 (parameter)化技巧将 xt 表示为:
xt=αˉtx0+1−αˉtϵ
其中 ϵ∼N(0,I) 是标准高斯噪声。这种表示方式对高效训练很要紧。
该图描绘了正向扩散过程,逐步从数据 x0 添加噪声直至近似噪声 xT。
反向过程:学习去噪
生成能力源于反向过程 pθ,其目的是逆转扩散。从纯噪声 xT∼N(0,I) 开始,目标是学习转换 pθ(xt−1∣xt) 以逐步去除噪声并最终采样一个真实数据点 x0。
当以 x0 为条件时,真实的反向转换 q(xt−1∣xt,x0) 是可处理的,并且也是高斯的。然而,在生成过程中 x0 是未知的。DDPM 使用神经网络 (neural network)学习的参数 (parameter)化高斯分布来近似真实的反向转换 q(xt−1∣xt):
pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))
神经网络,通常是U-Net架构(我们将在第二章中详细介绍),将带噪声数据 xt 和时间步长 t 作为输入。它被训练来预测反向转换的参数。对于DDPM,方差 Σθ(xt,t) 通常固定为与正向过程方差相关的值(σt2I,其中 σt2 通常是 βt 或 β~t=1−αˉt1−αˉt−1βt)。该网络主要集中于学习均值 μθ(xt,t)。
训练目标
训练涉及最大化数据的对数似然 logpθ(x0)。这通过优化对数似然的变分下界 (ELBO) 来实现。通过数学推导(涉及正向和反向过程的性质),目标函数可以得到大幅简化。实践中常用的一种有效目标函数是:
Lsimple(θ)=Et∼U(1,T),x0∼数据,ϵ∼N(0,I)[∣∣ϵ−ϵθ(xt,t)∣∣2]
其中 xt=αˉtx0+1−αˉtϵ,且 ϵθ 是神经网络 (neural network)的输出。在这种表示中,网络被训练来预测添加到 x0 以获得 xt 的噪声 ϵ。预测噪声 ϵ 已被发现比直接预测均值 μθ(xt,t) 或去噪图像 x0 更稳定和有效。
该目标函数将DDPM与基于分数的生成模型联系起来。最优的 ϵθ(xt,t) 与分数函数 ∇xtlogq(xt) 相关,后者代表数据空间中指向更高密度的方向。实际上,神经网络学习估计这个按比例缩放的分数函数。我们将在本章稍后讨论分数匹配和ODE时再次提到这种联系。
采样
一旦模型 pθ 训练完成,生成新样本包括:
- 从先验分布中采样 xT:xT∼N(0,I)。
- 对于 t=T,T−1,…,1,迭代地从 pθ(xt−1∣xt) 采样 xt−1。这涉及在每个步骤运行神经网络 (neural network) ϵθ 来计算 μθ(xt,t),然后从所得的高斯分布中采样。
这种迭代过程需要对神经网络进行 T 次顺序评估,使得标准DDPM采样相对于其他生成模型(如GAN或VAE)而言相对较慢。像DDIM(我们接下来会回顾)以及在第六章中讨论的进阶采样器都旨在加速这一过程。
本次回顾提供了DDPM所需的背景。尽管原理简单,但噪声调度、网络架构和目标公式的选择提供了许多改进的方向,构成了后续章节中涵盖的高阶主题的要点。在我们继续分析噪声调度和研究更复杂的模型变体时,请记住这种基本结构。