扩散模型Diffusion model | 基于分数的生成模型
论文参考:Score-Based Generative Modeling through Stochastic Differential Equations
在 DDIM 中,其作者对 DDPM 的采样及前项传播公式进行了修改。从而实现了采样的确定性以及速度提升。但是此过程也可以与随机微分方程(Stochastic Differential Equation,SDE)和常微分方程ODE相联系
生成模型概述
现有的图像生成技术在很大程度上可以根据它们如何表示概率分布分为两类。
- 基于似然的模型,通过(近似)最大似然直接学习分布的概率密度(或质量)函数。典型的基于似然的模型包括自回归模型、归一化流动模型、基于能量的模型(EBM) 和变分自编码器 (VAE)。
- 隐式生成模型,其中概率分布由其采样过程的模型隐式表示。如生成对抗网络(GAN),其中通过用神经网络转换随机高斯向量来合成来自数据分布的新样本。
基于似然的模型要么需要对模型架构进行严格限制,以确保似然计算具有可处理的归一化常数,要么必须依赖代理目标来逼近最大似然训练。而隐式生成模型通常需要对抗性训练,这是出了名的不稳定,可能导致模式崩溃。
基于分数的生成模型
此模型的关键思想是对对数概率密度函数的梯度进行建模,该函数通常称为评分函数。这种基于分数的模型不需要具有可处理的归一化常数,并且可以通过得分匹配直接学习。
评分函数可以具体定义为:
∂
(
log
p
(
x
)
)
∂
x
=
∇
x
log
p
(
x
)
\frac{\partial\left(\log p\left(\mathbf{x}\right)\right)}{\partial\mathbf{x}}=\nabla_{\mathbf{x}}\log p\left(\mathbf{x}\right)
∂x∂(logp(x))=∇xlogp(x),那么可以利用神经网络构建分数模型
s
θ
(
x
)
s_{\theta}({x})
sθ(x)来拟合
∇
x
log
p
(
x
)
\nabla_{x}\log p({x})
∇xlogp(x)。从而可以通过最小化模型和数据分布之间的Fisher散度(简记为F-散度)来训练基于分数的模型,其表达式为
E
p
(
x
)
[
∥
s
θ
(
x
)
−
∇
x
log
p
(
x
)
∥
2
2
]
=
∫
x
∼
X
p
(
x
)
∥
s
θ
(
x
)
−
∇
x
log
p
(
x
)
∥
2
2
d
x
\mathbb{E}_{p\left(\mathbf{x}\right)}\left[\left\|s_{\theta}\left(\mathbf{x}\right)-\nabla_{\mathbf{x}}\log p\left(\mathbf{x}\right)\right\|_{2}^{2}\right]=\int_{\mathbf{x}\sim\mathcal{X}}p\left(\mathbf{x}\right)\left\|s_{\theta}\left(\mathbf{x}\right)-\nabla_{\mathbf{x}}\log p\left(\mathbf{x}\right)\right\|_{2}^{2}d\mathbf{x}
Ep(x)[∥sθ(x)−∇xlogp(x)∥22]=∫x∼Xp(x)∥sθ(x)−∇xlogp(x)∥22dx
对于输入数据(样本)来说,其对数概率密度增长最快的方向,其可以用矢量场分布图表示。因此,在采样过程中沿着分数的方向走,就能够走到数据分布的高概率密度区域,最终生成的样本就会符合原数据分布。
Langevin 动力学
Langevin dynamics 提供了一个 MCMC 过程来使用其评分函数
∇
x
log
p
(
x
)
\nabla_\mathbf{x} \log p(\mathbf{x})
∇xlogp(x)从分布中采样
p
(
x
)
p(\mathbf{x})
p(x)。具体来说,它从任意先验分布初始化
x
0
∼
π
(
x
)
\mathbf{x}_0 \sim \pi(\mathbf{x})
x0∼π(x),然后迭代以下内容:
x
i
+
1
←
x
i
+
ϵ
∇
x
log
p
(
x
)
+
2
ϵ
z
i
,
i
=
0
,
1
,
⋯
,
K
\mathbf{x}_{i+1} \gets \mathbf{x}_i + \epsilon \nabla_\mathbf{x} \log p(\mathbf{x}) + \sqrt{2\epsilon}~ \mathbf{z}_i, \quad i=0,1,\cdots, K
xi+1←xi+ϵ∇xlogp(x)+2ϵ zi,i=0,1,⋯,K
其中,
z
i
∼
N
(
0
,
I
)
\mathbf{z}_i \sim \mathcal{N}(0, I)
zi∼N(0,I)为标准高斯分布。理论上,当
ϵ
→
0
\epsilon \to 0
ϵ→0且
K
→
∞
K \to \infty
K→∞时,最终生成的样本
x
T
x_T
xT将会服从原数据分布
p
(
x
)
p(x)
p(x)。这个模型就叫基于分数的生成模型SMLD。
基于分数的生成模型的缺陷与改进
在低密度区域,估计的分数函数是不准确的,因为在这些区域可用于计算分数匹配目标的数据点很少。一种解决方案是用噪声扰动数据点,并在嘈杂的数据点上训练基于分数的模型。当噪声幅度足够大时,它可以填充低数据密度区域,以提高估计分数的准确性。
但噪声的选择上依然存在一定程度上的问题,强度太小起不到效果,而强度太大会破坏数据的原始分布。因此可以同时使用多个尺度
σ
1
<
σ
2
<
⋯
<
σ
L
\sigma_1 < \sigma_2 < \cdots < \sigma_L
σ1<σ2<⋯<σL的同性高斯噪声扰动加入到
p
(
x
)
p(x)
p(x)中,即可获得噪声扰动分布
p
σ
i
(
x
)
=
∫
p
(
y
)
N
(
x
;
y
,
σ
i
2
I
)
d
y
.
p_{\sigma_i}(\mathbf{x}) = \int p(\mathbf{y}) \mathcal{N}(\mathbf{x}; \mathbf{y}, \sigma_i^2 I) \mathrm{d} \mathbf{y}.
pσi(x)=∫p(y)N(x;y,σi2I)dy.
之后就可以用噪声条件评分模型
s
θ
(
x
,
t
)
s_{\theta}({x},t)
sθ(x,t)来估计经过噪声扰动过的分布分数,
∑
i
=
1
L
λ
(
i
)
E
p
σ
i
(
x
)
[
∥
∇
x
log
p
σ
i
(
x
)
−
s
θ
(
x
,
i
)
∥
2
2
]
\sum_{i=1}^L \lambda(i) \mathbb{E}_{p_{\sigma_i}(\mathbf{x})}[\| \nabla_\mathbf{x} \log p_{\sigma_i}(\mathbf{x}) - \mathbf{s}_\theta(\mathbf{x}, i) \|_2^2]
i=1∑Lλ(i)Epσi(x)[∥∇xlogpσi(x)−sθ(x,i)∥22]
采样方式也要做出相应的变化,我们对于不同的噪声强度
i
=
L
,
L
−
1
,
⋯
,
1
i = L, L-1, \cdots, 1
i=L,L−1,⋯,1做Langevin采样,噪声尺度
σ
t
\sigma_t
σt随时间逐渐减小(退火),同时上一个scale的结果作为这一次的初始化。
与SDM的联系
前向过程
DDPM的前向传播过程被划分为了固定的
T
T
T步,我们可以将它们理解为一个在时间上连续的变换过程:
d
x
=
f
(
x
,
t
)
d
t
+
g
(
t
)
d
w
d{x}={f}({x},t)dt+g(t)d\mathbf{w}
dx=f(x,t)dt+g(t)dw
其中, t t t代表时间步, w w w为标准维纳过程(也称为布朗运动,可视为随机项), f ( x , t ) f({x},t) f(x,t)和 g ( t ) g(t) g(t)分别为漂移系数和扩散系数。和 DDIM 相比,DDIM的前向过程可以看作 ODE。
SDE 与 ODE 的主要差别在于 SDE 在传播过程中,添加了随机项 g ( t ) d w g(t)d\mathbf{w} g(t)dw,而引入SDE形式来描述扩散模型的本质好处是“将理论分析和代码实现分离开来”
上式也可以看做下述离散形式在 Δ t → 0 Δt→0 Δt→0时的极限:
x
t
+
Δ
t
−
x
t
=
f
(
x
,
t
)
Δ
t
+
g
(
t
)
Δ
t
ε
,
ε
∼
N
(
0
,
I
)
{x}_{t+\Delta t}-{x}_t={f}({x},t)\Delta t+g(t)\sqrt{\Delta t}\boldsymbol{\varepsilon},\quad\boldsymbol{\varepsilon}\sim\mathcal{N}(\boldsymbol{0},\boldsymbol{I})
xt+Δt−xt=f(x,t)Δt+g(t)Δtε,ε∼N(0,I)
上式可以用概率描述为:
p
(
x
t
+
Δ
t
∣
x
t
)
=
N
(
x
t
+
Δ
t
;
x
t
+
f
t
(
x
t
)
Δ
t
,
g
t
2
Δ
t
I
)
∝
exp
(
−
∣
∣
x
t
+
Δ
t
−
x
t
−
f
t
(
x
t
)
Δ
t
∣
∣
2
2
g
t
2
Δ
t
)
p(x_{t+\Delta t}|x_{t})=N(x_{t+\Delta t};x_{t}+f_{t}(x_{t})\Delta t,g_{t}^{2}\Delta tI)\propto\exp\left(-\frac{||x_{t+\Delta t}-x_{t}-f_{t}(x_{t})\Delta t||^{2}}{2g_{t}^{2}\Delta t}\right)
p(xt+Δt∣xt)=N(xt+Δt;xt+ft(xt)Δt,gt2ΔtI)∝exp(−2gt2Δt∣∣xt+Δt−xt−ft(xt)Δt∣∣2)
反向过程
使用贝叶斯公式可以得到
p
(
x
t
∣
x
t
+
Δ
t
)
=
p
(
x
t
+
Δ
t
∣
x
t
)
p
(
x
t
)
p
(
x
t
+
Δ
t
)
=
p
(
x
t
+
Δ
t
∣
x
t
)
exp
(
log
p
(
x
t
)
−
log
p
(
x
t
+
Δ
t
)
)
∝
exp
(
−
∥
x
t
+
Δ
t
−
x
t
−
f
t
(
x
t
)
Δ
t
∥
2
2
g
t
2
Δ
t
+
log
p
(
x
t
)
−
log
p
(
x
t
+
Δ
t
)
)
\begin{aligned} p(\boldsymbol{x}_t|\boldsymbol{x}_{t+\Delta t})& =\frac{p(\boldsymbol{x}_{t+\Delta t}|\boldsymbol{x}_t)p(\boldsymbol{x}_t)}{p(\boldsymbol{x}_{t+\Delta t})}=p(\boldsymbol{x}_{t+\Delta t}|\boldsymbol{x}_t)\exp(\log p(\boldsymbol{x}_t)-\log p(\boldsymbol{x}_{t+\Delta t})) \\ &\propto\exp\left(-\frac{\|\boldsymbol{x}_{t+\Delta t}-\boldsymbol{x}_t-\boldsymbol{f}_t(\boldsymbol{x}_t)\Delta t\|^2}{2\boldsymbol{g}_t^2\Delta t}+\log p(\boldsymbol{x}_t)-\log p(\boldsymbol{x}_{t+\Delta t})\right) \end{aligned}
p(xt∣xt+Δt)=p(xt+Δt)p(xt+Δt∣xt)p(xt)=p(xt+Δt∣xt)exp(logp(xt)−logp(xt+Δt))∝exp(−2gt2Δt∥xt+Δt−xt−ft(xt)Δt∥2+logp(xt)−logp(xt+Δt))
将
log
p
(
x
t
+
Δ
t
)
\log p(\boldsymbol{x}_{t+\Delta t})
logp(xt+Δt)进行泰勒展开:
log
p
(
x
t
+
Δ
t
)
≈
log
p
(
x
t
)
+
(
x
t
+
Δ
t
−
x
t
)
⋅
∇
x
t
log
p
(
x
t
)
+
Δ
t
∂
∂
t
l
o
g
p
(
x
t
)
\log p(\boldsymbol{x}_{t+\Delta t})\approx\log p(\boldsymbol{x}_t)+(\boldsymbol{x}_{t+\Delta t}-\boldsymbol{x}_t)\cdot\nabla_{\boldsymbol{x}_t}\log p(\boldsymbol{x}_t)+\Delta t\frac\partial{\partial t}\mathrm{log}p(\boldsymbol{x}_t)
logp(xt+Δt)≈logp(xt)+(xt+Δt−xt)⋅∇xtlogp(xt)+Δt∂t∂logp(xt)
再代回原式化简即可得到反向传播过程对应SDE为:
d
x
=
[
f
(
x
,
t
)
−
g
2
(
t
)
∇
x
log
p
t
(
x
)
]
d
t
+
g
(
t
)
d
w
ˉ
d{x}=[{f}({x},t)-g^2(t)\nabla_{x}\log p_t({x})]dt+g(t)d\bar{\mathbf{w}}
dx=[f(x,t)−g2(t)∇xlogpt(x)]dt+g(t)dwˉ
那么此时我们只需要得到 ∇ x log p t ( x ) \nabla_{x}\log p_t({x}) ∇xlogpt(x),就可以进行推理生成的反向传递过程了。
我们利用分数匹配模型去 s θ ( x ( t ) , t ) s_{\theta}({x}(t),t) sθ(x(t),t)拟合 ∇ x log p t ( x ) \nabla_{x}\log p_t({x}) ∇xlogpt(x),对 x t \boldsymbol{x}_t xt积分即可得到最终的损失函数:
L = E t ∼ U [ 0 , T ] [ λ ( t ) ∫ p t ( x ) ∥ s θ ( x , t ) − ∇ x log p t ( x ) ∥ 2 d x ] \mathcal{L}=\mathbb{E}_{t\sim U[0,T]}\left[\lambda(t)\int p_t(x)\|s_\theta(x,t)-\nabla_x\log p_t(x)\|^2dx\right] L=Et∼U[0,T][λ(t)∫pt(x)∥sθ(x,t)−∇xlogpt(x)∥2dx]
其中 U ( 0 , T ) \mathcal{U}(0, T) U(0,T)表示在时间间隔内的均匀分布 [ 0 , T ] [0, T] [0,T],而一般令 λ ( t ) ∝ 1 / E x ∼ p t ( x ) 2 [ ∇ x log p t ( x ∣ x 0 ) ] \lambda(t)\propto1/\mathbb{E}_{x\sim p_t(x)}^2[\nabla_x\log p_t(x\mid x_0)] λ(t)∝1/Ex∼pt(x)2[∇xlogpt(x∣x0)],只是起到调节Loss权重的作用,简单起见可以直接去掉它,这不会影响最优解的结果。
如果
x
T
∼
π
x_T \sim \pi
xT∼π,在理想情况下我们可以得到
p
θ
≈
p
0
p_\theta \approx p_0
pθ≈p0,而当
λ
(
t
)
=
g
2
(
t
)
\lambda(t) = g^2(t)
λ(t)=g2(t)时,F-散度的加权组合和
p
0
p_0
p0和
p
θ
p_\theta
pθ之间的KL散度之间有一个重要的联系:
KL
(
p
0
(
x
)
∥
p
θ
(
x
)
)
≤
T
2
E
t
∈
U
(
0
,
T
)
E
p
t
(
x
)
[
λ
(
t
)
∥
∇
x
log
p
t
(
x
)
−
s
θ
(
x
,
t
)
∥
2
2
]
+
KL
(
p
T
∥
π
)
\operatorname{KL}(p_0(\mathbf{x})\|p_\theta(\mathbf{x})) \leq \frac{T}{2}\mathbb{E}_{t \in \mathcal{U}(0, T)}\mathbb{E}_{p_t(\mathbf{x})}[\lambda(t) \| \nabla_\mathbf{x} \log p_t(\mathbf{x}) - \mathbf{s}_\theta(\mathbf{x}, t) \|_2^2] + \operatorname{KL}(p_T \mathrel\| \pi)
KL(p0(x)∥pθ(x))≤2TEt∈U(0,T)Ept(x)[λ(t)∥∇xlogpt(x)−sθ(x,t)∥22]+KL(pT∥π)
由等式可知,在此条件下最小化KL散度和最大化模型训练的似然之间具有等价性,可以基于此似然加权函数训练基于分数的生成模型,以实现较高的似然率。
具体实例
上述 d x = f ( x , t ) d t + g ( t ) d w d{x}={f}({x},t)dt+g(t)d\mathbf{w} dx=f(x,t)dt+g(t)dw给出了一般化的SDE的定义,实际上 f ( x , t ) {f}({x},t) f(x,t)和 g ( t ) g(t) g(t)的不同取值也会得到不同的生成模型。SMLD 和 DDPM 中使用的噪声扰动可以看作是两个不同 SDE 的离散化。
VE-SDE在 t → ∞ t \to \infty t→∞时总是产生方差爆炸的过程。相反,VP-SDE产生具有有界方差的过程。
VE-SDE(Variance Exploding SDE)
当使用总共N个噪声尺度时,SMLD的每个扰动核
p
σ
i
(
x
∣
x
0
)
p_{\sigma_{i}}\left({x}\mid{x}_{0}\right)
pσi(x∣x0)对应于
x
i
x_i
xi的分布,即可写成一下马尔可夫链形式:
x
i
=
x
i
−
1
+
σ
i
2
−
σ
i
−
1
2
z
i
−
1
,
i
=
1
,
⋯
,
N
\mathbf{x}_i=\mathbf{x}_{i-1}+\sqrt{\sigma_i^2-\sigma_{i-1}^2}\mathbf{z}_{i-1},\quad i=1,\cdots,N
xi=xi−1+σi2−σi−12zi−1,i=1,⋯,N
在上述表达中,我们假设初始随机变量
z
i
−
1
\mathbf{z}_{i-1}
zi−1符合均值为
0
\mathbf{0}
0、协方差矩阵为单位矩阵
I
\mathbf{I}
I的多元正态分布
N
(
0
,
I
)
\mathcal{N}(\mathbf{0},\mathbf{I})
N(0,I)。为了简化符号,引入了参数
σ
0
=
0
\sigma_0=0
σ0=0。在
N
→
∞
N\to\infty
N→∞的极限下,随机变量序列
{
σ
i
}
i
=
1
N
\{\sigma_i\}_{i=1}^N
{σi}i=1N变成了连续函数
σ
(
t
)
\sigma(t)
σ(t),
z
i
\mathbf{z}_i
zi变成了连续随机过程
z
(
t
)
\mathbf{z}(t)
z(t)。马尔可夫链
{
x
i
}
i
=
1
N
\{\mathbf{x}_i\}_{i=1}^N
{xi}i=1N也演变为了连续随机过程
{
x
(
t
)
}
t
=
0
1
\{\mathbf{x}(t)\}_{t=0}^1
{x(t)}t=01,其中我们使用连续时间变量
t
∈
[
0
,
1
]
t\in[0,1]
t∈[0,1]进行索引,而不再使用整数
i
i
i。由此可以将上式写为:
x ( t + Δ t ) = x ( t ) + σ 2 ( t + Δ t ) − σ 2 ( t ) z ( t ) ≈ x ( t ) + d [ σ 2 ( t ) ] d t Δ t z ( t ) , \mathbf{x}(t+\Delta t)=\mathbf{x}(t)+\sqrt{\sigma^2(t+\Delta t)-\sigma^2(t)}\mathbf{z}(t)\approx\mathbf{x}(t)+\sqrt{\frac{\mathrm{d}\left[\sigma^2(t)\right]}{\mathrm{d}t}\Delta t}\mathbf{z}(t), x(t+Δt)=x(t)+σ2(t+Δt)−σ2(t)z(t)≈x(t)+dtd[σ2(t)]Δtz(t),
当
Δ
t
≪
1
\Delta t\ll1
Δt≪1时,近似等式成立。在
Δ
t
→
0
\Delta t\rightarrow0
Δt→0的极限下,它收敛于以下SDE:
d
x
=
d
[
σ
2
(
t
)
]
d
t
d
w
\mathrm{d}\mathbf{x}=\sqrt{\frac{\mathrm{d}\left[\sigma^2(t)\right]}{\mathrm{d}t}}\mathrm{d}\mathbf{w}
dx=dtd[σ2(t)]dw
VP-SDE(Variance Preserving SDE)
同样对于 DDPM 的扰动核
{
p
α
i
(
x
∣
x
0
)
}
i
=
1
N
\text{}\{p_{\alpha_i}(\mathbf{x}\mid\mathbf{x}_0)\}_{i=1}^N\text{}
{pαi(x∣x0)}i=1N,离散马尔可夫链是
x
i
=
1
−
β
i
x
i
−
1
+
β
i
z
i
−
1
,
i
=
1
,
⋯
,
N
\mathbf{x}_i=\sqrt{1-\beta_i}\mathbf{x}_{i-1}+\sqrt{\beta_i}\mathbf{z}_{i-1},\quad i=1,\cdots,N
xi=1−βixi−1+βizi−1,i=1,⋯,N
同样简化时间变量到
t
∈
[
0
,
1
]
t\in[0,1]
t∈[0,1]的范围,上式可改写为:
x
i
=
1
−
β
ˉ
i
N
x
i
−
1
+
β
ˉ
i
N
z
i
−
1
,
i
=
1
,
⋯
,
N
.
\mathbf{x}_i=\sqrt{1-\frac{\bar{\beta}_i}{N}}\mathbf{x}_{i-1}+\sqrt{\frac{\bar{\beta}_i}{N}}\mathbf{z}_{i-1},\quad i=1,\cdots,N.
xi=1−Nβˉixi−1+Nβˉizi−1,i=1,⋯,N.
令
Δ
t
=
1
/
N
\Delta t = 1/N
Δt=1/N,上式可以改写为离散形式下的:
x
(
t
+
Δ
t
)
=
1
−
β
(
t
+
Δ
t
)
Δ
t
x
(
t
)
+
β
(
t
+
Δ
t
)
Δ
t
z
(
t
)
≈
x
(
t
)
−
1
2
β
(
t
+
Δ
t
)
Δ
t
x
(
t
)
+
β
(
t
+
Δ
t
)
Δ
t
z
(
t
)
≈
x
(
t
)
−
1
2
β
(
t
)
Δ
t
x
(
t
)
+
β
(
t
)
Δ
t
z
(
t
)
,
\begin{aligned} \mathbf{x}(t+\Delta t)& =\sqrt{1-\beta(t+\Delta t)\Delta t}\mathbf{x}(t)+\sqrt{\beta(t+\Delta t)\Delta t}\mathbf{z}(t) \\ &\approx\mathbf{x}(t)-\frac{1}{2}\beta(t+\Delta t)\Delta t\mathbf{x}(t)+\sqrt{\beta(t+\Delta t)\Delta t}\mathbf{z}(t) \\ &\approx\mathbf{x}(t)-\frac{1}{2}\beta(t)\Delta t\mathbf{x}(t)+\sqrt{\beta(t)\Delta t}\mathbf{z}(t), \end{aligned}
x(t+Δt)=1−β(t+Δt)Δtx(t)+β(t+Δt)Δtz(t)≈x(t)−21β(t+Δt)Δtx(t)+β(t+Δt)Δtz(t)≈x(t)−21β(t)Δtx(t)+β(t)Δtz(t),
当
Δ
t
≪
1
\Delta t\ll1
Δt≪1时,近似等式成立。在
Δ
t
→
0
\Delta t\rightarrow0
Δt→0的极限下,它收敛于以下SDE:
d
x
=
−
1
2
β
(
t
)
x
d
t
+
β
(
t
)
d
w
\mathrm{d}\mathbf{x}=-\frac12\beta(t)\mathbf{x}\mathrm{d}t+\sqrt{\beta(t)}\mathrm{d}\mathbf{w}
dx=−21β(t)xdt+β(t)dw
整合联系
DDPM与SMLD的联系
DDPM中我们希望找到一个 ϵ θ ( x t , t ) \epsilon_{\theta}(x_t,t) ϵθ(xt,t)去近似 x t − α ˉ t x 0 β ˉ t \frac{x_{t}-\bar{\alpha}_tx_{0}}{\bar{\beta}_t} βˉtxt−αˉtx0,而SMLD中则是希望找到一个 s θ ( x , t ) s_{\theta}({x},t) sθ(x,t)来估计 ∇ x log p ( x ) \nabla_{x}\log p({x}) ∇xlogp(x)
而在这两个模型中, x t \boldsymbol{x}_t xt的条件概率都可以写成 p ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , β ˉ t 2 I ) p(\boldsymbol{x}_t|\boldsymbol{x}_0)=\mathcal{N}(\boldsymbol{x}_t;\bar{\alpha}_t\boldsymbol{x}_0,\bar{\beta}_t^2\boldsymbol{I}) p(xt∣x0)=N(xt;αˉtx0,βˉt2I)(DDPM要求 α ˉ t 2 + β ˉ t 2 = 1 \bar{\alpha}_{t}^{2}+\bar{\beta}_{t}^{2}=1 αˉt2+βˉt2=1;而SMLD要求 α ˉ t = 1 \bar{\alpha}_{t}=1 αˉt=1)
于是可以得到 ∇ x t log p ( x t ∣ x 0 ) = − x t − α ˉ t x 0 β ˉ t 2 = − ε β ˉ t \nabla_{\boldsymbol{x}_t}\log p(\boldsymbol{x}_t|\boldsymbol{x}_0)=-\frac{\boldsymbol{x}_t-\bar{\alpha}_t\boldsymbol{x}_0}{\bar{\beta}_t^2}=-\frac\varepsilon{\bar{\beta}_t} ∇xtlogp(xt∣x0)=−βˉt2xt−αˉtx0=−βˉtε,令 s θ ( x t , t ) = − ϵ θ ( x t , t ) β ˉ t s_{\theta}(x_{t},t)=-\frac{\epsilon_{\theta}(x_{t},t)}{\bar{\beta}_{t}} sθ(xt,t)=−βˉtϵθ(xt,t),此时SMLD的损失函数可以写为:
1 β ˉ t 2 E x 0 ∼ p ~ ( x 0 ) , ε ∼ N ( 0 , I ) [ ∥ ε θ ( α ˉ t x 0 + β ˉ t ε , t ) − ε ∥ 2 ] \frac1{\bar{\beta}_t^2}\mathbb{E}_{\boldsymbol{x}_0\sim\tilde{p}(\boldsymbol{x}_0),\boldsymbol{\varepsilon}\sim\mathcal{N}(\mathbf{0},\boldsymbol{I})}\left[\left\|\boldsymbol{\varepsilon}_{\theta}(\bar{\alpha}_t\boldsymbol{x}_0+\bar{\beta}_t\boldsymbol{\varepsilon},t)-\boldsymbol{\varepsilon}\right\|^2\right] βˉt21Ex0∼p~(x0),ε∼N(0,I)[ εθ(αˉtx0+βˉtε,t)−ε 2]
忽略系数后就是DDPM的损失函数,这说明二者实质上是相通的,也即VE和VP-SDE是相通的。由此即将DDPM、SMLD和SDE联系了起来。
SDE与ODE的演变
从数学上也可以证明存在不同方差的前向过程,它们产生的边缘分布
p
(
x
t
)
p({x_t})
p(xt)是一样的,从而可以推出对于所有扩散过程,都存在一个相应的确定性过程,其轨迹与SDE具有相同的边缘概率密度,
σ
t
=
0
\sigma_{t}=0
σt=0此时SDE退化为常微分方程ODE:
d
x
=
[
f
(
x
,
t
)
−
1
2
g
(
t
)
2
∇
x
log
p
t
(
x
)
]
d
t
\mathrm{d}\mathbf{x}=\Big[\mathbf{f}(\mathbf{x},t)-\frac{1}{2}g(t)^{2}\nabla_{\mathbf{x}}\log p_{t}(\mathbf{x})\Big]\mathrm{d}t
dx=[f(x,t)−21g(t)2∇xlogpt(x)]dt
这个ODE称为概率流ODE(Probability flow ODE),此时扩散过程是确定过程的变换,因而可以基于这个式子做精确的似然计算、在隐空间编码并编辑等任务。同时,对于反向传播 x T x_T xT到 x 0 x_0 x0的过程也可以采用一些ODE算法去加速。
总结
扩散模型通过定义一个不断加噪声的前向过程来将图片逐步变为高斯噪声,再通过定义了一个逆向过程将高斯噪声逐步去噪变为清晰图片以得到采样。
在采样过程中,根据是否添加额外的噪声,可以将扩散模型分为两类:
- 一类是扩散随机微分方程模型(Diffusion SDE) ,其反向过程可以建模为 d x = [ f ( x , t ) − g 2 ( t ) s θ ( x ( t ) , t ) ] d t + g ( t ) d w ˉ d{x}=[{f}({x},t)-g^2(t)s_{\theta}({x}(t),t)]dt+g(t)d\bar{\mathbf{w}} dx=[f(x,t)−g2(t)sθ(x(t),t)]dt+g(t)dwˉ
- 另一类是扩散常微分方程(Diffusion ODE),其反向过程可以建模为 d x = [ f ( x , t ) − 1 2 g ( t ) 2 s θ ( x ( t ) , t ) ] d t {d}{x}=[{f}({x},t)-\frac{1}{2}g(t)^{2}s_{\theta}({x}(t),t)]\mathrm{d}t dx=[f(x,t)−21g(t)2sθ(x(t),t)]dt