ddim原理及代码(Denoising diffusion implicit models)
前言
之前学习了 DDPM(DDPM原理与代码剖析)和 IDDPM(IDDPM原理和代码剖析), 这次又来学习另一种重要的扩散模型。它的采样速度比DDPM快很多(respacing),扩散过程不依赖马尔科夫链。
Denoising diffusion implicit models, ICLR 2021
理论
Astract和Introduction部分
(1) 由于DDPM加噪基于马尔科夫链过程,那么在去噪过程过程也必须基于走这个过程,导致step数很多。
(2) DDIM的训练过程和DDPM一样,则可以利用起DDPM的权重,代码也可重用。而只要重新写一个sample的代码,就可以享受到采样step减少的好处。
(3) DDIM的采样过程是个确定的过程。
(4) 先有的概率模型主要有扩散的,也有分数的。
“Recent works on iterative generative models (Bengio et al., 2014), such as denoising diffusion probabilistic models (DDPM, Ho et al. (2020)) and noise conditional score networks (NCSN, Song & Ermon (2019))”
(5) 采样过程可以是郎之万,也可以是对逆扩散过程进行建模
“This generative Markov Chain process is either based on Langevin dynamics (Song & Ermon, 2019) or obtained by reversing a forward diffusion process that progressively turns an image into noise (Sohl-Dickstein et al., 2015).”
回顾DDPM
若没掌握过DDPM, 建议看下我之前的一篇博客 DDPM原理与代码剖析。
在ddim中,
α
t
\alpha_t
αt 相当于之前的
α
‾
t
\overline{\alpha}_t
αt
于是原来采样的公式变成了
q
(
X
1
:
T
∣
X
0
)
:
=
∏
t
=
0
T
q
(
X
t
∣
X
t
−
1
)
q(X_{1:T}|X_0) := \prod_{t=0}^T q(X_t|X_{t-1})
q(X1:T∣X0):=∏t=0Tq(Xt∣Xt−1), where
q
(
X
t
∣
X
t
−
1
)
:
=
N
(
α
t
α
t
−
1
X
t
−
1
,
(
1
−
α
t
α
t
−
1
)
I
)
q(X_t|X_{t-1}) := N(\sqrt{\frac{\alpha_t}{\alpha_{t-1}}}X_{t-1}, (1-\frac{\alpha_t}{\alpha_{t-1}})I)
q(Xt∣Xt−1):=N(αt−1αtXt−1,(1−αt−1αt)I)
A special property of the forward process is that
q
(
X
t
∣
X
0
)
:
=
N
(
X
t
;
α
t
X
0
,
(
1
−
α
t
)
I
)
q(X_t|X_0) := N(X_t; \sqrt{\alpha_t}X_0, (1-\alpha_t)I)
q(Xt∣X0):=N(Xt;αtX0,(1−αt)I)
X t = α t X 0 + 1 − α t ϵ X_t = \sqrt{\alpha_t}X_0 + \sqrt{1-\alpha_t}\epsilon Xt=αtX0+1−αtϵ