去噪扩散概率模型(DDPM)的简单理解

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

前言

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

数学基础

  1. 先验概率和后验概率
  • 先验概率:根据以往经验和分析得到的概率。它往往作为由因求果问题中的因出现,如
    q
    (
    X
    t

    X
    t

    1
    )
    q(X_{t}|X_{t-1})
    q(XtXt1)

  • 后验概率:是指在得到结果的信息后重新修正的概率。是执果寻因问题中的因,如
    p
    (
    X
    t

    1

    X
    t
    )
    p(X_{t-1}|X_{t})
    p(Xt1Xt)

  1. KL 散度

对于两个单一变量的高斯分布的
p
p
p

q
q
q
而言,它们的 KL 散度为:


K
L
(
p
,
q
)
=
l
o
g
σ
2
σ
1
+
σ
1
2
+
(
μ
1

μ
2
)
2
2
σ
2
2

1
2
KL(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
(
,
1
)
N(0, 1)
N(0,1)
采样出
z
z
z
,再得到
σ

z
+
μ
\sigma*z+\mu
σz+μ
,这就是我们想要的采样结果。这样做的好处是将随机性转移到了
z
z
z
这个常量上,而
σ
\sigma
σ

μ
\mu
μ
则当作仿射变换网络的一部分。

模型介绍

  1. 模型总览

去噪扩散概率模型(DDPM)的简单理解

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

DDPM 主要分为两个过程:

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

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

  1. 扩散过程
  • 逐步加噪

给定初始数据分布
x

q
(
x
)
x_{0} \sim q(x)
x0q(x)
,我们定义一个前向扩散过程(forward diffusion process):我们向数据分布中逐步添加高斯噪声,加噪过程持续
T
T
T
次,产生一系列带噪声的图片
x
1
,
.
.
.
,
x
T
x_{1},...,x_{T}
x1,...,xT
。在由
x
t

1
x_{t-1}
xt1
加噪至
x
t
x_{t}
xt
的过程中,噪声的标准差/方差是以一个在区间
(
,
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
)
:
=

t
=
1
T
q
(
x
t

x
t

1
)
,
q
(
x
t

x
t

1
)
:
=
N
(
x
t
;
1

β
t
x
t

1
,
β
t
I
)
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βtxt1,βtI)

上式的意思是:由
x
t

1
x_{t-1}
xt1
得到
x
t
x_{t}
xt
的过程,满足分布
N
(
x
t
;
1

β
t
x
t

1
,
β
t
I
)
\mathcal N(x_{t};\sqrt{1-\beta_{t}}x_{t-1}, \beta_{t}\mathbf{I})
N(xt;1βtxt1,βtI)
,因此噪声只由
β
T
\beta_{T}
βT

x
t

1
x_{t-1}
xt1
来确定,是一个固定值而不是一个可学习的过程。因此,只要有了
x
x_{0}
x0
,并且提前确定每一步的固定值
β
1
,
.
.
.
,
β
T
\beta_{1},...,\beta_{T}
β1,...,βT
,我们就可以推出任意一部的加噪数据
x
1
,
.
.
.
,
x
T
x_{1},...,x_{T}
x1,...,xT
。值得注意的是,这里的加噪过程是一个马尔科夫链过程,即当前状态的概率只与上一时刻有关。

  • 加噪结果

随着
t
t
t
的不断增大,最终原始数据
x
x_{0}
x0
会逐步失去它的特征。最终当
T


T\rightarrow\infty
T
时,
x
T
x_{T}
xT
趋近于一个各向同性的高斯分布。从视觉上看,就是将原本一张完好的照片加噪很多步后,图片几乎变成了一张完全时噪声的图片。

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

逐步加噪过程中,我们其实并不需要一步步地从
x
,
x
1
,
.
.
.
x_{0},x_{1},...
x0,x1,...
去迭代得到
x
t
x_{t}
xt
。事实上,我们可以直接从
x
x_{0}
x0
和固定值序列
{
β
T

(
,
1
)
}
t
=
1
T
\{ \beta_{T}∈(0, 1)\}_{t=1}^{T}
{βT(0,1)}t=1T
直接计算得到:


q
(
x
t

x
)
=
N
(
x
t
;
α
t

x
,
(
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;αtx0,(1αt)I)

上式中,
α
t
=
1

β
t
\alpha_{t}=1-\beta_{t}
αt=1βt

α
t

=

i
=
1
T
α
i
\overline{\alpha_{t}}=\prod_{i=1}^T\alpha_{i}
αt=i=1Tαi
,中间推导过程不再罗列。

  1. 逆扩散过程

如果我们能够将上述过程转换方法,即从
q
(
x
t

1

x
t
)
q(x_{t-1}|x_{t})
q(xt1xt)
中采样,那么我们就可以从一个随机的高斯分布
N
(
,
I
)
\mathcal N(0, \mathbf{I})
N(0,I)
中重建出一个真实的原始样本,也就是从一个完全杂乱无章的噪声图片中得到一张真实图片。但是,由于需要从完整数据集中找到数据分布,我们没办法简单地预测
q
(
x
t

1

x
t
)
q(x_{t-1}|x_{t})
q(xt1xt)
,因此需要学习一个模型
p
θ
p_{\theta}
pθ
来近似模拟这个条件概率,从而运行逆扩散过程。


p
θ
(
x
:
T
)
:
=
p
(
x
T
)

t
=
1
T
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 结构来对
    t
    t
    t
    时刻的噪声进行预测
  • 逆过程的均值需要模型预测(有参),但方差采用了常数项(无参,当然有工作将其改进成有参也同样 work)

伪代码

去噪扩散概率模型(DDPM)的简单理解

相关论文

标题 简称 出版 评语
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就过时了?
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。