DDPM扩散模型笔记
参考链接:李宏毅扩散模型 https://www.bilibili.com/video/BV1TD4y137mP?p=42
1. 图像生成模型本质上的共同目标
存在一个标准的高斯分布 ( N ( 0 , I ) ) (N(0,I)) (N(0,I))数据 z z z,每次通过采样的方式从数据 z z z中得到某个输入向量Vector, 将输入向量Vector输入到生成网络 G ( ⋅ ) G(·) G(⋅)中, 利用生成网络生成数据 x x x,即对应的一张图片,网络生成图片的过程可以用 G ( z ) = x G(z)=x G(z)=x表示。按照上述方式每次从标准高斯分布中采样一个输入向量Vector都会对应生成一张图像 x x x。生成网络 G ( ⋅ ) G(·) G(⋅)的作用就是通过从一个简单的分布中采样一个向量Vector,并将该Vector输入到生成网络 G ( ⋅ ) G(·) G(⋅)中生成图像 x x x,而生成的图像 x x x则要求与真实图像数据的分布越接近越好。以上是图像生成模型最终想要达到的共同目标。
2. 极大似然估计(Maximum Likelihood Estimation)
上面提到生成网络
G
(
⋅
)
G(·)
G(⋅)的目标是希望从一个简单分布中采样一个输入向量Vector,然后将输入向量Vector输入到生成网络
G
(
⋅
)
G(·)
G(⋅)中输出图像
x
x
x,最终的目标是要求输出的图像
x
x
x能够与真实图像越接近越好。这里的接近不是针对单张图像来说的,而是针对输出图像所在的分布与目标真实数据集之间的分布越接近越好。衡量两个分布之间的解决程度通常用KL散度来表示。但是在利用KL散度之前需要对生成网络输出图像的分布与真实数据集的分布进行显示的表达,至少应该表示成两个概率分布,这才能用来计算两个分布之间的KL散度, KL散度具体公式如下:
D
K
L
(
p
∣
∣
q
)
=
∑
i
=
1
N
[
p
(
x
i
)
l
o
g
p
(
x
i
)
−
p
(
x
i
)
l
o
g
q
(
x
i
)
]
(2.1)
D_{KL}(p||q)=\sum^N_{i=1}[p(x_i)logp(x_i)-p(x_i)logq(x_i)] \tag{2.1}
DKL(p∣∣q)=i=1∑N[p(xi)logp(xi)−p(xi)logq(xi)](2.1)
先考虑利用生成网络生成图像
x
x
x的分布,大多数图像生成网络采用极大似然估计的方式来求生成图像
x
x
x的概率分布。首先假设生成网络要学习的参数为
θ
\theta
θ, 根据学习到的参数
θ
\theta
θ生成的图像分布用
P
θ
(
x
)
P_\theta(x)
Pθ(x)表示,真实数据集的分布用
P
d
a
t
a
(
x
)
P_{data}(x)
Pdata(x)来表示。而极大似然估计是按照如下步骤进行计算,先从真实数据集
P
d
a
t
a
P_{data}
Pdata中采样
m
m
m个数据
{
x
1
,
x
2
,
.
.
.
,
x
m
}
\{x^1, x^2, ..., x^m\}
{x1,x2,...,xm},在假定网络能够给出
θ
\theta
θ得到生成数据分布的概率分布
P
θ
(
⋅
)
P_\theta(·)
Pθ(⋅),将采样得到的
m
m
m个真实数据输入的
P
θ
(
x
)
P_\theta(x)
Pθ(x)中得到对应的极大似然结果:
θ
∗
=
a
r
g
m
a
x
θ
∏
i
=
0
m
P
θ
(
x
i
)
(2.2)
\theta^* = arg\ max_{\theta} \prod_{i = 0}^{m} P_\theta(x^i) \tag{2.2}
θ∗=arg maxθi=0∏mPθ(xi)(2.2)
如果将真实数据输入到生成网络学习到参数
θ
\theta
θ对应的分布
P
θ
P_\theta
Pθ,根据极大似然估计得到的结果取得极大值, 那么对应的参数
θ
∗
\theta^*
θ∗就是最终要得到的数据分布。公式2.2的直觉理解可以认为通过网络学习到了参数
θ
\theta
θ对应的分布
P
θ
(
⋅
)
P_\theta(·)
Pθ(⋅),那么如何判定生成数据分布
P
θ
P_\theta
Pθ的好坏? 可以将真实数据集
P
d
a
t
a
P_{data}
Pdata采样得到的数据
{
x
1
,
x
2
,
.
.
.
,
x
m
}
\{x^1, x^2, ..., x^m \}
{x1,x2,...,xm}代入到
P
θ
(
⋅
)
P_\theta(·)
Pθ(⋅)中,如果能够使得该概率分布的极大似然估计值最大,那么对应的参数
θ
∗
\theta^*
θ∗最终估计想要得到的参数结果。
下面从数学公式推导证明最小化真实数据分布
P
d
a
t
a
P_{data}
Pdata和生成网络得到的数据分布
P
θ
P_\theta
Pθ之间的差异与公式2.2极大似然估计之间的关系, 首先对公式2.2做如下变换:
θ
∗
=
a
r
g
m
a
x
θ
∏
i
=
0
m
P
θ
(
x
i
)
=
a
r
g
m
a
x
θ
l
o
g
∏
i
=
0
m
P
θ
(
x
i
)
=
a
r
g
m
a
x
θ
∑
i
=
1
m
l
o
g
P
θ
(
x
i
)
即求和达到最大值近似于抽取单个样本求最大值
≈
a
r
g
m
a
x
θ
E
x
∼
p
d
a
t
a
[
l
o
g
P
θ
(
x
)
]
随机从真实数据中抽取样本,每次都能取得最大值
=
a
r
g
m
a
x
θ
∫
x
P
d
a
t
a
(
x
)
l
o
g
P
θ
(
x
)
d
x
−
∫
x
P
d
a
t
a
(
x
)
l
o
g
P
d
a
t
a
(
x
)
d
x
⏟
与
θ
无关
增加这一项不会影响最终结果
=
a
r
g
m
a
x
θ
∫
x
P
d
a
t
a
(
x
)
l
o
g
P
θ
(
x
)
P
d
a
t
a
(
x
)
d
x
合并两项组成
K
L
散度
=
a
r
g
m
i
n
θ
K
L
(
P
d
a
t
a
∣
∣
P
θ
)
\theta^* = arg\ max_{\theta} \prod_{i = 0}^{m} P_\theta(x^i) \\ = arg \ max_\theta \ log \prod_{i = 0}^{m} P_\theta(x^i) \\ \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad = arg \ max_\theta \ \sum^m_{i=1}logP_\theta(x^i) \quad 即求和达到最大值近似于抽取单个样本求最大值\\ \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \approx arg \ max_\theta \ E_x \sim p_{data}[logP_\theta(x)] \quad 随机从真实数据中抽取样本,每次都能取得最大值\\ = arg \ max_\theta \int_x P_{data}(x)logP_\theta(x)dx - \underbrace{\int_x P_{data}(x) log P_{data}(x) dx }_{与\theta 无关} \quad 增加这一项不会影响最终结果 \\ = arg \ max_\theta \int_x P_{data}(x)log\frac{P_\theta(x)}{P_{data}(x)}dx \quad 合并两项组成KL散度\\ = arg \ min_\theta \ KL(P_{data}||P_\theta)
θ∗=arg maxθi=0∏mPθ(xi)=arg maxθ logi=0∏mPθ(xi)=arg maxθ i=1∑mlogPθ(xi)即求和达到最大值近似于抽取单个样本求最大值≈arg maxθ Ex∼pdata[logPθ(x)]随机从真实数据中抽取样本,每次都能取得最大值=arg maxθ∫xPdata(x)logPθ(x)dx−与θ无关
∫xPdata(x)logPdata(x)dx增加这一项不会影响最终结果=arg maxθ∫xPdata(x)logPdata(x)Pθ(x)dx合并两项组成KL散度=arg minθ KL(Pdata∣∣Pθ)
从上式推导可以得到如下结论,将真实数据代入到生成网络得到的
θ
\theta
θ参数生成图像的概率分布
P
θ
P_\theta
Pθ中,可以将求极大似然估计的过程转换成求生成图像的概率分布
P
θ
P_\theta
Pθ与真实数据图像的概率分布
P
d
a
t
a
P_{data}
Pdata之间的KL散度最小。
3. 变分自编码器计算 P θ ( x ) P_\theta(x) Pθ(x)的过程
生成图像的概率分布
P
θ
P_\theta
Pθ可以按照如下方式计算,假定从标准高斯分布中抽取某个输入变量Vector的概率为
P
(
z
)
P(z)
P(z),在给定输入变量
z
z
z后生成图片
x
x
x的概率为
P
θ
(
x
∣
z
)
P_\theta(x|z)
Pθ(x∣z),那么最终
P
θ
(
x
)
P_\theta(x)
Pθ(x)的计算公式为:
P
θ
(
x
)
=
∫
z
P
(
z
)
P
θ
(
x
∣
z
)
d
z
(3.1)
P_\theta(x)=\int_zP(z)P_\theta(x|z)dz \tag{3.1}
Pθ(x)=∫zP(z)Pθ(x∣z)dz(3.1)
其中
P
θ
(
x
∣
z
)
P_\theta(x|z)
Pθ(x∣z)通过生成网络
G
(
z
)
=
x
G(z)=x
G(z)=x生成,如果按照如下方式:
P
θ
(
x
∣
z
)
=
{
1
,
G
(
z
)
=
x
0
,
G
(
z
)
≠
x
P_\theta(x|z)= \begin{cases} 1,\quad G(z) = x \\[2ex] 0, \quad G(z)\neq x \end{cases}
Pθ(x∣z)=⎩
⎨
⎧1,G(z)=x0,G(z)=x
即当生成网络
G
(
z
)
G(z)
G(z)生成的图像满足采集到
z
z
z生成图像
x
x
x每个像素都与真实图像的每个像素值一样时
P
θ
(
x
∣
z
)
=
1
P_\theta(x|z)=1
Pθ(x∣z)=1,否则为0,那么上述生的概率可能都为0, 因为总会有像素值不一样的地方。而在扩散模型中,采用如下的方式,
在VAE中,
P
θ
(
x
∣
z
)
P_\theta(x|z)
Pθ(x∣z)是与
e
x
p
(
−
∣
∣
G
(
z
)
−
x
∣
∣
2
)
exp(-||G(z)-x||_2)
exp(−∣∣G(z)−x∣∣2)正比相关的。现在回到推导公式2.2中的求
l
o
g
P
θ
(
x
)
logP_\theta(x)
logPθ(x)最大化的过程:
l
o
g
P
θ
(
x
)
=
l
o
g
P
θ
(
x
)
∫
z
q
(
z
∣
x
)
d
z
(
概率密度归一化性质
∫
z
q
(
z
∣
x
)
d
z
=
1
)
=
∫
z
q
(
z
∣
x
)
l
o
g
P
θ
(
x
)
d
z
=
∫
z
q
(
z
∣
x
)
l
o
g
(
P
θ
(
x
)
P
θ
(
z
,
x
)
P
θ
(
z
,
x
)
)
d
z
=
∫
z
q
(
z
∣
x
)
l
o
g
(
P
θ
(
z
,
x
)
P
θ
(
z
,
x
)
P
θ
(
x
)
)
d
z
=
∫
z
q
(
z
∣
x
)
l
o
g
(
P
θ
(
z
,
x
)
P
θ
(
z
∣
x
)
)
d
z
=
∫
z
q
(
z
∣
x
)
l
o
g
(
P
θ
(
z
,
x
)
q
(
z
∣
x
)
q
(
z
∣
x
)
P
θ
(
z
∣
x
)
)
d
z
=
∫
z
q
(
z
∣
x
)
l
o
g
(
P
θ
(
z
,
x
)
q
(
z
∣
x
)
)
d
z
+
∫
z
q
(
z
∣
x
)
l
o
g
(
q
(
z
∣
x
)
P
θ
(
z
∣
x
)
)
d
z
⏟
K
L
(
q
(
z
∣
x
)
∣
∣
P
(
z
∣
x
)
)
≥
0
≥
∫
z
q
(
z
∣
x
)
l
o
g
(
P
θ
(
z
,
x
)
q
(
z
∣
x
)
)
d
z
=
E
q
(
z
∣
x
)
[
l
o
g
P
θ
(
x
,
z
)
q
(
z
∣
x
)
]
log P_\theta(x)=logP_\theta(x) \int_z q(z|x) dz \quad (概率密度归一化性质\int_z q(z|x)dz=1) \\ = \int_z q(z|x)logP_\theta(x)dz \\ = \int_z q(z|x)log(\frac{P_\theta(x)P_\theta(z,x)}{P_\theta(z,x)})dz \\ = \int_z q(z|x)log(\frac{P_\theta(z,x)}{ \frac{P_\theta(z,x)}{P_\theta(x)}})dz \\ = \int_z q(z|x)log(\frac{P_\theta(z,x)}{ P_\theta(z|x)})dz\\ = \int_z q(z|x)log(\frac{P_\theta(z,x) q(z|x)}{q(z|x) P_\theta(z|x)})dz\\ = \int_z q(z|x)log(\frac{P_\theta(z,x)}{q(z|x)})dz + \underbrace{\int_z q(z|x)log(\frac{q(z|x)}{P_\theta(z|x)})dz}_{ KL(q(z|x)||P(z|x))\geq0}\\ \geq \int_z q(z|x)log(\frac{P_\theta(z,x)}{q(z|x)})dz\\ = E_{q(z|x)}[log\frac{P_\theta(x,z)}{q(z|x)}]
logPθ(x)=logPθ(x)∫zq(z∣x)dz(概率密度归一化性质∫zq(z∣x)dz=1)=∫zq(z∣x)logPθ(x)dz=∫zq(z∣x)log(Pθ(z,x)Pθ(x)Pθ(z,x))dz=∫zq(z∣x)log(Pθ(x)Pθ(z,x)Pθ(z,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+KL(q(z∣x)∣∣P(z∣x))≥0
∫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)[logq(z∣x)Pθ(x,z)]
上式最终的结果就是VAE的lower bound, 通过最大化
E
q
(
z
∣
x
)
[
l
o
g
P
θ
(
x
,
z
)
q
(
z
∣
x
)
]
E_{q(z|x)}[log\frac{P_\theta(x,z)}{q(z|x)}]
Eq(z∣x)[logq(z∣x)Pθ(x,z)]就能实现对
l
o
g
P
(
x
)
logP(x)
logP(x)的最大化。
4. 扩散模型计算 P θ ( x ) P_\theta(x) Pθ(x)的过程(扩散过程)
扩散模型计算 P θ ( x ) P_\theta(x) Pθ(x)的过程是逆扩散过程,同样是从标准高斯噪声中采样一个正态分布 x T x_T xT,然后通过去噪网络去掉部分噪声产生 x T − 1 x_{T-1} xT−1,之后再重复上述操作,直至恢复到最终的图像 x 0 x_0 x0,整个逆扩散过程是一个循环迭代的过程。
扩散模型计算
P
θ
(
x
)
P_\theta(x)
Pθ(x)的过程如下所示:
P
θ
(
x
0
)
=
∫
x
1
:
x
T
P
(
x
T
)
P
θ
(
x
T
−
1
∣
x
T
)
.
.
.
P
θ
(
x
t
−
1
∣
x
t
)
.
.
.
P
θ
(
x
0
∣
x
1
)
d
x
1
:
x
T
(4.1)
P_\theta(x_0)= \int_{x_1:x_T} P(x_T)P_\theta(x_{T-1}|x_T)...P_\theta(x_{t-1}|x_t)...P_\theta(x_0|x_1)dx_1:x_T \tag{4.1}
Pθ(x0)=∫x1:xTP(xT)Pθ(xT−1∣xT)...Pθ(xt−1∣xt)...Pθ(x0∣x1)dx1:xT(4.1)
从正态分布中随机采样一个噪声数据
P
(
x
T
)
P(x_T)
P(xT),然后输入到去噪网络中进行逐步迭代产生
P
θ
(
x
t
−
1
∣
x
t
)
P_\theta(x_{t-1}|x_t)
Pθ(xt−1∣xt),将
P
θ
(
x
t
−
1
∣
x
t
)
P_\theta(x_{t-1}|x_t)
Pθ(xt−1∣xt)代入上式进行迭代直至最终得到结果
P
θ
(
x
0
)
P_\theta(x_0)
Pθ(x0)。
在表示变量上VAE的
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中用不断迭代的方式产生
x
1
:
x
T
x_1:x_T
x1:xT;VAE中的在输入数据
x
x
x在VAE中用
x
0
x_0
x0表示。从产生方式上VAE通过一步编码的方式产生最终的结果,而扩散模型通过前向扩散过程产生每一步的噪声图像然后再通过逆扩散过程去掉噪声。在扩散模型中
q
(
⋅
)
q(·)
q(⋅)与前向过程有关
P
θ
P_\theta
Pθ与逆扩散过程有关。其中
q
(
x
1
:
x
T
∣
x
0
)
q(x_1:x_T|x_0)
q(x1:xT∣x0)的计算方式如下所示:
q
(
x
1
:
x
T
∣
x
0
)
=
q
(
x
1
∣
x
0
)
q
(
x
2
∣
x
1
)
.
.
.
q
(
x
T
∣
x
T
−
1
)
(4.2)
q(x_1:x_T|x_0)=q(x_1|x_0)q(x_2|x_1)...q(x_T|x_{T-1}) \tag{4.2}
q(x1:xT∣x0)=q(x1∣x0)q(x2∣x1)...q(xT∣xT−1)(4.2)
拆分到每一步就是计算
q
(
x
t
∣
x
t
−
1
)
q(x_t|x_{t-1})
q(xt∣xt−1)的值。对比VAE和DDPM的目标函数,忽略变量表示和求取方法上的差异,两者在优化目标上是一致的,或者更进一步认为DDPM将优化目标分成
T
T
T时间步来进行,而每一步与VAE的目标是一致的。对于扩散模型的优化目标:
l
o
g
P
θ
(
x
)
≥
E
q
(
x
1
:
x
T
∣
x
0
)
l
o
g
P
θ
(
x
0
:
x
T
)
q
(
x
1
:
x
T
∣
x
0
)
(4.3)
log\ P_\theta(x) \geq E_{q{(x_1:x_T|x_0)}}log\frac{P_\theta(x_0:x_T)}{q(x_1:x_T|x_0)} \tag{4.3}
log Pθ(x)≥Eq(x1:xT∣x0)logq(x1:xT∣x0)Pθ(x0:xT)(4.3)
其中
x
0
x_0
x0是从真实数据集中采集到的图像,
x
T
x_T
xT是在最好一个时间步增加噪声后产生的图像,最终图像近似于标准的高斯噪声分布图像。
在前向扩散的过程中,
x
t
x_t
xt和
x
t
−
1
x_{t-1}
xt−1的关系可以用下图表示,即
x
t
x_{t}
xt是在
x
t
−
1
x_{t-1}
xt−1的基础上和随机采样得到的噪声加权求和得到。其中
β
1
,
β
2
,
.
.
.
,
β
T
\beta_1,\beta_2,...,\beta_T
β1,β2,...,βT是事先确定好的,在每一步
t
t
t中确定图像和噪声之间的加权系数。
即:
q
(
x
t
∣
x
t
−
1
)
=
1
−
β
t
x
t
−
1
+
β
t
ϵ
ϵ
∼
N
(
0
,
I
)
(4.4)
q(x_t|x_{t-1}) = \sqrt{1-\beta_t}x_{t-1}+\sqrt{\beta_t}\epsilon \quad \epsilon \sim N(0,I) \tag{4.4}
q(xt∣xt−1)=1−βtxt−1+βtϵϵ∼N(0,I)(4.4)
那么如何计算
q
(
x
t
∣
x
0
)
q(x_t|x_0)
q(xt∣x0)?按照计算
q
(
x
t
∣
x
t
−
1
)
q(x_t|x_{t-1})
q(xt∣xt−1)的方式,可以通过逐步迭代的方式计算得到
q
(
x
t
∣
x
0
)
q(x_t|x_0)
q(xt∣x0),用图示的方式即按照下图中的方式得到,即先由原始图像
x
0
x_0
x0通过随机采样高斯噪声叠加的方式得到
x
1
x_1
x1,然后再次随机采样高斯噪声,与上一步骤产生的
x
1
x_1
x1叠加得到
x
2
x_2
x2,按照上述方式最终得到
x
t
x_t
xt。
上述迭代的方式能够得到
q
(
x
t
∣
x
0
)
q(x_t|x_0)
q(xt∣x0),但是也可以通过直接计算一步得到
q
(
x
t
∣
x
0
)
q(x_t|x_0)
q(xt∣x0)。再迭代过程中,每一步的加权系数
β
1
,
β
2
,
.
.
.
,
β
T
\beta_1,\beta_2,...,\beta_T
β1,β2,...,βT是已知的,可以将第2步产生的
x
1
x_1
x1,代入到第2步中。每次产生
x
t
x_t
xt的过程相当于是对
x
t
−
1
x_{t-1}
xt−1产生的图像与采样的高斯噪声加权求和的过程,其在迭代过程中的系数可以通过累乘的方式得到。
标准正态分布的随机采样也都是独立的过程,两次从高斯分布采样的过程可以简化为一次采样过程,然后乘以合并后的系数:
最终只通过一步计算就能得到的结果如下图所示,
为了简化在计算过程中令
a
t
=
1
−
β
t
,
a
ˉ
t
=
a
1
a
2
.
.
.
a
t
a_t=1-\beta_t, \ \bar{a}_t=a_1a_2...a_t
at=1−βt, aˉt=a1a2...at,最终:
q
(
x
t
∣
x
0
)
=
(
1
−
β
1
.
.
.
1
−
β
t
)
x
0
+
1
−
(
1
−
β
1
)
.
.
.
(
1
−
β
t
)
ϵ
=
a
ˉ
t
x
0
+
1
−
a
ˉ
t
ϵ
(4.5)
q(x_t|x_0)=(\sqrt{1-\beta_1} ... \sqrt{1-\beta_t})x_0 + \sqrt{1-(1-\beta_1)...(1-\beta_t)}\epsilon \\=\sqrt{\bar{a}_t}x_0 + \sqrt{1-\bar{a}_t}\epsilon \tag{4.5}
q(xt∣x0)=(1−β1...1−βt)x0+1−(1−β1)...(1−βt)ϵ=aˉtx0+1−aˉtϵ(4.5)
推导过程补充,每次噪声的采样都是独立且同分布于标准高斯噪声
N
(
0
,
I
)
N(0,I)
N(0,I)的,对于独立高斯分布,根据其可加性存在如下性质:
N
(
0
,
σ
1
2
I
)
+
N
(
0
,
σ
2
2
I
)
∼
N
(
0
,
(
σ
1
2
+
σ
2
2
)
I
)
N(0,\sigma_1^2I)+N(0,\sigma_2^2I) \sim N(0, (\sigma^2_1+\sigma^2_2)I)
N(0,σ12I)+N(0,σ22I)∼N(0,(σ12+σ22)I) :
x
t
=
a
t
x
t
−
1
+
1
−
a
t
ϵ
t
−
1
;
w
h
e
r
e
ϵ
t
−
1
,
ϵ
t
−
2
,
.
.
∼
N
(
0
,
I
)
=
a
t
(
a
t
−
1
x
t
−
2
+
1
−
a
t
−
1
ϵ
t
−
2
)
+
1
−
a
t
ϵ
t
−
1
=
a
t
a
t
−
1
x
t
−
2
+
a
t
−
a
t
a
t
−
1
2
+
1
−
a
t
2
ϵ
ˉ
t
−
2
=
a
t
a
t
−
1
x
t
−
2
+
1
−
a
t
a
t
−
1
ϵ
ˉ
t
−
2
独立高斯分布的可加性
(
(
ϵ
ˉ
t
−
2
=
ϵ
t
−
1
+
ϵ
t
−
2
)
=
a
t
a
t
−
1
x
t
−
2
+
1
−
a
t
a
t
−
1
ϵ
ˉ
t
−
2
=
.
.
.
=
a
ˉ
t
x
0
+
1
−
a
ˉ
t
ϵ
x
t
=
a
t
x
t
−
1
+
1
−
a
t
ϵ
t
−
1
;
w
h
e
r
e
ϵ
t
−
1
,
ϵ
t
−
2
,
.
.
∼
N
(
0
,
I
)
=
a
t
(
a
t
−
1
x
t
−
2
+
1
−
a
t
−
1
ϵ
t
−
2
)
+
1
−
a
t
ϵ
t
−
1
=
a
t
a
t
−
1
x
t
−
2
+
a
t
−
a
t
a
t
−
1
2
+
1
−
a
t
2
ϵ
ˉ
t
−
2
=
a
t
a
t
−
1
x
t
−
2
+
1
−
a
t
a
t
−
1
ϵ
ˉ
t
−
2
独立高斯分布的可加性
(
(
ϵ
ˉ
t
−
2
=
ϵ
t
−
1
+
ϵ
t
−
2
)
=
a
t
a
t
−
1
x
t
−
2
+
1
−
a
t
a
t
−
1
ϵ
ˉ
t
−
2
=
.
.
.
=
a
ˉ
t
x
0
+
1
−
a
ˉ
t
ϵ
x_t = \sqrt{a_t}x_{t-1}+\sqrt{1-a_t} \epsilon_{t-1} ;\ where \ \epsilon_{t-1},\epsilon_{t-2},.. \sim N(0, I) \\ =\sqrt{a_t}(\sqrt{a_{t-1}}x_{t-2} + \sqrt{1-a_{t-1}}\epsilon_{t-2})+\sqrt{1-a_t}\epsilon_{t-1}\\ = \sqrt{a_ta_{t-1}}x_{t-2}+\sqrt{ \sqrt{a_t-a_ta_{t-1}}^2 + \sqrt{1-a_t}^2}\bar{\epsilon}_{t-2}\\ = \sqrt{a_ta_{t-1}}x_{t-2}+\sqrt{1-a_ta_{t-1}}\bar{\epsilon}_{t-2} \ 独立高斯分布的可加性((\bar{\epsilon}_{t-2} =\epsilon_{t-1}+\epsilon_{t-2})\\ = \sqrt{a_ta_{t-1}}x_{t-2} + \sqrt{1-a_ta_{t-1}}\bar{\epsilon}_{t-2} \\ = ... \\ = \sqrt{\bar{a}_t}x_0+\sqrt{1-\bar{a}_t}\epsilon \\x_t = \sqrt{a_t}x_{t-1}+\sqrt{1-a_t} \epsilon_{t-1} ;\ where \ \epsilon_{t-1},\epsilon_{t-2},.. \sim N(0, I) \\ =\sqrt{a_t}(\sqrt{a_{t-1}}x_{t-2} + \sqrt{1-a_{t-1}}\epsilon_{t-2})+\sqrt{1-a_t}\epsilon_{t-1}\\ = \sqrt{a_ta_{t-1}}x_{t-2}+\sqrt{ \sqrt{a_t-a_ta_{t-1}}^2 + \sqrt{1-a_t}^2}\bar{\epsilon}_{t-2}\\ = \sqrt{a_ta_{t-1}}x_{t-2}+\sqrt{1-a_ta_{t-1}}\bar{\epsilon}_{t-2} \ 独立高斯分布的可加性((\bar{\epsilon}_{t-2} =\epsilon_{t-1}+\epsilon_{t-2})\\ = \sqrt{a_ta_{t-1}}x_{t-2} + \sqrt{1-a_ta_{t-1}}\bar{\epsilon}_{t-2} \\ = ... \\ = \sqrt{\bar{a}_t}x_0+\sqrt{1-\bar{a}_t}\epsilon \\
xt=atxt−1+1−atϵt−1; where ϵt−1,ϵt−2,..∼N(0,I)=at(at−1xt−2+1−at−1ϵt−2)+1−atϵt−1=atat−1xt−2+at−atat−12+1−at2ϵˉt−2=atat−1xt−2+1−atat−1ϵˉt−2 独立高斯分布的可加性((ϵˉt−2=ϵt−1+ϵt−2)=atat−1xt−2+1−atat−1ϵˉt−2=...=aˉtx0+1−aˉtϵxt=atxt−1+1−atϵt−1; where ϵt−1,ϵt−2,..∼N(0,I)=at(at−1xt−2+1−at−1ϵt−2)+1−atϵt−1=atat−1xt−2+at−atat−12+1−at2ϵˉt−2=atat−1xt−2+1−atat−1ϵˉt−2 独立高斯分布的可加性((ϵˉt−2=ϵt−1+ϵt−2)=atat−1xt−2+1−atat−1ϵˉt−2=...=aˉtx0+1−aˉtϵ
5. 扩散模型的逆扩散过程(目标函数推导)
在前面的推导过程中 :
(1) 首先确定了图像生成模型的总体目标是让生成的图像概率分布与真实图像的概率分布相近,用KL散度刻画可以写成 a r g m i n θ K L ( P d a t a ∣ ∣ P θ ) arg \ min_\theta\ KL(P_{data}||P_\theta) arg minθ KL(Pdata∣∣Pθ);
(2) 对KL散度进行拆解,将优化目标 a r g m i n θ K L ( P d a t a ∣ ∣ P θ ) arg \ min_\theta\ KL(P_{data}||P_\theta) arg minθ KL(Pdata∣∣Pθ)转换成 a r g m a x θ ∏ i = 1 m P θ ( x i ) arg \ max_\theta\ \prod_{i = 1}^{m} P_\theta(x^i) arg maxθ ∏i=1mPθ(xi),进一步推导出等价于每一项 l o g P θ ( x ) log P_\theta(x) logPθ(x)最大。
(3) 推导VAE的lower bound,将每一项的 l o g P θ ( x ) log P_\theta(x) logPθ(x)最大转换成优化目标的最大化下界 E q ( z ∣ x ) [ l o g P θ ( x , z ) q ( z ∣ x ) ] E_{q(z|x)}[log\frac{P_\theta(x,z)}{q(z|x)}] Eq(z∣x)[logq(z∣x)Pθ(x,z)];
(4) 比较VAE和DDPM的优化目标,DDPM通过时间步
T
T
T分步进行优化,最终将整个优化目标转换为
E
q
(
x
1
:
x
T
∣
x
0
)
l
o
g
P
θ
(
x
0
:
x
T
)
q
(
x
1
:
x
T
∣
x
0
)
E_{q{(x_1:x_T|x_0)}}log\frac{P_\theta(x_0:x_T)}{q(x_1:x_T|x_0)}
Eq(x1:xT∣x0)logq(x1:xT∣x0)Pθ(x0:xT);
通过上面的梳理,DDPM的优化目标为公式4.3,即
l
o
g
P
θ
(
x
)
≥
E
q
(
x
1
:
x
T
∣
x
0
)
l
o
g
P
θ
(
x
0
:
x
T
)
q
(
x
1
:
x
T
∣
x
0
)
(4.6)
log\ P_\theta(x) \geq E_{q{(x_1:x_T|x_0)}}log\frac{P_\theta(x_0:x_T)}{q(x_1:x_T|x_0)} \tag{4.6}
log Pθ(x)≥Eq(x1:xT∣x0)logq(x1:xT∣x0)Pθ(x0:xT)(4.6)
下面做进一步拆解:
公式里面从 1 ∗ 1^* 1∗到 2 ∗ 2^* 2∗如果从马尔科夫链性质理解的话,那 q ( x t ∣ x t − 1 , x 0 ) q(x_t|x_{t-1},x_0) q(xt∣xt−1,x0)与 q ( x t ∣ x t − 1 , x 0 ) q(x_t|x_{t-1},x_0) q(xt∣xt−1,x0)是等价的。
第1项可以忽略, q q q只是一个正向过程,没有可学习的参数;
第2项 对于KL散度的第1个分布
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
(
x
t
,
x
0
)
(
3
∗
)
=
q
(
x
t
∣
x
t
−
1
)
q
(
x
t
−
1
∣
x
0
)
q
(
x
0
)
q
(
x
t
∣
x
0
)
q
(
x
0
)
(
4
∗
)
=
q
(
x
t
∣
x
t
−
1
)
q
(
x
t
−
1
∣
x
0
)
q
(
x
t
∣
x
0
)
q(x_{t-1}|x_t,x_0)) = \frac{q(x_{t-1},x_t,x_0)}{q(x_t,x_0)} \quad (3^*) \\= \frac{q(x_t|x_{t-1})q(x_{t-1}|x_0)q(x_0)}{q(x_t|x_0)q(x_0)} \quad (4^*) \\= \frac{{q(x_t|x_{t-1}})q({x_{t-1}|x_0)}}{q(x_t|x_0)}
q(xt−1∣xt,x0))=q(xt,x0)q(xt−1,xt,x0)(3∗)=q(xt∣x0)q(x0)q(xt∣xt−1)q(xt−1∣x0)q(x0)(4∗)=q(xt∣x0)q(xt∣xt−1)q(xt−1∣x0)
这里
(
3
∗
)
(3^*)
(3∗)到
(
4
∗
)
(4^*)
(4∗)利用了马尔科夫链的性质,如果满足马尔科夫链性质,由事件A能推出
A
−
>
B
−
>
C
A->B->C
A−>B−>C,那么对于公式:
P
(
A
,
B
,
C
)
=
P
(
C
∣
B
,
A
)
P
(
B
,
A
)
=
P
(
C
∣
B
,
A
)
P
(
B
∣
A
)
P
(
A
)
P(A,B,C)=P(C|B,A)P(B,A) = P(C|B,A)P(B|A)P(A)
P(A,B,C)=P(C∣B,A)P(B,A)=P(C∣B,A)P(B∣A)P(A)
可以写成:
P
(
A
,
B
,
C
)
=
P
(
C
∣
B
,
A
)
P
(
B
,
A
)
=
P
(
C
∣
B
)
P
(
B
∣
A
)
P
(
A
)
P(A,B,C)=P(C|B,A)P(B,A)=P(C|B)P(B|A)P(A)
P(A,B,C)=P(C∣B,A)P(B,A)=P(C∣B)P(B∣A)P(A)
式中根据马尔科夫链的性质,下一状态的概率分布只与当前状态决定,从
B
−
>
C
B->C
B−>C只与B有关,而与A无关,在马尔科夫链的性质下有如下等式成立,即
P
(
C
∣
B
,
A
)
=
P
(
C
∣
B
)
P(C|B,A)=P(C|B)
P(C∣B,A)=P(C∣B)。所以从
(
3
∗
)
(3^*)
(3∗)到
(
4
∗
)
(4^*)
(4∗),由:
q
(
x
t
−
1
,
x
t
,
x
0
)
=
q
(
x
t
−
1
∣
x
t
,
x
0
)
q
(
x
t
,
x
0
)
=
q
(
x
t
−
1
∣
x
t
,
x
0
)
q
(
x
t
∣
x
0
)
q
(
x
0
)
=
q
(
x
t
−
1
∣
x
t
)
q
(
x
t
∣
x
0
)
q
(
x
0
)
由马尔科夫链性质
q
(
x
t
−
1
∣
x
t
,
x
0
)
=
q
(
x
t
−
1
∣
x
t
)
q(x_{t-1}, x_t,x_0) = q(x_{t-1}|x_t,x_0)q(x_t,x_0)=q(x_{t-1}|x_t,x_0)q(x_t|x_0)q(x_0) \\= q(x_{t-1}|x_t)q(x_t|x_0)q(x_0) \quad 由马尔科夫链性质 q(x_{t-1}|x_t,x_0)=q(x_{t-1}|x_t)
q(xt−1,xt,x0)=q(xt−1∣xt,x0)q(xt,x0)=q(xt−1∣xt,x0)q(xt∣x0)q(x0)=q(xt−1∣xt)q(xt∣x0)q(x0)由马尔科夫链性质q(xt−1∣xt,x0)=q(xt−1∣xt)
以上
q
(
x
t
∣
x
t
−
1
)
、
q
(
x
t
−
1
∣
x
0
)
、
q
(
x
t
∣
x
0
)
q(x_t|x_{t-1})、q(x_{t-1}|x_0)、q(x_t|x_0)
q(xt∣xt−1)、q(xt−1∣x0)、q(xt∣x0)三项都是已知的,并且满足高斯分布,都可以通过扩散过程从
t
=
0
→
t
=
T
t=0 \rightarrow t=T
t=0→t=T的过程中推导出来,根据4.5式有:
q
(
x
t
∣
x
0
)
=
a
ˉ
t
x
0
+
1
−
a
ˉ
t
ϵ
ϵ
∼
N
(
0
,
I
)
(4.5)
q(x_t|x_0)=\sqrt{\bar{a}_t}x_0 + \sqrt{1-\bar{a}_t}\epsilon \quad \epsilon \sim N(0,I) \tag{4.5}
q(xt∣x0)=aˉtx0+1−aˉtϵϵ∼N(0,I)(4.5)
同样可以得到
q
(
x
t
−
1
∣
x
0
)
=
a
ˉ
t
−
1
x
0
+
1
−
a
ˉ
t
ϵ
ϵ
∼
N
(
0
,
I
)
q(x_{t-1}|x_0)=\sqrt{\bar{a}_{t-1}}x_0+\sqrt{1-\bar{a}_t}\epsilon \quad \epsilon \sim N(0,I)
q(xt−1∣x0)=aˉt−1x0+1−aˉtϵϵ∼N(0,I),根据4.4式:
q
(
x
t
∣
x
t
−
1
)
=
1
−
β
t
x
t
−
1
+
β
t
ϵ
ϵ
∼
N
(
0
,
I
)
=
a
t
x
t
−
1
+
1
−
a
t
ϵ
q(x_t|x_{t-1}) = \sqrt{1-\beta_t}x_{t-1}+\sqrt{\beta_t}\epsilon \quad \epsilon \sim N(0,I) \\= \sqrt{a_t}x_{t-1}+\sqrt{1-a_t}\epsilon
q(xt∣xt−1)=1−βtxt−1+βtϵϵ∼N(0,I)=atxt−1+1−atϵ
根据高斯分布的性质,可以得到:
q
(
x
t
∣
x
t
−
1
)
:
x
t
∼
N
(
a
t
x
t
−
1
,
(
1
−
a
t
)
I
)
q
(
x
t
−
1
∣
x
0
)
:
x
t
−
1
∼
N
(
a
ˉ
t
−
1
x
0
,
(
1
−
a
ˉ
t
−
1
)
I
)
q
(
x
t
∣
x
0
)
:
x
t
∼
N
(
a
ˉ
t
x
0
,
(
1
−
a
ˉ
t
)
I
)
q(x_t|x_{t-1}): \ x_t \sim N (\sqrt{a}_tx_{t-1}, (1-a_t)I) \\ q(x_{t-1}|x_0): \ x_{t-1} \sim N (\sqrt{\bar{a}_{t-1}}x_0, (1-\bar{a}_{t-1})I) \\ q(x_{t}|x_0): \ x_{t} \sim N (\sqrt{\bar{a}_{t}}x_0, (1-\bar{a}_{t})I)
q(xt∣xt−1): xt∼N(atxt−1,(1−at)I)q(xt−1∣x0): xt−1∼N(aˉt−1x0,(1−aˉt−1)I)q(xt∣x0): xt∼N(aˉtx0,(1−aˉt)I)
既然已知
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)对应分布的均值和方差计算出来,存在以下等式符号
a
t
=
1
−
β
t
,
a
ˉ
t
=
∏
i
=
1
T
a
i
a_t=1-\beta_t , \bar{a}_t=\prod_{i = 1}^{T}a_i
at=1−βt,aˉt=∏i=1Tai,下式推导过程详细说明:
补充高斯分布的表达式: p ( x ) = 1 2 π σ e x p ( − ( x − u ) 2 2 σ 2 ) = 1 2 π σ e x p ( − 1 2 ( 1 σ 2 x 2 − 2 u σ 2 x + u 2 σ 2 ) ) p(x)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-u)^2}{2\sigma^2}) = \frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{1}{2}(\frac{1}{\sigma^2}x^2-\frac{2u}{\sigma^2}x+\frac{u^2}{\sigma^2})) p(x)=2πσ1exp(−2σ2(x−u)2)=2πσ1exp(−21(σ21x2−σ22ux+σ2u2))
72->73:将上面三项高斯分布的方差和均值代入表达式;
74->75:整理成高斯分布表达式标准形式,再进一步整理成如下的式子:
e x p ( − 1 2 ( ( a t β t + 1 1 − a ˉ t − 1 ) x t − 1 2 − ( 2 a t β t x t + 2 a ˉ t − 1 1 − a ˉ t − 1 ) x 0 ) x t − 1 + C ( x t , x 0 ) exp(-\frac{1}{2}((\frac{a_t}{\beta_t}+\frac{1}{1-\bar{a}_{t-1}})x^2_{t-1} - (\frac{2\sqrt{a_t}}{\beta_t}x_t+ \frac{2\sqrt{\bar{a}_t-1}}{1-\bar{a}_{t-1}})x_0)x_{t-1} + C(x_t,x_0) exp(−21((βtat+1−aˉt−11)xt−12−(βt2atxt+1−aˉt−12aˉt−1)x0)xt−1+C(xt,x0)
可以观察到如下式子与高斯分布的标准形式是一致的,都包含变量的2次项、1次项和常数项,从这可以证明 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt−1∣xt,x0)符合高斯分布。
84最终得到的是
q
(
x
t
−
1
∣
x
t
,
x
0
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)对应高斯分布的均值和方差,其中均值为
a
t
(
1
−
a
ˉ
t
−
1
)
x
t
+
a
t
−
1
(
1
−
a
t
)
x
0
1
−
a
ˉ
t
\frac{\sqrt{a_t}(1-\bar{a}_{t-1})x_t + \sqrt{a_{t-1}}(1-a_t)x_0}{1-\bar{a}_t}
1−aˉtat(1−aˉt−1)xt+at−1(1−at)x0,方差为
(
1
−
a
t
)
(
1
−
a
ˉ
t
−
1
)
1
−
a
ˉ
t
\frac{(1-a_t)(1-\bar{a}_{t-1})}{1-\bar{a}_t}
1−aˉt(1−at)(1−aˉt−1)。
最终可以得到
q
(
x
t
−
1
∣
x
t
,
x
0
)
q(x_{t-1}|x_t,x_0)
q(xt−1∣xt,x0)同样是高斯分布,并且该高斯分布的均值与数据是相关的,但是方差是跟前向扩散过程设定的参数有关,也是固定的。直观上理解,在给定
x
t
x_{t}
xt和
x
0
x_0
x0的条件下求
x
t
−
1
x_{t-1}
xt−1,其实就是对
x
t
x_t
xt和
x
t
−
1
x_{t-1}
xt−1加权求和,最终求和的系数如下所示。
对于KL散度的第2个分布
P
(
x
t
−
1
∣
x
t
)
P(x_{t-1}|x_t)
P(xt−1∣xt)已经由上面推导得到,两个高斯分布的KL散度是存在闭式解,如下图方框中的公式所示, 但是梳理扩散模型的整个过程,对于
∑
t
=
2
T
D
K
L
(
q
(
x
t
−
1
∣
x
t
,
x
0
)
∣
∣
p
θ
(
x
t
−
1
∣
x
t
)
)
\sum^T_{t=2}D_{KL}(q(x_{t-1}|x_t,x_0)||p_\theta(x_{t-1}|x_t))
∑t=2TDKL(q(xt−1∣xt,x0)∣∣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)是根据设定好均值和方差迭代计算,这里的方差和均值都是固定的;网络需要学习的
p
θ
(
x
t
−
1
∣
x
t
)
p_\theta(x_{t-1}|x_t)
pθ(xt−1∣xt)方差同样是固定的,只有均值需要学习。
要让两个分布尽量接近,只需求两个分布的均值越接近越好,但是在实际的代码中,作者并没有用生成网络预测均值,而是更进一步进行了化简。
根据前面所述,根据 x 0 x_0 x0和预先设定好的参数,可以得到任意时刻前向扩散得到的图像 x t x_t xt,将 x t x_t xt和时间步 t t t输入到去噪网络中,可以直接通过预测均值的方式使得两个分布尽可能的接近。对于均值公式中的 x 0 x_0 x0,由 x t = a ˉ t x 0 + 1 − a ˉ t ϵ x_t=\sqrt{\bar{a}_t}x_0+\sqrt{1-\bar{a}_t}\epsilon xt=aˉtx0+1−aˉtϵ可以通过变换得到 x 0 = x t − 1 − a ˉ t ϵ a ˉ t x_0=\frac{x_t-\sqrt{1-\bar{a}_t}\epsilon}{\sqrt{\bar{a}_t}} x0=aˉtxt−1−aˉtϵ,将 x 0 x_0 x0代入均值的公式中可以得到如下结果:
即最终网络在均值中要预测的值只有噪声
ϵ
\epsilon
ϵ,其他项全部是已知的参数,这也是作者最终在算法中给出的公式结果:
第3项 − l o g ( p θ ( x 0 ∣ x 1 ) ) -log(p_\theta(x_0|x_1)) −log(pθ(x0∣x1)) 作者最终去掉了该项。即在 t = 1 t=1 t=1时,不添加噪声。
综合上面分析,DDPM的优化目标虽然分成了3项,但是其中两项是无关的,第2项中最关键部分即:
∑
t
=
2
T
D
K
L
(
q
(
x
t
−
1
∣
x
t
,
x
0
)
⏟
前向扩散
t
时刻分布
∣
∣
p
θ
(
x
t
−
1
∣
x
t
)
⏟
逆扩散
t
时刻分布
)
\sum^T_{t=2}D_{KL}( \underbrace{q(x_{t-1}|x_t,x_0)}_{前向扩散t时刻分布} || \underbrace{ p_\theta(x_{t-1}|x_t)}_{逆扩散t时刻分布})
t=2∑TDKL(前向扩散t时刻分布
q(xt−1∣xt,x0)∣∣逆扩散t时刻分布
pθ(xt−1∣xt))
最终变成对前向扩散 ϵ \epsilon ϵ 和 逆扩散 ϵ θ \epsilon_\theta ϵθ同一时刻分布中的噪声最小化。