本篇是《Diffusion Model (扩散生成模型)的基本原理详解(二)Score-Based Generative Modeling(SGM)》的续写,继续介绍有关diffusion的另一个相关模型,同理,参考文献和详细内容与上一篇相同,读者可自行查阅,本篇为Diffusion入门基础介绍的完结篇,本篇来着重介绍Stochastic Differential Equation(SDE)的部分。本文的理论大部分来源于Song Yang et al的SDE原文,链接请点击。
本篇内容需要具有前置知识《随机过程》的学习。
3、Stochastic Differential Equation(SDE)
我们注意到,不论是DDPM,还是SGM而言,它们都存在一个共同的特性:加噪链和去噪过程都是离散化的,即他们按照时间步
1
~
T
1~T
1~T被打散,我们已经强调过,当然时间
T
T
T 需要足够大,才可以保证我们最终加噪后的样本趋近于标准正态分布(如果不懂的请看第一节介绍)。事实上,这是一个随机的过程,SDE的思想是想将这个离散的随机控制过程连续化,那么就要涉及随机微分方程(随机控制)的理论和原理了。Song Yang et al.详细的对这个过程进行了可视化的描述(从图中我们可以看出想要通过一个连续的过程来描述该问题)。
3.1、Forward Brownian motion SDE(正时序加噪布朗运动随机微分方程)
首先给出该正时序随机微分方程的公式,其中
f
(
x
,
t
)
f(x,t)
f(x,t)称为
x
(
t
)
x(t)
x(t)的漂移系数,
g
(
t
)
g(t)
g(t)称为
x
(
t
)
x(t)
x(t)的扩散系数。
w
w
w为正时序标准布朗运动。
d
x
=
f
(
x
,
t
)
d
t
+
g
(
t
)
d
w
dx=f(x,t)dt+g(t)dw
dx=f(x,t)dt+g(t)dw
下面我们来证明不管是DDPM还是SGM,他们都是作为SDE的离散化版本。
3.1.1、DDPM与Forward Brownian motion SDE等价性
我们已经从(一)中知道,针对DDPM而言,一个长度链为
N
N
N的加噪过程为:
x
i
=
1
−
β
i
x
i
−
1
+
β
i
z
i
−
1
x_i=\sqrt{1-\beta_i}x_{i-1}+\sqrt{\beta_i}z_{i-1}
xi=1−βi
xi−1+βi
zi−1
令
β
i
^
=
β
i
N
\hat{\beta_i}=\frac{\beta_i}{N}
βi^=Nβi,令
β
(
i
N
)
=
β
i
^
\beta(\frac{i}{N})=\hat{\beta_i}
β(Ni)=βi^,
x
(
i
N
)
=
x
i
x(\frac{i}{N})=x_i
x(Ni)=xi,
z
(
i
N
)
=
z
i
z(\frac{i}{N})=z_i
z(Ni)=zi
则上式可被改写为:
x
(
i
N
)
=
1
−
1
N
β
(
i
N
)
x
(
i
−
1
N
)
+
1
N
β
(
i
N
)
z
(
i
−
1
N
)
x(\frac{i}{N})=\sqrt{1-\frac{1}{N}\beta(\frac{i}{N})}x(\frac{i-1}{N})+\sqrt{\frac{1}{N}\beta(\frac{i}{N})}z(\frac{i-1}{N})
x(Ni)=1−N1β(Ni)
x(Ni−1)+N1β(Ni)
z(Ni−1)
若将
i
N
\frac{i}{N}
Ni视为一个离散小步长,那么我们可以认为这等价于:
x
(
t
i
)
=
1
−
△
t
β
(
t
i
)
x
(
t
i
−
1
)
+
△
t
β
(
t
i
)
z
(
t
i
−
1
)
x( t_i)=\sqrt{1-\bigtriangleup t\beta( t_i)}x( t_{i-1})+\sqrt{\bigtriangleup t\beta( t_i)}z( t_{i-1})
x(ti)=1−△tβ(ti)
x(ti−1)+△tβ(ti)
z(ti−1)
将其连续化:
t
i
−
1
+
△
t
=
t
i
t_{i-1}+\bigtriangleup t=t_i
ti−1+△t=ti
x
(
t
+
△
t
)
=
1
−
△
t
β
(
t
+
△
t
)
x
(
t
)
+
△
t
β
(
t
+
△
t
)
z
(
t
)
x(t+\bigtriangleup t)=\sqrt{1-\bigtriangleup t\beta(t+\bigtriangleup t)}x(t)+\sqrt{\bigtriangleup t\beta(t+\bigtriangleup t)}z( t)
x(t+△t)=1−△tβ(t+△t)
x(t)+△tβ(t+△t)
z(t)
将其Taylor近似进行展开
x
(
t
+
△
t
)
≈
[
1
−
1
2
△
t
β
(
t
+
△
t
)
]
x
(
t
)
+
△
t
β
(
t
+
△
t
)
z
(
t
)
——
[
D
D
P
M
]
x(t+\bigtriangleup t)\approx[1-\frac{1}{2}\bigtriangleup t\beta(t+\bigtriangleup t)]x(t)+\sqrt{\bigtriangleup t\beta(t+\bigtriangleup t)}z( t)——[DDPM]
x(t+△t)≈[1−21△tβ(t+△t)]x(t)+△tβ(t+△t)
z(t)——[DDPM]
x
(
t
+
△
t
)
−
x
(
t
)
≈
−
1
2
△
t
β
(
t
)
x
(
t
)
+
△
t
β
(
t
)
z
(
t
)
——
[
D
D
P
M
]
x(t+\bigtriangleup t)-x(t)\approx-\frac{1}{2}\bigtriangleup t\beta(t)x(t)+\sqrt{\bigtriangleup t\beta(t)}z(t)——[DDPM]
x(t+△t)−x(t)≈−21△tβ(t)x(t)+△tβ(t)
z(t)——[DDPM]
而这即:
d
x
=
−
1
2
β
(
t
)
x
(
t
)
d
t
+
β
(
t
)
d
w
——
[
S
D
E
]
≈
[
D
D
P
M
]
dx=-\frac{1}{2}\beta(t)x(t)dt+\sqrt{\beta(t)}dw——[SDE]\approx[DDPM]
dx=−21β(t)x(t)dt+β(t)
dw——[SDE]≈[DDPM]
3.1.2、SGM与Forward Brownian motion SDE等价性
我们已经从(二)中知道,针对SGM而言,一个长度链为
N
N
N的加噪过程为:
x
i
~
N
(
x
0
,
σ
i
2
I
)
,
x
i
−
1
~
N
(
x
0
,
σ
i
−
1
2
I
)
x_i~N(x_0,\sigma_i^2I),x_{i-1}~N(x_0,\sigma_{i-1}^2I)
xi~N(x0,σi2I),xi−1~N(x0,σi−12I)
x
i
x_i
xi可以视为从
x
i
−
1
x_{i-1}
xi−1处加上了一个独立的
N
(
0
,
(
σ
i
2
−
σ
i
−
1
2
)
I
)
N(0,(\sigma_i^2-\sigma_{i-1}^2)I)
N(0,(σi2−σi−12)I)来获得。
即
x
i
=
x
i
−
1
+
(
σ
i
2
−
σ
i
−
1
2
)
z
i
−
1
x_i=x_{i-1}+\sqrt{(\sigma_i^2-\sigma_{i-1}^2)}z_{i-1}
xi=xi−1+(σi2−σi−12)
zi−1
令
x
(
i
N
)
=
x
i
,
σ
(
i
N
)
=
σ
i
,
z
(
i
N
)
=
z
i
,
x
i
=
x
i
−
1
+
△
t
x(\frac{i}{N})=x_i,\sigma(\frac{i}{N})=\sigma_i,z(\frac{i}{N})=z_i,x_i=x_{i-1}+\bigtriangleup t
x(Ni)=xi,σ(Ni)=σi,z(Ni)=zi,xi=xi−1+△t
上式变成了:
x
(
t
+
△
t
)
=
x
(
t
)
+
(
σ
2
(
t
+
△
t
)
−
σ
2
(
t
)
)
z
t
x(t+\bigtriangleup t)=x(t)+\sqrt{(\sigma^2(t+\bigtriangleup t)-\sigma^2(t))}z_{t}
x(t+△t)=x(t)+(σ2(t+△t)−σ2(t))
zt
x
(
t
+
△
t
)
−
x
(
t
)
=
(
σ
2
(
t
+
△
t
)
−
σ
2
(
t
)
)
△
t
△
t
z
t
t
——
[
S
G
M
]
x(t+\bigtriangleup t)-x(t)=\sqrt{\frac{(\sigma^2(t+\bigtriangleup t)-\sigma^2(t))}{\bigtriangleup t}\bigtriangleup t}z_{t}t——[SGM]
x(t+△t)−x(t)=△t(σ2(t+△t)−σ2(t))△t
ztt——[SGM]
x
(
t
+
△
t
)
−
x
(
t
)
≈
d
(
σ
2
(
t
)
)
d
t
△
t
z
t
——
[
S
G
M
]
x(t+\bigtriangleup t)-x(t)\approx\sqrt{\frac{d(\sigma^2(t))}{dt}\bigtriangleup t}z_t——[SGM]
x(t+△t)−x(t)≈dtd(σ2(t))△t
zt——[SGM]
而这即:
d
x
=
d
(
σ
2
(
t
)
)
d
t
d
w
——
[
S
D
E
]
≈
[
S
G
M
]
dx=\sqrt{\frac{d(\sigma^2(t))}{dt}}dw——[SDE]\approx[SGM]
dx=dtd(σ2(t))
dw——[SDE]≈[SGM]
3.1.3、新性能SDE
由于上述讨论我们已经知道了如下的等价性:
d
x
=
−
1
2
β
(
t
)
x
(
t
)
d
t
+
β
(
t
)
d
w
——
[
S
D
E
]
≈
[
D
D
P
M
]
dx=-\frac{1}{2}\beta(t)x(t)dt+\sqrt{\beta(t)}dw——[SDE]\approx[DDPM]
dx=−21β(t)x(t)dt+β(t)
dw——[SDE]≈[DDPM]
d
x
=
d
(
σ
2
(
t
)
)
d
t
d
w
——
[
S
D
E
]
≈
[
S
G
M
]
dx=\sqrt{\frac{d(\sigma^2(t))}{dt}}dw——[SDE]\approx[SGM]
dx=dtd(σ2(t))
dw——[SDE]≈[SGM]
Song等人提出了一种表现性能更好的SDE方法作为代替:
d
x
=
−
1
2
β
(
t
)
x
(
t
)
d
t
+
β
(
t
)
(
1
−
2
e
−
2
∫
o
t
β
(
s
)
d
s
)
d
w
——
[
N
S
D
E
]
dx=-\frac{1}{2}\beta(t)x(t)dt+\sqrt{\beta(t)(1-2e^{-2\int_o^t\beta(s)ds})}dw——[NSDE]
dx=−21β(t)x(t)dt+β(t)(1−2e−2∫otβ(s)ds)
dw——[NSDE]
通过3.1.2和3.1.1的简要证明,我们给出了SDE与DDPM/SGM在加噪链的等价性,说明了DDPM与SGM在加噪过程是一种离散化的SDE过程。SDE则为上述二者的连续加噪推广综合考虑二者的缺陷和有点,作者提出了一种NSDE方法。
3.2、Reverse Brownian motion SDE(逆时序去噪布朗运动随机微分方程)
3.2.1、Reverse Brownian motion SDE
正向加噪过程的逆过程被Anderson指出仍然也是一个随机微分方程。Song等人给出了这一部分的详细说明,公式如下,其中
f
(
x
,
t
)
f(x,t)
f(x,t)称为
x
(
t
)
x(t)
x(t)的漂移系数,
g
(
t
)
g(t)
g(t)称为
x
(
t
)
x(t)
x(t)的扩散系数。
w
^
\hat{w}
w^为逆时序标准布朗运动,
p
t
(
x
)
p_t(x)
pt(x)为
x
(
t
)
x(t)
x(t)分布密度函数。
d
x
=
[
f
(
x
,
t
)
−
g
2
(
t
)
∇
x
l
o
g
(
p
t
(
x
)
)
]
d
t
+
g
(
t
)
d
w
^
dx=[f(x,t)-g^2(t)\nabla_xlog(p_t(x))]dt+g(t)d\hat{w}
dx=[f(x,t)−g2(t)∇xlog(pt(x))]dt+g(t)dw^
3.2.2、Probability Flow ODE(概率流常微分方程)与SDE的轨迹等价性。
Song等人证明了对于任何逆时序去噪声布朗运动随机微分方程的过程而言,存在着相应的确定性概率流常微分方程,相应的公式如下,由于证明比较复杂繁琐,限于长度限制,这里较难写下,笔者这里直接给出结论,详细证明请看原文的附录,需要利用随机过程和概率论的知识。
d
x
=
[
f
(
x
,
t
)
−
1
2
g
2
(
t
)
∇
x
l
o
g
(
p
t
(
x
)
)
]
d
t
dx=[f(x,t)-\frac{1}{2}g^2(t)\nabla_xlog(p_t(x))]dt
dx=[f(x,t)−21g2(t)∇xlog(pt(x))]dt
该ODE公式与SDE公式具有相同的边缘密度
p
t
(
x
)
p_t(x)
pt(x)。
3.3、 SDE训练
不论是3.2.1中的SDE还是3.2.2中的ODE,这都说明了,在任意时间 t t t时刻,一旦我们已经知道了它的Stevin得分(见第二节) ∇ x l o g ( p t ( x ) ) \nabla_xlog(p_t(x)) ∇xlog(pt(x)),那么我们可以该逆向随机微分方程采用相应的数值方法根据时间逆向生成样本数据,相比于SGM而言,它可以采用几种办法:
①采用Langevin Monte Carlo迭代更新+采样(SGM,SDE均适用)(不懂请见第二讲)
②Numerical SDE solvers(数值SDE求解)(仅适用SDE)
③Numerical ODE solvers(数值ODE求解)(仅适用SDE)
3.3.1、SDE训练方法
读到这里,读者们应该已经意识到了SDE和SGM的区别在于一个处理的是连续型,一个处理的是离散型,SDE为SGM和DDPM的推广,更一般的模型,我们意识到,若能够训练一个网络,给予任意时间
T
T
T(注意,不同于SGM,此时间可以不为整数),若能够很好的估计
∇
x
l
o
g
(
p
t
(
x
)
)
\nabla_xlog(p_t(x))
∇xlog(pt(x)),那么便可以采用反向SDE求解或反向ODE求解来数值模拟生成,因此目标仍旧要学习一个网络
s
θ
(
x
t
,
t
)
s_\theta(x_t,t)
sθ(xt,t)。
L
o
s
s
=
E
t
∈
[
0
,
T
]
,
x
0
,
x
t
[
∣
∣
s
θ
(
x
t
,
t
)
−
∇
x
l
o
g
(
p
0
~
t
(
x
t
∣
x
0
)
)
∣
∣
2
]
Loss=E_{t\in[0,T],x_0,x_t}[||s_\theta(x_t,t)-\nabla_xlog(p_{0~t}(x_t|x_0))||^2]
Loss=Et∈[0,T],x0,xt[∣∣sθ(xt,t)−∇xlog(p0~t(xt∣x0))∣∣2]其中
p
0
~
t
(
x
t
∣
x
0
)
)
p_{0~t}(x_t|x_0))
p0~t(xt∣x0))的获取通过对Forward Brownian motion SDE求解获得,
t
t
t从
[
0
,
T
]
[0,T]
[0,T]中进行均匀采样,并不要求为整数。
训练好该网络后,SDE便可通过利用
s
θ
(
x
t
,
t
)
s_\theta(x_t,t)
sθ(xt,t)来代替进行反向的采样过程,在每个时间t时刻,向前进行逆向生成的过程满足如下
(
1
)
(1)
(1)或者
(
2
)
(2)
(2)进行生成:
d
x
=
[
f
(
x
,
t
)
−
1
2
g
2
(
t
)
s
θ
(
x
t
,
t
)
]
d
t
——
(
1
)
dx=[f(x,t)-\frac{1}{2}g^2(t)s_\theta(x_t,t)]dt——(1)
dx=[f(x,t)−21g2(t)sθ(xt,t)]dt——(1)
d
x
=
[
f
(
x
,
t
)
−
g
2
(
t
)
s
θ
(
x
t
,
t
)
]
d
t
+
g
(
t
)
d
w
^
——
(
2
)
dx=[f(x,t)-g^2(t)s_\theta(x_t,t)]dt+g(t)d\hat{w}——(2)
dx=[f(x,t)−g2(t)sθ(xt,t)]dt+g(t)dw^——(2)
其中如何采样的办法可以采用3.3提到的①②③进行。
4、Diffusion-Summary
到这里为止,笔者已经介绍了目前Diffusion的基础三个模型。完全足够读者进行Diffusion的入门学习,后续深入内容请读者根据兴趣自行选择原文阅读。
总结一下,笔者对Diffusion的基础进行了(一)(二)(三)的介绍,其中(二)(三)为相关的Score-Function方法。(一)为类似端对端的DDPM直接预测法,希望这些内容可以为初学Diffusion的读者们提供更多的启示。当然笔者介绍的远不及原文详细。若想更好的理解内容,建议直接阅读这三篇文章。笔者均给予了链接,目前Diffusion的研究现状基于这三个基础模型的数据部分,算法部分,高效采样办法和更新参数方法,参数-损失加权法,和一些其他部分等进行改进,但主体思想基本是基本与这三模型相同的。看完(一)~(三)的内容,希望各位对Diffusion有了基础的理解和兴趣,并希望能够启发大家未来的研究和应用。
所有公式均为手打,并且笔者并不是专门研究Diffusion的学者,这些内容仅代表笔者自行的学习笔记和理解,当然很可能会出现一些小错误或者推导不严谨的地方。若发现错误或不严谨之处,笔者非常欢迎大家进行多多指正和批评。笔者希望与大家进行一起探索ML更多的发展现状和前景,同时笔者也在实时跟进目前ML和RL的发展现状和新型研究成果,后续若有时间,笔者将更新这三模型的代码部分,谢谢大家!