Denoising Diffusion Probabilistic Models——Background
公式1:
扩散模型公式1详解
定义
扩散模型是一种潜变量模型,其形式为 p θ ( x 0 ) : = ∫ p θ ( x 0 : T ) d x 1 : T p_\theta(\mathbf{x}_0) := \int p_\theta(\mathbf{x}_{0:T}) d\mathbf{x}_{1:T} pθ(x0):=∫pθ(x0:T)dx1:T,其中 x 1 , … , x T \mathbf{x}_1, \ldots, \mathbf{x}_T x1,…,xT是与数据 x 0 ∼ q ( x 0 ) \mathbf{x}_0 \sim q(\mathbf{x}_0) x0∼q(x0)具有相同维度的潜变量。
逆过程
联合分布 p θ ( x 0 : T ) p_\theta(\mathbf{x}_{0:T}) pθ(x0:T)被称为逆过程,定义为一个从 p ( x T ) = N ( x T ; 0 , I ) p(\mathbf{x}_T) = \mathcal{N}(\mathbf{x}_T; 0, \mathbf{I}) p(xT)=N(xT;0,I)开始的马尔可夫链,其中每一步是通过学习到的高斯转移来实现的。
数学表达
p
θ
(
x
0
:
T
)
:
=
p
(
x
T
)
∏
t
=
1
T
p
θ
(
x
t
−
1
∣
x
t
)
p_\theta(\mathbf{x}_{0:T}) := p(\mathbf{x}_T) \prod_{t=1}^T p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)
pθ(x0:T):=p(xT)∏t=1Tpθ(xt−1∣xt)
p
θ
(
x
t
−
1
∣
x
t
)
:
=
N
(
x
t
−
1
;
μ
θ
(
x
t
,
t
)
,
Σ
θ
(
x
t
,
t
)
)
p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t) := \mathcal{N}(\mathbf{x}_{t-1}; \mu_\theta(\mathbf{x}_t, t), \Sigma_\theta(\mathbf{x}_t, t))
pθ(xt−1∣xt):=N(xt−1;μθ(xt,t),Σθ(xt,t))
说明
- 潜变量:模型通过引入一系列与数据同维度的潜变量来描述数据生成过程。
- 逆过程:逆过程是一种从噪声(标准正态分布)开始逐步去噪的过程,使用马尔可夫链模型进行转移。
- 高斯转移:每一步的转移都是高斯分布,其均值和协方差由参数化函数 μ θ \mu_\theta μθ和 Σ θ \Sigma_\theta Σθ决定。
应用
扩散模型广泛应用于图像生成、自然语言处理等领域,通过反向扩散过程从噪声中生成高质量的数据样本。
公式2:
扩散模型中的前向过程
定义
扩散模型(Diffusion Models)的一个显著特点是它们的近似后验分布 q ( x 1 : T ∣ x 0 ) q(\mathbf{x}_{1:T}|\mathbf{x}_0) q(x1:T∣x0)(称为前向过程或扩散过程)被固定为一个马尔可夫链,这个链根据方差计划 β 1 , … , β T \beta_1, \ldots, \beta_T β1,…,βT逐渐向数据中添加高斯噪声。
公式表达
q
(
x
1
:
T
∣
x
0
)
:
=
∏
t
=
1
T
q
(
x
t
∣
x
t
−
1
)
q(\mathbf{x}_{1:T}|\mathbf{x}_0) := \prod_{t=1}^T q(\mathbf{x}_t|\mathbf{x}_{t-1})
q(x1:T∣x0):=∏t=1Tq(xt∣xt−1)
q
(
x
t
∣
x
t
−
1
)
:
=
N
(
x
t
;
1
−
β
t
x
t
−
1
,
β
t
I
)
q(\mathbf{x}_t|\mathbf{x}_{t-1}) := \mathcal{N}(\mathbf{x}_t; \sqrt{1 - \beta_t}\mathbf{x}_{t-1}, \beta_t\mathbf{I})
q(xt∣xt−1):=N(xt;1−βtxt−1,βtI)
公式 q ( x t ∣ x t − 1 ) : = N ( x t ; 1 − β t x t − 1 , β t I ) q(\mathbf{x}_t | \mathbf{x}_{t-1}) := \mathcal{N}(\mathbf{x}_t; \sqrt{1 - \beta_t} \mathbf{x}_{t-1}, \beta_t \mathbf{I}) q(xt∣xt−1):=N(xt;1−βtxt−1,βtI)解释
这个公式描述了扩散模型中的前向过程(或扩散过程),用于逐步向数据添加高斯噪声。下面是详细解释:
-
高斯分布:
- N ( x t ; μ , Σ ) \mathcal{N}(\mathbf{x}_t; \mu, \Sigma) N(xt;μ,Σ)表示一个均值为 μ \mu μ,协方差为 Σ \Sigma Σ的高斯分布。 -
公式中的各项:
- x t \mathbf{x}_t xt:第 t t t时刻的潜变量。
- x t − 1 \mathbf{x}_{t-1} xt−1:第 t − 1 t-1 t−1时刻的潜变量。
- 1 − β t x t − 1 \sqrt{1 - \beta_t} \mathbf{x}_{t-1} 1−βtxt−1:均值,表示上一时刻的状态经过缩放后作为当前时刻状态的基础。
- β t I \beta_t \mathbf{I} βtI:协方差矩阵,表示当前时刻添加的噪声的强度,其中 I \mathbf{I} I是单位矩阵。 -
噪声添加:
- 在每个时间步 t t t,状态 x t − 1 \mathbf{x}_{t-1} xt−1被缩放(通过乘以 1 − β t \sqrt{1 - \beta_t} 1−βt)后,加上方差为 β t \beta_t βt的高斯噪声,生成新的状态 x t \mathbf{x}_t xt。
- 这意味着每一步都在前一步的基础上添加一定量的噪声,使得数据逐步从原始状态变为完全噪声。
前向过程解释
这个公式定义了前向过程的单步转移概率,它是一个高斯分布:
q ( x t ∣ x t − 1 ) : = N ( x t ; 1 − β t x t − 1 , β t I ) q(\mathbf{x}_t | \mathbf{x}_{t-1}) := \mathcal{N}(\mathbf{x}_t; \sqrt{1 - \beta_t} \mathbf{x}_{t-1}, \beta_t \mathbf{I}) q(xt∣xt−1):=N(xt;1−βtxt−1,βtI)
-
均值 1 − β t x t − 1 \sqrt{1 - \beta_t} \mathbf{x}_{t-1} 1−βtxt−1:
- 通过缩放 x t − 1 \mathbf{x}_{t-1} xt−1得到,反映了从上一时刻到当前时刻的状态变化。
-
协方差 β t I \beta_t \mathbf{I} βtI:
- 噪声的强度,随着时间 t t t的变化而变化。
解释
- 近似后验分布
q
(
x
1
:
T
∣
x
0
)
q(\mathbf{x}_{1:T}|\mathbf{x}_0)
q(x1:T∣x0):
- 表示从初始数据 x 0 \mathbf{x}_0 x0到噪声数据 x T \mathbf{x}_T xT的转移过程。
- 马尔可夫链:
- 该过程由一系列依次相连的高斯分布组成,每一步都根据上一状态生成下一状态。
- 高斯噪声添加:
- 在每一步中,根据方差 β t \beta_t βt添加噪声,使得数据逐步被扰乱。
特点
扩散过程的设计使得模型能够逐步将数据转化为噪声,同时在逆向过程中通过去噪逐步生成新的数据样本。通过这种方式,扩散模型能够生成高质量的合成数据。
公式3:
训练过程中的变分下界优化
在扩散模型的训练过程中,通过优化负对数似然(negative log likelihood, NLL)的变分下界来实现模型训练。具体公式如下:
E [ − log p θ ( x 0 ) ] ≤ E q [ − log p θ ( x 0 : T ) q ( x 1 : T ∣ x 0 ) ] \mathbb{E}[-\log p_\theta(\mathbf{x}_0)] \leq \mathbb{E}_q \left[ -\log \frac{p_\theta(\mathbf{x}_{0:T})}{q(\mathbf{x}_{1:T}|\mathbf{x}_0)} \right] E[−logpθ(x0)]≤Eq[−logq(x1:T∣x0)pθ(x0:T)]
这个公式可以展开为:
E q [ − log p ( x T ) − ∑ t ≥ 1 log p θ ( x t − 1 ∣ x t ) q ( x t ∣ x t − 1 ) ] = : L \mathbb{E}_q \left[ - \log p(\mathbf{x}_T) - \sum_{t \geq 1} \log \frac{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}{q(\mathbf{x}_t|\mathbf{x}_{t-1})} \right] =: \mathcal{L} Eq[−logp(xT)−∑t≥1logq(xt∣xt−1)pθ(xt−1∣xt)]=:L
详细解释
-
变分下界:
- 目标是最小化负对数似然的变分下界,以逼近真实的对数似然。
-
期望:
- E q \mathbb{E}_q Eq表示对前向过程 q ( x 1 : T ∣ x 0 ) q(\mathbf{x}_{1:T}|\mathbf{x}_0) q(x1:T∣x0)的期望。 -
公式展开:
- − log p ( x T ) -\log p(\mathbf{x}_T) −logp(xT):表示终止状态的对数概率,通常为标准正态分布的对数概率。
- ∑ t ≥ 1 log p θ ( x t − 1 ∣ x t ) q ( x t ∣ x t − 1 ) \sum_{t \geq 1} \log \frac{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}{q(\mathbf{x}_t|\mathbf{x}_{t-1})} ∑t≥1logq(xt∣xt−1)pθ(xt−1∣xt):表示每一步中真实后验分布和前向过程的对数概率比值的总和。
损失函数 L \mathcal{L} L
这个损失函数 L \mathcal{L} L表示了我们需要最小化的目标,以使得模型能够更好地拟合数据。在实际训练中,通过梯度下降方法对参数 θ \theta θ进行优化,以最小化这个损失函数。
公式4:
前向过程和逆向过程的方差
可学习的方差 β t \beta_t βt
- 前向过程中的方差 β t \beta_t βt可以通过重参数化技术进行学习,也可以作为超参数保持不变。
逆向过程的高斯条件
- 逆向过程中的高斯条件 p θ ( x t − 1 ∣ x t ) p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t) pθ(xt−1∣xt)的选择确保了其表达能力,特别是当 β t \beta_t βt很小时,前向过程和逆向过程具有相同的函数形式。
前向过程的一个显著特性
- 前向过程允许在任意时间步 t t t采样 x t \mathbf{x}_t xt,并且可以通过以下闭式表达式进行计算:
闭式表达式
使用记号 α t : = 1 − β t \alpha_t := 1 - \beta_t αt:=1−βt和 α ˉ t : = ∏ s = 1 t α s \bar{\alpha}_t := \prod_{s=1}^t \alpha_s αˉt:=∏s=1tαs,我们有:
q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) q(\mathbf{x}_t|\mathbf{x}_0) = \mathcal{N}(\mathbf{x}_t; \sqrt{\bar{\alpha}_t} \mathbf{x}_0, (1 - \bar{\alpha}_t) \mathbf{I}) q(xt∣x0)=N(xt;αˉtx0,(1−αˉt)I)
详细解释
-
前向过程的定义:
- 前向过程将高斯噪声逐步添加到数据中,定义为 q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(\mathbf{x}_t|\mathbf{x}_{t-1}) = \mathcal{N}(\mathbf{x}_t; \sqrt{1 - \beta_t} \mathbf{x}_{t-1}, \beta_t \mathbf{I}) q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)。
-
重新参数化:
- 方差 β t \beta_t βt可以通过重参数化学习,使模型能够自动调整噪声强度。
-
闭式解的意义:
- 闭式解允许我们在任意时间步 t t t直接从初始数据 x 0 \mathbf{x}_0 x0生成 x t \mathbf{x}_t xt,这大大简化了采样过程和计算复杂度。
-
高斯条件的选择:
- 逆向过程使用的高斯条件 p θ ( x t − 1 ∣ x t ) p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t) pθ(xt−1∣xt)确保了当 β t \beta_t βt很小时,前向和逆向过程的对称性,从而提高了模型的稳定性和表达能力。
总结
前向过程通过逐步添加噪声将数据转换为噪声,而逆向过程则通过去噪将噪声转换回数据。这种对称性和闭式解的存在使得扩散模型在训练和采样时都非常高效。
公式5:
优化扩散模型的训练过程
在扩散模型的训练过程中,通过随机梯度下降法优化损失函数 L \mathcal{L} L的随机项可以实现高效训练。进一步的改进可以通过方差减少方法来实现,将损失函数 L \mathcal{L} L重新写成以下形式:
变分下界损失函数
L = E q [ D K L ( q ( x T ∣ x 0 ) ∥ p ( x T ) ) + ∑ t > 1 D K L ( q ( x t − 1 ∣ x t , x 0 ) ∥ p θ ( x t − 1 ∣ x t ) ) − log p θ ( x 0 ∣ x 1 ) ] \mathcal{L} = \mathbb{E}_q \left[ D_{KL}(q(\mathbf{x}_T|\mathbf{x}_0) \| p(\mathbf{x}_T)) + \sum_{t>1} D_{KL}(q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) \| p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)) - \log p_\theta(\mathbf{x}_0|\mathbf{x}_1) \right] L=Eq[DKL(q(xT∣x0)∥p(xT))+∑t>1DKL(q(xt−1∣xt,x0)∥pθ(xt−1∣xt))−logpθ(x0∣x1)]
详细解释
-
KL散度项:
- D K L ( q ( x T ∣ x 0 ) ∥ p ( x T ) ) D_{KL}(q(\mathbf{x}_T|\mathbf{x}_0) \| p(\mathbf{x}_T)) DKL(q(xT∣x0)∥p(xT)):表示终止状态 x T \mathbf{x}_T xT的真实后验分布和模型预测分布之间的KL散度。
- ∑ t > 1 D K L ( q ( x t − 1 ∣ x t , x 0 ) ∥ p θ ( x t − 1 ∣ x t ) ) \sum_{t>1} D_{KL}(q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) \| p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)) ∑t>1DKL(q(xt−1∣xt,x0)∥pθ(xt−1∣xt)):表示每一步的真实后验分布和模型预测分布之间的KL散度总和。 -
对数似然项:
- − log p θ ( x 0 ∣ x 1 ) - \log p_\theta(\mathbf{x}_0|\mathbf{x}_1) −logpθ(x0∣x1):表示从第一步预测生成初始数据 x 0 \mathbf{x}_0 x0的对数似然。
总结
通过优化上述损失函数,可以有效训练扩散模型,使其在逐步去噪的过程中生成高质量的数据样本。方差减少技术有助于提高训练的稳定性和效率。
公式6、7:
优化扩散模型训练的具体方法
在优化过程中,使用KL散度直接比较 p θ ( x t − 1 ∣ x t ) p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t) pθ(xt−1∣xt)与前向过程的后验分布,后者在条件 x 0 \mathbf{x}_0 x0下是可处理的:
q ( x t − 1 ∣ x t , x 0 ) = N ( x t − 1 ; μ ~ t ( x t , x 0 ) , β ~ t I ) q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) = \mathcal{N}(\mathbf{x}_{t-1}; \tilde{\mu}_t(\mathbf{x}_t, \mathbf{x}_0), \tilde{\beta}_t \mathbf{I}) q(xt−1∣xt,x0)=N(xt−1;μ~t(xt,x0),β~tI)
公式解释
- 均值和方差:
- μ ~ t ( x t , x 0 ) \tilde{\mu}_t(\mathbf{x}_t, \mathbf{x}_0) μ~t(xt,x0)和 β ~ t \tilde{\beta}_t β~t的定义:
μ ~ t ( x t , x 0 ) : = α ˉ t − 1 β t 1 − α ˉ t x 0 + α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t \tilde{\mu}_t(\mathbf{x}_t, \mathbf{x}_0) := \frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1 - \bar{\alpha}_t} \mathbf{x}_0 + \frac{\sqrt{\alpha_t}(1 - \bar{\alpha}_{t-1})}{1 - \bar{\alpha}_t} \mathbf{x}_t μ~t(xt,x0):=1−αˉtαˉt−1βtx0+1−αˉtαt(1−αˉt−1)xt
β ~ t : = 1 − α ˉ t − 1 1 − α ˉ t β t \tilde{\beta}_t := \frac{1 - \bar{\alpha}_{t-1}}{1 - \bar{\alpha}_t} \beta_t β~t:=1−αˉt1−αˉt−1βt
计算KL散度
由于 q ( x t − 1 ∣ x t , x 0 ) q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) q(xt−1∣xt,x0)和 p θ ( x t − 1 ∣ x t ) p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t) pθ(xt−1∣xt)都是高斯分布,因此可以用Rao-Blackwellization方法以闭式表达计算KL散度,而不需要高方差的蒙特卡洛估计。
总结
这种方法使得训练过程中的KL散度计算更加高效和稳定,提高了模型训练的效率和效果。