图1 DDPM 无条件控制生成的图像。 这些不是真实的人、地方、动物或物体。
前言
扩散模型最近在图像生成领域取得了巨大的成功,类似 OpenAI 的 DALL-E 2,Google 的 Imagen,以及 Stability AI 最近发行的能够达到商业级绘画目的的 Stable Diffusion 等,都是基于扩散模型来进行图像生成的。本文对知乎上各位大佬对于扩散模型(特别是 DDPM)的讲解进行了融合,带领大家深入浅出理解扩散和逆扩散过程。
数学基础
- 先验概率和后验概率
先验概率:根据以往经验和分析得到的概率。它往往作为由因求果问题中的因出现,如 q ( Xt∣ X t − 1)q(X_{t}|X_{t-1})q(Xt∣Xt−1)
后验概率:是指在得到结果的信息后重新修正的概率。是执果寻因问题中的因,如 p ( X t − 1∣ Xt)p(X_{t-1}|X_{t})p(Xt−1∣Xt)
- 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)2−21
- 参数重整化
若希望从高斯分布 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μ 则当作仿射变换网络的一部分。
模型介绍
- 模型总览
图2 DDPM 是经过训练以逐渐去除噪声数据的参数化马尔可夫链。我们估计生成过程的参数。
DDPM 主要分为两个过程:
- forward 加噪过程(从右往左)
- reverse 去噪过程(从左往右)
加噪过程是指向数据集中的真实图像逐步加入高斯噪声,而去噪过程是指对加了噪声的图片逐步去噪,从而还原出真实图像。加噪过程满足一定的数学规律,不需要学习,而去噪过程则采用神经网络模型来学习。这样一来,神经网络模型就可以从一堆杂乱无章的噪声图片中生成真实图片了。
- 扩散过程
- 逐步加噪
给定初始数据分布 x0∼ q ( x )x_{0} \sim q(x)x0∼q(x),我们定义一个前向扩散过程(forward diffusion process):我们向数据分布中逐步添加高斯噪声,加噪过程持续 TTT 次,产生一系列带噪声的图片 x1, . . . , xT x_{1},…,x_{T}x1,…,xT。在由 x t − 1 x_{t-1}xt−1 加噪至 xt x_{t}xt 的过程中,噪声的标准差/方差是以一个在区间 ( 0 , 1 )(0, 1)(0,1) 内的固定值 βT \beta_{T}βT 来确定的,均值是以固定值 βT \beta_{T}βT 和当前时刻的图片数据 x t − 1 x_{t-1}xt−1 来确定的。以上描述的加噪过程可以写成公式:
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:T∣x0):=t=1∏Tq(xt∣xt−1),q(xt∣xt−1):=N(xt;1−βtxt−1,βtI)
上式的意思是:由 x t − 1 x_{t-1}xt−1得到 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−βtxt−1,βtI),因此噪声只由 βT \beta_{T}βT和 x t − 1 x_{t-1}xt−1来确定,是一个固定值而不是一个可学习的过程。因此,只要有了 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(xt∣x0)=N(xt;αtx0,(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,中间推导过程不再罗列。
- 逆扩散过程
如果我们能够将上述过程转换方法,即从 q ( x t − 1∣ xt)q(x_{t-1}|x_{t})q(xt−1∣xt)中采样,那么我们就可以从一个随机的高斯分布 N ( 0 , I )\mathcal N(0, \mathbf{I})N(0,I)中重建出一个真实的原始样本,也就是从一个完全杂乱无章的噪声图片中得到一张真实图片。但是,由于需要从完整数据集中找到数据分布,我们没办法简单地预测 q ( x t − 1∣ xt)q(x_{t-1}|x_{t})q(xt−1∣xt),因此需要学习一个模型 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=1∏Tpθ(xt−1∣xt),pθ(xt−1∣xt):=N(xt−1;μθ(xt,t),∑θ(xt,t))
要点分析
正向的扩散过程:
- 扩散过程时逐步加噪的过程
- 扩散过程符合马尔科夫假设
- 每一步的噪声都是高斯噪声
- 加噪是用方差参数来控制的(预定义的超参数)
- 正向扩散过程属于无参模型(不需要进行学习)
- 该过程支持在任意步长采样(方便后续的训练)
逆向的扩散过程:
- 从高斯噪声中采样,学习一个模型估计真实的条件概率分布(从上一状态到下一状态的条件概率模型)
- 也可以直接计算任意状态的分布,因此可以直接采样,然后和真实图像计算均方误差
- 用一个 U-Net 结构来对 tt t 时刻的噪声进行预测
- 逆过程的均值需要模型预测(有参),但方差采用了常数项(无参,当然有工作将其改进成有参也同样 work)
伪代码
相关论文
标题 | 简称 | 出版 | 评语 |
---|---|---|---|
Denoising Diffusion Probabilistic Models | DDPM | NIPS 2020 | 开山之作 |
Denoising Diffusion Implicit Models | DDIM | ICLR 2021 | 采样提速 |
Improved denoising diffusion probabilistic models | \ | ICML 2021 | 在保证高图像质量的同时提升对数似然 |
Diffusion Models Beat GANs on Image Synthesis | \ | NIPS 2021 | Diffusion Models VS. GANs(提出了带条件的扩散模型) |
Classifier-Free Diffusion Guidance | \ | NIPS 2021 | 引入等价结构替换分类器引导 |
Hierarchical Text-Conditional Image Generation with CLIP Latents | DALL-E 2 | NIPS 2022 | OpenAI 文本生成图像 |
Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding | Imagen | NIPS 2022 | Google 文本生成图像 |
High-Resolution Image Synthesis with Latent Diffusion Models | LDM | CVPR 2022 | 采样提速 |
参考
- DDPM解读(一)| 数学基础,扩散与逆扩散过程和训练推理方法
- diffusion model最近在图像生成领域大红大紫,如何看待它的风头开始超过GAN?
- 基于扩散模型的文本引导图像生成算法
- 生成扩散模型漫谈(一):DDPM = 拆楼 + 建楼
- 生成扩散模型漫谈(二):DDPM = 自回归式VAE
- Diffusion Model一发力,GAN就过时了?