论文:Denoising Diffusion Probabilistic Models
讲解视频:Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读
视频笔记:Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读
示例代码:
符号和公式
x
0
x_0
x0:从真实数据分布中采样得到的数据,可以粗略得理解成样本图像。
x
i
,
i
=
1
,
2
,
.
.
.
,
T
x_i,i =1,2,...,T
xi,i=1,2,...,T:第
i
i
i次扩散时向样本数据中添加高斯噪声后得到的样本。
q
(
x
)
q(x)
q(x):扩散过程中,数据
x
x
x的分布,模型中统一为高斯分布。
q
(
x
t
∣
x
t
−
1
)
q(x_t|x_{t-1})
q(xt∣xt−1):给定
x
t
−
1
x_{t-1}
xt−1的前提下,
x
t
x_{t}
xt的数据分布。
p
(
x
)
p(x)
p(x):逆扩散过程中,数据
x
x
x的分布。
z
t
z_t
zt:均值为0,方差为1的正态分布噪声,经过变换后可以表示第
i
i
i次扩散时向样本数据中添加的高斯噪声。
q
(
x
t
∣
x
t
−
1
)
=
N
(
x
t
;
1
−
β
t
x
t
−
1
,
β
t
I
)
q(x_t|x_{t-1})=N(x_t;\sqrt{1-\beta_t }x_{t-1},\beta_tI)
q(xt∣xt−1)=N(xt;1−βtxt−1,βtI):
x
t
x_t
xt是以
1
−
β
t
x
t
−
1
\sqrt{1-\beta_t }x_{t-1}
1−βtxt−1为均值,
β
t
I
\beta_t I
βtI为方差的正态分布。令
α
t
=
1
−
β
t
,
α
‾
t
=
∏
i
=
1
T
α
i
\alpha_t=1-\beta_t,\overline{\alpha}_t=\prod^T_{i=1}\alpha_i
αt=1−βt,αt=∏i=1Tαi,则
x
t
x_t
xt可以写成下式:
x
t
=
α
t
x
t
−
1
+
1
−
α
t
z
t
−
1
x_t=\sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}z_{t-1}
xt=αtxt−1+1−αtzt−1
将
x
t
−
1
x_{t-1}
xt−1进行替换,基于正态分布叠加的规律,可以得到如下计算:
整体思路
扩散模型可以分为扩散/前向过程和逆扩散/反向过程。
扩散过程就是向样本图像中逐步添加噪声,学习如何将图像扩散为噪声。
逆扩散过程就是从噪声中恢复图像,当模型学会从噪声中恢复图像后,给定噪声数据,模型也能够由噪声生成图像。因此,推理时只包括逆扩散过程。
扩散过程
扩散模型和其它类型的潜空间模型的区别在于近似后验分布
q
(
x
1
:
T
∣
x
0
)
q(x_{1:T}|x_0)
q(x1:T∣x0),
扩散模型的前向过程固定在马尔科夫链上,所以具有下式:
前向过程根据方差表
β
1
,
.
.
.
,
β
T
\beta_1,...,\beta_T
β1,...,βT向数据中逐步添加高斯噪声,使
x
t
x_t
xt成为以
1
−
β
t
x
t
−
1
\sqrt{1-\beta_t }x_{t-1}
1−βtxt−1为均值,
β
t
I
\beta_t I
βtI为方差的正态分布。即:
基于上面两个式子,可以推出
x
T
x_T
xT和
x
0
x_0
x0的关系,如下:
反向过程
反向过程被定义为马尔科夫链,初始样本为标准正态分布 p ( x T ) = N ( x T ; 0 , I ) p(x_T)=N(x_T;0,I) p(xT)=N(xT;0,I)。