图1 DDPM 无条件控制生成的图像。 这些不是真实的人、地方、动物或物体。

前言

扩散模型最近在图像生成领域取得了巨大的成功,类似 OpenAI 的 DALL-E 2,Google 的 Imagen,以及 Stability AI 最近发行的能够达到商业级绘画目的的 Stable Diffusion 等,都是基于扩散模型来进行图像生成的。本文对知乎上各位大佬对于扩散模型(特别是 DDPM)的讲解进行了融合,带领大家深入浅出理解扩散和逆扩散过程。

数学基础

  1. 先验概率和后验概率
  • 先验概率:根据以往经验和分析得到的概率。它往往作为由因求果问题中的因出现,如 q ( Xt∣ X t − 1)q(X_{t}|X_{t-1})q(XtXt1)

  • 后验概率:是指在得到结果的信息后重新修正的概率。是执果寻因问题中的因,如 p ( X t − 1∣ Xt)p(X_{t-1}|X_{t})p(Xt1Xt)

  1. KL 散度

对于两个单一变量的高斯分布的 ppp qqq 而言,它们的 KL 散度为:

KL(p,q)=log σ2σ1 +σ 1 2+( μ 1− μ 2 ) 22 σ 2 2 − 1 2KL(p, q)=log\frac{\sigma_{2}}{\sigma_{1}}+\frac{\sigma_{1}^{2}+(\mu_{1}-\mu_{2})^{2}}{2\sigma_{2}^{2}}-\frac{1}{2} KL(p,q)=logσ1σ2+2σ22σ12+(μ1μ2)221

  1. 参数重整化

若希望从高斯分布 N ( μ , σ2)N(\mu, \sigma^{2})N(μ,σ2) 中采样,可以先从标准分布 N ( 0 , 1 )N(0, 1)N(0,1) 采样出 zzz,再得到 σ ∗ z + μ\sigma*z+\muσz+μ,这就是我们想要的采样结果。这样做的好处是将随机性转移到了 zzz 这个常量上,而 σ\sigmaσ μ\muμ 则当作仿射变换网络的一部分。

模型介绍

  1. 模型总览

图2 DDPM 是经过训练以逐渐去除噪声数据的参数化马尔可夫链。我们估计生成过程的参数。

DDPM 主要分为两个过程:

  • forward 加噪过程(从右往左)
  • reverse 去噪过程(从左往右)

加噪过程是指向数据集中的真实图像逐步加入高斯噪声,而去噪过程是指对加了噪声的图片逐步去噪,从而还原出真实图像。加噪过程满足一定的数学规律,不需要学习,而去噪过程则采用神经网络模型来学习。这样一来,神经网络模型就可以从一堆杂乱无章的噪声图片中生成真实图片了。

  1. 扩散过程
  • 逐步加噪

给定初始数据分布 x0∼ q ( x )x_{0} \sim q(x)x0q(x),我们定义一个前向扩散过程(forward diffusion process):我们向数据分布中逐步添加高斯噪声,加噪过程持续 TTT 次,产生一系列带噪声的图片 x1, . . . , xT x_{1},…,x_{T}x1,,xT。在由 x t − 1 x_{t-1}xt1 加噪至 xt x_{t}xt 的过程中,噪声的标准差/方差是以一个在区间 ( 0 , 1 )(0, 1)(0,1) 内的固定值 βT \beta_{T}βT 来确定的,均值是以固定值 βT \beta_{T}βT 和当前时刻的图片数据 x t − 1 x_{t-1}xt1 来确定的。以上描述的加噪过程可以写成公式:

q( x 1:T∣ x 0 ):= ∏ t=1Tq( x t∣ x t−1 ), q( x t∣ x t−1 ):=N( x t; 1− β tx t−1 , β tI)q(x_{1:T|x_{0}}):=\prod_{t=1}^{T}q(x_{t}|x_{t-1}), \quad q(x_{t}|x_{t-1}) := \mathcal N(x_{t};\sqrt{1-\beta_{t}}x_{t-1},\beta_{t}\mathbf{I}) q(x1:Tx0):=t=1Tq(xtxt1),q(xtxt1):=N(xt;1βt xt1,βtI)

上式的意思是:由 x t − 1 x_{t-1}xt1得到 xt x_{t}xt的过程,满足分布 N ( xt;1 − βt x t − 1, βtI )\mathcal N(x_{t};\sqrt{1-\beta_{t}}x_{t-1}, \beta_{t}\mathbf{I})N(xt;1βt xt1,βtI),因此噪声只由 βT \beta_{T}βT x t − 1 x_{t-1}xt1来确定,是一个固定值而不是一个可学习的过程。因此,只要有了 x0 x_{0}x0,并且提前确定每一步的固定值 β1, . . . , βT \beta_{1},…,\beta_{T}β1,,βT,我们就可以推出任意一部的加噪数据 x1, . . . , xT x_{1},…,x_{T}x1,,xT。值得注意的是,这里的加噪过程是一个马尔科夫链过程,即当前状态的概率只与上一时刻有关。

  • 加噪结果

随着 ttt 的不断增大,最终原始数据 x0 x_{0}x0 会逐步失去它的特征。最终当 T → ∞T\rightarrow\inftyT时, xT x_{T}xT趋近于一个各向同性的高斯分布。从视觉上看,就是将原本一张完好的照片加噪很多步后,图片几乎变成了一张完全时噪声的图片。

  • 任意时刻 x tx_{t} xt的计算

逐步加噪过程中,我们其实并不需要一步步地从 x0, x1, . . .x_{0},x_{1},…x0,x1, 去迭代得到 xt x_{t}xt。事实上,我们可以直接从 x0 x_{0}x0 和固定值序列 { βT∈ ( 0 , 1 ) } t = 1T \{ \beta_{T}∈(0, 1)\}_{t=1}^{T}{βT(0,1)}t=1T直接计算得到:

q( x t∣ x 0)=N( x t;α t‾x 0,(1− αt‾)I) q(x_{t}|x_{0}) = \mathcal N(x_{t};\sqrt{\overline{\alpha_{t}}}x_{0}, (1-\overline{\alpha_{t}})\mathbf{I}) \\ q(xtx0)=N(xt;αt x0,(1αt)I)

上式中, αt= 1 − βt \alpha_{t}=1-\beta_{t}αt=1βtα t‾= ∏ i = 1Tαi \overline{\alpha_{t}}=\prod_{i=1}^T\alpha_{i}αt=i=1Tαi,中间推导过程不再罗列。

  1. 逆扩散过程

如果我们能够将上述过程转换方法,即从 q ( x t − 1∣ xt)q(x_{t-1}|x_{t})q(xt1xt)中采样,那么我们就可以从一个随机的高斯分布 N ( 0 , I )\mathcal N(0, \mathbf{I})N(0,I)中重建出一个真实的原始样本,也就是从一个完全杂乱无章的噪声图片中得到一张真实图片。但是,由于需要从完整数据集中找到数据分布,我们没办法简单地预测 q ( x t − 1∣ xt)q(x_{t-1}|x_{t})q(xt1xt),因此需要学习一个模型 pθ p_{\theta}pθ来近似模拟这个条件概率,从而运行逆扩散过程。

p θ( x 0:T ):=p( x T) ∏ t=1T p θ( x t−1 ∣ x t),p θ( x t−1 ∣ x t):=N( x t−1 ; μ θ( x t,t), ∑ θ( x t,t) )p_{\theta}(x_{0:T}):=p(x_{T})\prod_{t=1}^{T}p_{\theta}(x_{t-1}|x_{t}), \quad p_{\theta}(x_{t-1}|x_{t}):=\mathcal N(x_{t-1};\mu_{\theta(x_{t},t),\sum_{\theta}(x_{t},t)}) pθ(x0:T):=p(xT)t=1Tpθ(xt1xt),pθ(xt1xt):=N(xt1;μθ(xt,t),θ(xt,t))

要点分析

正向的扩散过程

  • 扩散过程时逐步加噪的过程
  • 扩散过程符合马尔科夫假设
  • 每一步的噪声都是高斯噪声
  • 加噪是用方差参数来控制的(预定义的超参数)
  • 正向扩散过程属于无参模型(不需要进行学习)
  • 该过程支持在任意步长采样(方便后续的训练)

逆向的扩散过程

  • 从高斯噪声中采样,学习一个模型估计真实的条件概率分布(从上一状态到下一状态的条件概率模型)
  • 也可以直接计算任意状态的分布,因此可以直接采样,然后和真实图像计算均方误差
  • 用一个 U-Net 结构来对 tt t 时刻的噪声进行预测
  • 逆过程的均值需要模型预测(有参),但方差采用了常数项(无参,当然有工作将其改进成有参也同样 work)

伪代码

相关论文

标题简称出版评语
Denoising Diffusion Probabilistic ModelsDDPMNIPS 2020开山之作
Denoising Diffusion Implicit ModelsDDIMICLR 2021采样提速
Improved denoising diffusion probabilistic models\ICML 2021在保证高图像质量的同时提升对数似然
Diffusion Models Beat GANs on Image Synthesis\NIPS 2021Diffusion Models VS. GANs(提出了带条件的扩散模型)
Classifier-Free Diffusion Guidance\NIPS 2021引入等价结构替换分类器引导
Hierarchical Text-Conditional Image Generation with CLIP LatentsDALL-E 2NIPS 2022OpenAI 文本生成图像
Photorealistic Text-to-Image Diffusion Models with Deep Language UnderstandingImagenNIPS 2022Google 文本生成图像
High-Resolution Image Synthesis with Latent Diffusion ModelsLDMCVPR 2022采样提速

参考

  • DDPM解读(一)| 数学基础,扩散与逆扩散过程和训练推理方法
  • diffusion model最近在图像生成领域大红大紫,如何看待它的风头开始超过GAN?
  • 基于扩散模型的文本引导图像生成算法
  • 生成扩散模型漫谈(一):DDPM = 拆楼 + 建楼
  • 生成扩散模型漫谈(二):DDPM = 自回归式VAE
  • Diffusion Model一发力,GAN就过时了?