前言
DDPM是2020年被提出来的一篇论文,论文全称是《Denoising Diffusion Probabilistic Models》去噪扩散概率模型,这是一种基于马尔科夫链的图像生成模型,其生成的图像质量更好,多样性更强,并且训练更加稳定。DDPM模型的工作原理包括两个主要过程:前向过程(扩散过程)和反向过程(逆扩散过程)。在前向过程中,模型逐步向数据中添加噪声,直到数据完全变成高斯噪声;而在反向过程中,模型则逐步从高斯噪声中去除噪声,最终生成原始数据或新的数据样本。接下来我们详细介绍一下DDPM这篇论文。
一、建模
图像生成可以建模如下图所示:
首先从一个简单的分布Z中(例如高斯分布)进行采样,然后将其经过神经网络,使得最后生成图像X的概率
P
θ
(
x
)
P_{\theta}(x)
Pθ(x)和从真实分布中采样到图像X的概率
P
d
a
t
a
(
x
)
P_{data}(x)
Pdata(x)相同。我们要求的就是神经网络的参数
θ
\theta
θ。
假设我们可以计算出
P
θ
(
x
)
P_{\theta}(x)
Pθ(x)的概率,在
P
d
a
t
a
(
x
)
P_{data}(x)
Pdata(x)中进行采样的到{
x
1
,
x
2
,
x
3
,
.
.
.
,
x
m
x^1,x^2,x^3,...,x^m
x1,x2,x3,...,xm},则神经网络的优化目标就是极大似然估计,
这个公式可以理解为找到一个网络参数
θ
\theta
θ,让其产生{
x
1
,
x
2
,
x
3
,
.
.
.
,
x
m
x^1,x^2,x^3,...,x^m
x1,x2,x3,...,xm}的概率连乘最大。也就是说最终连乘概率最大,则
P
θ
(
x
)
P_\theta(x)
Pθ(x)和
P
d
a
t
a
(
x
)
P_{data}(x)
Pdata(x)两个分布越接近。
为什么最大似然估计(连乘概率越大),两个分布越接近呢?这个是可以通过数学公式推导出来。直接上结果:
因此可以理解为最大似然估计可以近似等于最小化两个分布之间的KL散度。
对于最大似然公式,我们在前面加入
log
\log
log,如下所示:
对于每一个
log
P
(
x
)
\log P(x)
logP(x),对其进行变形,
log
P
(
x
)
=
∫
z
q
(
z
∣
x
)
log
P
(
x
)
d
z
=
∫
z
q
(
z
∣
x
)
log
(
P
(
z
,
x
)
P
(
z
∣
x
)
)
d
z
=
∫
z
q
(
z
∣
x
)
log
(
P
(
z
,
x
)
q
(
z
∣
x
)
q
(
z
∣
x
)
P
(
z
∣
x
)
)
d
z
=
∫
z
q
(
z
∣
x
)
log
(
P
(
z
,
x
)
q
(
z
∣
x
)
)
d
z
+
∫
z
q
(
z
∣
x
)
log
(
q
(
z
∣
x
)
P
(
z
∣
x
)
)
d
z
⩾
∫
z
q
(
z
∣
x
)
log
(
P
(
z
,
x
)
q
(
z
∣
x
)
)
d
z
=
E
q
(
z
∣
x
)
[
log
(
P
(
x
,
z
)
q
(
z
∣
x
)
)
]
\log P (x) \\= \int_zq(z|x)\log P(x)dz \\= \int_zq(z|x)\log(\frac{P(z,x)}{P(z|x)})dz \\= \int_zq(z|x)\log(\frac{P(z,x)}{q(z|x)}\frac{q(z|x)}{P(z|x)})dz \\= \int_zq(z|x)\log(\frac{P(z,x)}{q(z|x)})dz + \int_zq(z|x)\log(\frac{q(z|x)}{P(z|x)})dz \\\geqslant\int_zq(z|x)\log(\frac{P(z,x)}{q(z|x)})dz \\= E_{q(z|x)}[\log(\frac{P(x,z)}{q(z|x)})]
logP(x)=∫zq(z∣x)logP(x)dz=∫zq(z∣x)log(P(z∣x)P(z,x))dz=∫zq(z∣x)log(q(z∣x)P(z,x)P(z∣x)q(z∣x))dz=∫zq(z∣x)log(q(z∣x)P(z,x))dz+∫zq(z∣x)log(P(z∣x)q(z∣x))dz⩾∫zq(z∣x)log(q(z∣x)P(z,x))dz=Eq(z∣x)[log(q(z∣x)P(x,z))]
可以得出,
log
P
(
x
)
\log P(x)
logP(x)的下界为
E
q
(
z
∣
x
)
[
log
(
P
(
x
,
z
)
q
(
z
∣
x
)
)
]
E_{q(z|x)}[\log(\frac{P(x,z)}{q(z|x)})]
Eq(z∣x)[log(q(z∣x)P(x,z))],最大化
log
P
(
x
)
\log P(x)
logP(x)的问题可以转化为最大化
E
q
(
z
∣
x
)
[
log
(
P
(
x
,
z
)
q
(
z
∣
x
)
)
]
E_{q(z|x)}[\log(\frac{P(x,z)}{q(z|x)})]
Eq(z∣x)[log(q(z∣x)P(x,z))]。其中
q
(
z
∣
x
)
q(z|x)
q(z∣x)可以是任意分布,可以把其看作是模型中编码的过程,根据一个已知输入
x
x
x,映射为
z
z
z的概率。因为模型的参数和输入是确定的,所以
q
(
z
∣
x
)
q(z|x)
q(z∣x)是一个确定性的分布。
二、重参数化技巧
在正式介绍DDPM之前,首先介绍一下高斯分布的重参数化相关知识。
对于一个高斯分布
ϵ
∼
N
(
0
,
I
)
\epsilon\sim\mathcal{N}(0, I)
ϵ∼N(0,I),
y
=
μ
+
σ
∗
ϵ
y = \mu+\sigma*\epsilon
y=μ+σ∗ϵ,则
y
∼
N
(
μ
,
σ
2
I
)
y\sim\mathcal{N}(\mu,\sigma^2I)
y∼N(μ,σ2I)。
y
1
∼
N
(
μ
1
,
σ
1
2
I
)
,
y
2
∼
N
(
μ
2
,
σ
2
2
I
)
y_1\sim\mathcal{N}(\mu_1,\sigma_1^2I),y_2\sim\mathcal{N}(\mu_2,\sigma_2^2I)
y1∼N(μ1,σ12I),y2∼N(μ2,σ22I),假设
y
3
=
y
1
+
y
2
y_3=y_1+y_2
y3=y1+y2,则
y
3
∼
N
(
μ
1
+
μ
2
,
(
σ
1
2
+
σ
2
2
)
I
)
y_3\sim\mathcal{N}(\mu_1+\mu_2,(\sigma_1^2+\sigma_2^2)I)
y3∼N(μ1+μ2,(σ12+σ22)I)。
接下来举一个详细的例子说明重参数化的作用。
y 1 = μ 1 + σ 1 ∗ ϵ 1 y_1 = \mu_1+\sigma_1*\epsilon_1 y1=μ1+σ1∗ϵ1, y 1 ∼ N ( μ 1 , σ 1 2 I ) y_1\sim\mathcal{N}(\mu_1,\sigma_1^2I) y1∼N(μ1,σ12I)
y 2 = μ 2 + σ 2 ∗ ϵ 2 y_2 = \mu_2+\sigma_2*\epsilon_2 y2=μ2+σ2∗ϵ2, y 2 ∼ N ( μ 2 , σ 2 2 I ) y_2\sim\mathcal{N}(\mu_2,\sigma_2^2I) y2∼N(μ2,σ22I)
y 3 = y 1 + y 2 y_3 = y_1+y_2 y3=y1+y2, y 3 ∼ N ( μ 1 + μ 2 , ( σ 1 2 + σ 2 2 ) I ) y_3\sim\mathcal{N}(\mu_1+\mu_2,(\sigma_1^2+\sigma_2^2)I) y3∼N(μ1+μ2,(σ12+σ22)I)
因此, y 3 = μ 1 + μ 2 + ( σ 1 2 + σ 2 2 ) ∗ ϵ 因此,y_3 = \mu_1+\mu_2+\sqrt{(\sigma_1^2+\sigma_2^2)}*\epsilon 因此,y3=μ1+μ2+(σ12+σ22)∗ϵ, ϵ ∼ N ( 0 , I ) \epsilon\sim\mathcal{N}(0,I) ϵ∼N(0,I)
通过重参数化技巧,我们可以把两个不同的高斯分布的和用一个新的高斯分布表示。
三、DDPM理论
DDPM可以分为两个过程,分别是前向(加噪)过程和反向(去噪)过程。如下图所示:
前向(加噪)过程对应图中从
x
0
x_0
x0到
x
T
x_T
xT的过程,对于一张图片,逐渐向其中加入噪声,直至照片变成一张高斯白噪声。反向(去噪)过程对应从图中
x
T
x_T
xT到
x
0
x_0
x0的过程,给定一张噪声图片,逐步去噪最终生成完整的照片。DDPM可以理解为照片本来就存在于噪声中,通过不断的去噪把隐藏在噪声中的照片显示出来。
DDPM与经典图像生成模型VAE的区别如下:
VAE在训练时首先将图片使用编码器映射成简单的分布,然后在使用解码器将简单的分布映射成图片,最后将解码器生成的图片与一开始输入的图片算LOSS。在使用VAE进行图片生成时只需要使用解码器即可,在简单分布中进行采样然后经过解码器生成最终图片。
而DDPM与VAE相比,其前向(加噪)过程看以看作是VAE中的编码器,其反向(去噪)过程可以看作是VAE中的解码器。而与VAE不同的是,其加噪过程是一个确定性的过程,不需要使用模型进行预测。
因此个人认为,DDPM之所以可以生成高质量的图片,是因为其不确定性元素较少,模型的预测难度变低,所以最终生成图片结果质量较好。
四、前向过程
扩散模型的前向过程又称为扩散过程(加噪过程),那么在前向过程中每一步加多少噪声呢?对应的加噪公式对应为:
下面举一个例子:
对于图片 x 0 x_0 x0,对他进行第一次加噪得到 x 1 x_1 x1,则 x 1 x_1 x1为:
x 1 = ( 1 − β 1 ) ∗ x 0 + β 1 ∗ ϵ 1 x_1 = \sqrt{(1-\beta_1)} *x_0+\beta_1*\epsilon_1 x1=(1−β1)∗x0+β1∗ϵ1
然后进行第二次加噪得到 x 2 x_2 x2,
x 2 = ( 1 − β 2 ) ∗ x 1 + β 2 ∗ ϵ 2 x_2 = \sqrt{(1-\beta_2)} *x_1+\beta_2*\epsilon_2 x2=(1−β2)∗x1+β2∗ϵ2
将 x 1 x_1 x1带入,得到
x 2 = ( 1 − β 2 ) ∗ ( ( 1 − β 1 ) ∗ x 0 + β 1 ∗ ϵ 1 ) + β 2 ∗ ϵ 2 = ( 1 − β 2 ) ( 1 − β 1 ) ∗ x 0 + ( 1 − β 2 ) β 1 ∗ ϵ 1 + β 2 ∗ ϵ 2 x_2 = \sqrt{(1-\beta_2)}*(\sqrt{(1-\beta_1)} *x_0+\beta_1*\epsilon_1)+\beta_2*\epsilon_2\\ =\sqrt{(1-\beta_2)(1-\beta_1)}*x_0+\sqrt{(1-\beta_2)}\beta_1*\epsilon_1+\beta_2*\epsilon_2 x2=(1−β2)∗((1−β1)∗x0+β1∗ϵ1)+β2∗ϵ2=(1−β2)(1−β1)∗x0+(1−β2)β1∗ϵ1+β2∗ϵ2
由于 ϵ 1 , ϵ 2 \epsilon_1,\epsilon_2 ϵ1,ϵ2都是标准高斯分布,根据重参数化技巧, ( 1 − β 2 ) β 1 ∗ ϵ 1 + β 2 ∗ ϵ 2 \sqrt{(1-\beta_2)}\beta_1*\epsilon_1+\beta_2*\epsilon_2 (1−β2)β1∗ϵ1+β2∗ϵ2可以合并为 1 − ( 1 − β 2 ) ( 1 − β 1 ) ∗ ϵ \sqrt{1-(1-\beta_2)(1-\beta_1)}*\epsilon 1−(1−β2)(1−β1)∗ϵ。
因此 x 2 = ( 1 − β 2 ) ( 1 − β 1 ) ∗ x 0 + 1 − ( 1 − β 2 ) ( 1 − β 1 ) ∗ ϵ x_2 = \sqrt{(1-\beta_2)(1-\beta_1)}*x_0+\sqrt{1-(1-\beta_2)(1-\beta_1)}*\epsilon x2=(1−β2)(1−β1)∗x0+1−(1−β2)(1−β1)∗ϵ。
可以看到, x 2 x_2 x2可以只根据 x 0 x_0 x0和一个标准高斯分布 ϵ \epsilon ϵ来表示。在此基础上进行归纳总结,可以得到,
令 α = 1 − β \alpha = 1-\beta α=1−β, α t ‾ = ( 1 − β 1 ) ( 1 − β 2 ) . . . ( 1 − β t ) \overline{\alpha_t} = (1-\beta_1)(1-\beta_2)...(1-\beta_t) αt=(1−β1)(1−β2)...(1−βt),则最终在前向过程中
上述公式可以理解为:尽管在理论上从 x 0 x_0 x0加噪到 x t x_t xt的过程中需要经过 t t t次的加噪过程,但是实际上在从 x 0 x_0 x0到 x t x_t xt可以根据上述公式一步得到。
五、反向过程
DDPM中反向过程指的是给定一个高斯噪声,然后通过一步一步的去噪最后生成完整照片的过程。可以理解为给定
x
t
x_t
xt生成
x
t
−
1
x_{t-1}
xt−1,进行不断自回归迭代生成最终
x
0
x_0
x0。因此在反向过程中我们只要知道
q
(
x
t
−
1
∣
x
t
)
q(x_{t-1}|x_t)
q(xt−1∣xt)便可以生成最终的图片
x
0
x_0
x0。
事实上,当
x
0
x_0
x0已知时,
q
(
x
t
−
1
∣
x
t
,
x
0
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)反向过程也是一个确定性的过程。首先根据前向过程中推到的公式我们可以得到:
q ( x t ∣ x 0 ) ∼ N ( α t ‾ ∗ x 0 , ( 1 − α t ‾ ) I ) q(x_t|x_0) \sim\mathcal{N}(\sqrt{\overline{\alpha_t}}*x_0,(1-\overline{\alpha_t})I) q(xt∣x0)∼N(αt∗x0,(1−αt)I)
q ( x t − 1 ∣ x 0 ) ∼ N ( α t − 1 ‾ ∗ x 0 , ( 1 − α t − 1 ‾ ) I ) q(x_{t-1}|x_0) \sim\mathcal{N}(\sqrt{\overline{\alpha_{t-1}}}*x_0,(1-\overline{\alpha_{t-1}})I) q(xt−1∣x0)∼N(αt−1∗x0,(1−αt−1)I)
q ( x t ∣ x t − 1 ) ∼ N ( α t ∗ x t − 1 ] , ( 1 − α t ) I ) q(x_t|x_{t-1}) \sim\mathcal{N}(\alpha_t*x_{t-1}],(1-\alpha_t)I) q(xt∣xt−1)∼N(αt∗xt−1],(1−αt)I)
根据贝叶斯公式定理,
可以得到,
等号右边的三个分布我们都已经知道,根据重参数化技巧,经过一系列复杂的计算,我们可以得到
这里 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)是真实分布,我们可以在 x 0 x_0 x0已知的情况下求出来的真实存在的分布,与模型无关。可以把其理解为训练过程中的标签,我们要做的是让模型生成这样一个分布。
六、优化目标
在第一节我们说过,我们的优化目标是要找一组网络参数去Maximize
E
q
(
z
∣
x
)
[
log
(
P
(
x
,
z
)
q
(
z
∣
x
)
)
]
E_{q(z|x)}[\log(\frac{P(x,z)}{q(z|x)})]
Eq(z∣x)[log(q(z∣x)P(x,z))]。其中,
q
(
z
∣
x
)
q(z|x)
q(z∣x)可以是任意的分布,在DDPM中,
q
(
z
∣
x
)
q(z|x)
q(z∣x)为
q
(
x
1
:
x
T
∣
x
0
)
q(x_1:x_T|x_0)
q(x1:xT∣x0),
P
(
x
,
z
)
P(x,z)
P(x,z)为
P
(
x
0
:
x
T
)
P(x_0:x_T)
P(x0:xT),因此,优化目标变为Maximize
E
q
(
x
1
:
x
T
∣
x
0
)
[
log
(
P
(
x
0
:
x
T
)
q
(
x
1
:
x
T
∣
x
0
)
)
]
E_{q(x_1:x_T|x_0)}[\log(\frac{P(x_0:x_T)}{q(x_1:x_T|x_0)})]
Eq(x1:xT∣x0)[log(q(x1:xT∣x0)P(x0:xT))],通过复杂的计算可以得到,
其中,我们只需要关注的就是第三项。在第三项中, q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)的分布我们已经在上一节中求出来了。因此DDPM的优化目标转化为最小化真实分布 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)和模型预测的分布 P θ ( x t − 1 ∣ x t ) P_\theta(x_{t-1}|x_t) Pθ(xt−1∣xt)之间的KL散度即可。
首先我们对已知的 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)分布均值形式进行一下变形。
q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)分布的均值中含有 x 0 x_0 x0,根据
x t = α t ‾ x 0 + 1 − α t ‾ ϵ x_t = \sqrt{\overline{\alpha_t}}x_0+\sqrt{1-\overline{\alpha_t}}\epsilon xt=αtx0+1−αtϵ
可以得到
x 0 = x t − 1 − α t ‾ ϵ α t ‾ x_0 = \frac{x_t-\sqrt{1-\overline{\alpha_t}}\epsilon}{\sqrt{\overline{\alpha_t}}} x0=αtxt−1−αtϵ
将其带入 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)分布的均值中,可以得到
q ( x t − 1 ∣ x t , x 0 ) ∼ N ( 1 α t ( x t − 1 − α t 1 − α t ‾ ϵ ) , ( ( 1 − α t ) ( 1 − α t − 1 ‾ ) 1 − α t ‾ ) I ) q(x_{t-1}|x_t,x_0)\sim\mathcal{N}(\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\overline{\alpha_t}}}\epsilon),(\frac{(1-\alpha_t)(1-\overline{\alpha_{t-1}})}{1-\overline{\alpha_t}})I) q(xt−1∣xt,x0)∼N(αt1(xt−1−αt1−αtϵ),(1−αt(1−αt)(1−αt−1))I)
我们要做的就是模型预测的分布
P
θ
(
x
t
−
1
∣
x
t
)
P_\theta(x_{t-1}|x_t)
Pθ(xt−1∣xt)和
q
(
x
t
−
1
∣
x
t
,
x
0
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)分布相同,我们知道
q
(
x
t
−
1
∣
x
t
,
x
0
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)的分布的方差是一个常数,因此,只要让模型预测的均值和
q
(
x
t
−
1
∣
x
t
,
x
0
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)分布的均值
1
α
t
(
x
t
−
1
−
α
t
1
−
α
t
‾
ϵ
)
\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\overline{\alpha_t}}}\epsilon)
αt1(xt−1−αt1−αtϵ)一样即可。
可以看到,
q
(
x
t
−
1
∣
x
t
,
x
0
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)分布的均值中只有
ϵ
\epsilon
ϵ不确定,
ϵ
\epsilon
ϵ代表前向过程中从
x
0
x_0
x0到
x
t
x_t
xt这一步中加入的噪声,让模型根据输入的
x
t
x_t
xt和
t
t
t预测
ϵ
\epsilon
ϵ即可。
最后,经过这么多的公式推导,DDPM在训练过程中的Loss可以总结为:
可以理解为让模型预测前向过程中加入的噪声,然后与真实噪声算MSE,得到Loss。标签 ϵ \epsilon ϵ是前向过程中加入的噪声,这是我们已知的,是一个确定性的东西。
七、采样
在模型训练完成后,我们使用模型进行预测。首先要明确,模型的输入是
x
t
x_t
xt和
t
t
t,输出是从
x
0
x_0
x0到
x
t
x_t
xt过程中加入的噪声
ϵ
θ
(
x
t
,
t
)
。
\epsilon_{\theta}(x_t,t)。
ϵθ(xt,t)。
在得到模型输出后,将其带入到
q
(
x
t
−
1
∣
x
t
,
x
0
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)分布的均值中,得到
1
α
t
(
x
t
−
1
−
α
t
1
−
α
t
‾
ϵ
θ
(
x
t
,
t
)
)
\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\overline{\alpha_t}}}\epsilon_{\theta}(x_t,t))
αt1(xt−1−αt1−αtϵθ(xt,t)),需要值得注意的是,
1
α
t
(
x
t
−
1
−
α
t
1
−
α
t
‾
ϵ
θ
(
x
t
,
t
)
)
\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\overline{\alpha_t}}}\epsilon_{\theta}(x_t,t))
αt1(xt−1−αt1−αtϵθ(xt,t))这是一个均值,并不是生成的照片,因为我们当时在推导Loss的目标是最小化两个分布的均值之间的差异。在得到均值后,我们还需要方差,而前面也提到了,真实分布
q
(
x
t
−
1
∣
x
t
,
x
0
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)的方差是一个常数
(
1
−
α
t
)
(
1
−
α
t
−
1
‾
)
1
−
α
t
‾
\frac{(1-\alpha_t)(1-\overline{\alpha_{t-1}})}{1-\overline{\alpha_t}}
1−αt(1−αt)(1−αt−1),所以在反向过程中
P
θ
(
x
t
−
1
∣
x
t
)
P_\theta(x_{t-1}|x_t)
Pθ(xt−1∣xt)的分布是
P
θ
(
x
t
−
1
∣
x
t
)
∼
N
(
1
α
t
(
x
t
−
1
−
α
t
1
−
α
t
‾
ϵ
θ
(
x
t
,
t
)
)
,
(
(
1
−
α
t
)
(
1
−
α
t
−
1
‾
)
1
−
α
t
‾
)
I
)
P_\theta(x_{t-1}|x_t)\sim\mathcal{N}(\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\overline{\alpha_t}}}\epsilon_{\theta}(x_t,t)),(\frac{(1-\alpha_t)(1-\overline{\alpha_{t-1}})}{1-\overline{\alpha_t}})I)
Pθ(xt−1∣xt)∼N(αt1(xt−1−αt1−αtϵθ(xt,t)),(1−αt(1−αt)(1−αt−1))I)
因此,最终根据
x
t
x_t
xt得到采样图片
x
t
−
1
x_{t-1}
xt−1的公式为:
x
t
−
1
=
(
1
α
t
(
x
t
−
1
−
α
t
1
−
α
t
‾
ϵ
θ
(
x
t
,
t
)
)
+
(
1
−
α
t
)
(
1
−
α
t
−
1
‾
)
1
−
α
t
‾
z
x_{t-1} = (\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{1-\alpha_t}{\sqrt{1-\overline{\alpha_t}}}\epsilon_{\theta}(x_t,t))+\frac{(1-\alpha_t)(1-\overline{\alpha_{t-1}})}{1-\overline{\alpha_t}}z
xt−1=(αt1(xt−1−αt1−αtϵθ(xt,t))+1−αt(1−αt)(1−αt−1)z,
z
∼
N
(
0
,
I
)
z\sim\mathcal{N}(0,I)
z∼N(0,I)。
然后重复上述采样过程,根据
x
t
−
1
x_{t-1}
xt−1采样得到
x
t
−
2
x_{t-2}
xt−2,根据不断的迭代最终采样得到图片
x
0
x_0
x0。
八、模型结构
前面讲完了DDPM的整个训练流程和采样流程,接下来我们介绍DDPM的模型结构。
DDPM采用的是U-net结构的网络模型,输入为image
x
t
x_t
xt和当前去噪步数t。其中对于步数t进行embeddind的方法为Transformer中的位置编码。
总结
DDPM的训练过程和采样过程伪代码如下图所示: