Diffusion 扩散模型

Diffusion 扩散模型

    • 对比 GAN 和 VAE
    • 扩散原理
      • 扩散过程:加噪声,均匀分布到整个空间
        • 重参数:避免梯度消失、爆炸
      • 复原过程:去噪声,恢复原始图像
      • 损失函数:交叉熵损失,变分推断
    • 训练流程

 


对比 GAN 和 VAE

原先,图像生成领域最常见生成模型有 GAN 和 VAE。

后来,Diffusion 扩散模型也是生成模型,且在图像生成上,优于 GAN 和 VAE。

VAE 的一个主要缺点是生成的样本常常会模糊、失真,这是因为它在生成样本时可能存在一些不完美的地方。

GAN 因为需要同时训练生成器和判别器,并且很难找到一个平衡点。生成器有时候会通过一些“捷径”欺骗判别器,导致生成的效果不佳。此外,GAN生成的样本多样性有限,只适用于特定的判别器。

作者提出了一种改进的方法,即扩散模型(Diffusion Model)。

扩散模型在生成样本时采用了一种不同的方式,它通过在生成过程中逐渐扩散噪声来生成样本。

这种方法使得生成的样本更加清晰、真实,并且能够保持更好的多样性。

扩散模型的训练过程也更加稳定,不需要像GAN那样同时训练生成器和判别器。

相反,扩散模型只需要在生成过程中进行逐步的扩散操作,使生成的样本逐渐接近真实分布。

这种训练方式可以避免生成器通过“捷径”欺骗判别器的问题,提高了生成效果。

通过逐步扩散噪声的方式生成样本,提高了生成样本的质量和多样性,并且具有更稳定的训练过程

扩散原理

扩散模型的目的是什么?

  • 学习从纯噪声生成图片的方法。

扩散模型是怎么做的?

  • 训练一个 U-Net,接受一系列加了噪声的图片,学习预测所加的噪声。
  • 分为两个部分:前向过程(扩散过程)和反向过程(复原过程)。

前向过程在干啥?

  • 对于训练集中的每张图片,扩散模型可以生成一系列噪声程度不同的加噪图片。
  • 在训练时,这些不同程度的噪声图片以及生成它们所用的噪声被视为实际的训练样本,用于优化扩散模型的参数。
  • 前向过程如下图,墨水滴入一杯水中,最终会 均匀的分布 至整个水杯里,将噪声均匀分布到整个空间,变成纯噪声。
  • 如果有 2 个物质混合在一起,分别是高密度的和低密度的,那么高密度的物质就会扩散到低密度,比如喷了香水,随着时间的扩散,最后香水就会充斥着整个房间,最后趋向于平衡。

反向过程在干啥?

  • 当扩散模型训练好之后,我们可以使用该模型来进行采样和生成图片。
  • 通过输入一段随机噪声,扩散模型可以生成对应的图像,这些生成的图像可以具有高质量和逼真度。

扩散模型的创新点是什么?

  • 先假设扩散、复原过程都符合高斯分布,沿着时间轴,均值和方差的迭代公式。
  • 之所以假设成高斯分布是正确的,因为ta可以作为一种近似描述扩散过程的分布,并且符合中心极限定理和大数定律的性质。
  • 之所以假设成高斯分布而不是其他分布,是因为ta是简单的分布,运算量小,使得扩散速度运算速度快。

扩散过程:加噪声,均匀分布到整个空间

前向过程:实现均匀的分布,直到稳定状态

假设真实图像 x 0 x_{0} x0 的分布是 q ( x 0 ) q(x_{0}) q(x0)

前向传播过程,是把真实图像的分布,经过 T T T 次不断添加高斯噪声,变成纯噪声。

扩散过程公式 q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(x_t|x_{t-1})=\mathcal{N}(x_t;\sqrt{1-\beta_t}x_{t-1},\beta_t\mathbf{I}) q(xtxt1)=N(xt;1βt xt1,βtI)

  • q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1):每一步向图片添加噪声的过程,现在 x t x_{t} xt 与过去有关(上一个状态 x t − 1 x_{t-1} xt1),和过去的过去无关。每一个噪声都是在前一时刻增加噪声而来的。
  • N N N 就是不断添加高斯噪声
  • β t \beta_t βt:控制每个时间步的状态转移的速度,是一个递减的序列,随着时间的推移,扩散过程的速度逐渐减慢。通过调整 β t \beta_t βt的值,我们可以控制生成样本的清晰度和细节。
重参数:避免梯度消失、爆炸

上述公式是一步步迭代过来的,求 x t x_{t} xt 需要用 x 0 x_{0} x0 x t − 1 x_{t-1} xt1,链条太长了。

这很容易导致梯度爆炸、消失。

而且有一个致命的缺陷,就是生成模型很慢。

因为每一次恢复都只能一步一步的向前恢复,而不像GAN,GAN只要训练好了这个模型,只要给他一个噪声,他就能恢复出图像,做一次的模型 forward 就够了。

可引入重参数化技巧解决这俩个问题。

重参数化:把随机变量变成,确定性的函数和独立性噪声项的和。

x t x_{t} xt 的分布转化为 μ μ μ ε ε ε 的分布,变成线性组合: x t = μ + ε x_{t}=μ+ε xt=μ+ε

  • μ 是一个确定性的项,是高斯分布的均值
  • ε 是一个独立且随机的噪声项

这样一来,我们可以通过估计 μ 和 ε 的分布参数来间接地推断出 X t X_{t} Xt 的分布参数。

α t = 1 − β t \alpha_t=1-\beta_t αt=1βt a ‾ t = 1 t ∑ i = 1 t a i \overline{a}_{t}=\frac{1}{t}\sum_{i=1}^ta_{i} at=t1i=1tai

  • x t = α t x t − 1 + 1 − α t ϵ t − 1 x_t=\sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}\epsilon_{t-1} xt=αt xt1+1αt ϵt1
  • x t = α t x 0 + 1 − a ‾ t ϵ x_t=\sqrt{\alpha_t}x_{0}+\sqrt{1-\overline{a}_t}\epsilon xt=αt x0+1at ϵ

因为每一步添加的噪声都独立,且服从正态分布,可得出:

  • 扩散公式 q ( x t ∣ x 0 ) = N ( x t ; a ‾ t x 0 , ( 1 − a ‾ t ) I ) q(x_t|x_{0})=\mathcal{N}(x_t;\sqrt{\overline{a}_t}x_{0},(1-\overline{a}_t)\mathbf{I}) q(xtx0)=N(xt;at x0,(1at)I)

复原过程:去噪声,恢复原始图像

复原过程:

复原公式: 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};\boldsymbol{\mu}_\theta(\mathbf{x}_t,t),\boldsymbol{\Sigma}_\theta(\mathbf{x}_t,t)) pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t))

已知 x t x_{t} xt 推导 x t − 1 x_{t-1} xt1 的过程中,需要得到在 t t t 时刻的噪声 μ θ 、 Σ θ \boldsymbol{\mu}_\theta、\boldsymbol{\Sigma}_\theta μθΣθ,但这些目前都不知道。

如果给定了某个训练集输入 x 0 x_{0} x0,多了一个限定条件后,该分布是可以用贝叶斯公式计算的。

而训练的时候已知真实图像 x 0 x_{0} x0,可先求一个后验扩散条件概率,把反向过程全部变回前向过程:

q ( x t − 1 ∣ x t , x 0 ) = N ( x t − 1 ; μ ~ ( x ~ t , x 0 ) , β ~ t I ) \begin{gathered}q(x_{t-1}|x_t,x_0)=\mathcal{N}(x_{t-1};\tilde{\mu}(\tilde{x}_t,x_0),\tilde{\beta}_t\mathbf{I})\end{gathered} q(xt1xt,x0)=N(xt1;μ~(x~t,x0),β~tI)

  • 分布的均值 μ ~ = 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ t ) 分布的均值 \tilde{\mu}=\frac1{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\mathbf{\epsilon}_t\right) 分布的均值μ~=αt 1(xt1αˉt 1αtϵt)
  • 分布的方差 β ~ t = 1 − α ˉ t − 1 1 − α ˉ t ⋅ β t 分布的方差\tilde{\beta}_t=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\cdot\beta_t 分布的方差β~t=1αˉt1αˉt1βt

损失函数:交叉熵损失,变分推断

只要定义好损失函数,就能学习这些均值、方差的参数了。

因为 β ~ t \tilde{\beta}_t β~t 是一个常数,和输入没有关系,训练去噪网络只需要拟合 T T T 个均值 μ ~ \tilde{\mu} μ~ 即可。

训练神经网络只差最后的问题了:该怎么设置训练的损失函数?

加噪声和去噪声操作都是正态分布,网络的训练目标应该是让每对正态分布更加接近。

那怎么用损失函数描述两个分布尽可能接近呢?

最直观的想法,肯定是让两个正态分布的均值尽可能接近,方差尽可能接近。

因为方差是常量,只用让均值尽可能接近就可以了。

损失函数: L = E q ( x 0 ) [ − log ⁡ p θ ( x 0 ) ] \mathcal{L}=\mathbb{E}_{q(x_0)}[-\log p_\theta(x_0)] L=Eq(x0)[logpθ(x0)]

  • p θ ( x 0 ) p_\theta(x_{0}) pθ(x0) 是原图分布, θ \theta θ 是权重参数
  • q ( x 0 ) q(x_0) q(x0) 是复原的原图分布, E \mathbb{E} E 是期望
  • L \mathcal{L} L 是最小化交叉熵,相当于对比原件、复印件,使得差异越小越好

原图分布 p θ ( x 0 ) p_\theta(x_0) pθ(x0) 是不知道的,可以用变分推断:

  • 首先找出对数的上界: − log ⁡ p θ ( x 0 ) ≤ − log ⁡ p θ ( x 0 ) + D K L ( q ( x 1 : T ∣ x 0 ) ∣ ∣ p θ ( x 1 : T ∣ x 0 ) ) \begin{aligned} -\log p_\theta(x_0)& \leq-\log p_\theta(x_0)+D_{KL}(q(x_{1:T}|x_0)||p_\theta(x_{1:T}|x_0)) \end{aligned} logpθ(x0)logpθ(x0)+DKL(q(x1:Tx0)∣∣pθ(x1:Tx0))

最小化上界,就可以等价替换 − log ⁡ p θ ( x 0 ) -\log p_\theta(x_0) logpθ(x0) 了:

  • − log ⁡ p θ ( x 0 ) ≤ − log ⁡ p θ ( x 0 ) + D K L ( q ( x 1 : T ∣ x 0 ) ∣ ∣ p θ ( x 1 : T ∣ x 0 ) ) -\log p_\theta(x_0) \leq-\log p_\theta(x_0)+D_{KL}(q(x_{1:T}|x_0)||p_\theta(x_{1:T}|x_0)) logpθ(x0)logpθ(x0)+DKL(q(x1:Tx0)∣∣pθ(x1:Tx0))

使用贝叶斯公式,展开 KL 散度:

  • − log ⁡ p θ ( x 0 ) ≤ − log ⁡ p θ ( x 0 ) + E q ( x 1 : T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) / p θ ( x 0 ) ] ; w h e r e p θ ( x 1 : T ∣ x 0 ) -\log p_\theta(x_0) \leq-\log p_\theta(x_0)+\mathbb{E}_{q(x_{1:T}|x_{0})}\left[\log\frac{q(x_{1:T}|x_{0})}{p_{\theta}(x_{0:T})/p_{\theta}(x_{0})}\right];\quad\mathrm{where}\quad p_{\theta}(x_{1:T}|x_{0}) logpθ(x0)logpθ(x0)+Eq(x1:Tx0)[logpθ(x0:T)/pθ(x0)q(x1:Tx0)];wherepθ(x1:Tx0)

使用 log 运算,把乘法变成加法,把除法变成减法:

  • − log ⁡ p θ ( x 0 ) ≤ − log ⁡ p θ ( x 0 ) + E q ( x 1 , T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) + log ⁡ p θ ( x 0 ) ⏟ 与 q 无关 ] -\log p_\theta(x_0) \leq-\log p_\theta(x_0)+\mathbb{E}_{q(x_{1,T}|x_0)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}+\underbrace{\log p_\theta(x_0)}_{\text{与}q\text{无关}} \right] logpθ(x0)logpθ(x0)+Eq(x1,Tx0) logpθ(x0:T)q(x1:Tx0)+q无关 logpθ(x0)

因为与 q(预测分布) 无关,所以 log ⁡ p θ ( x 0 ) ⏟ 与 q 无关 \underbrace{\log p_\theta(x_0)}_{\text{与}q\text{无关}} q无关 logpθ(x0) 不受 E q \mathbb{E}_q Eq 影响,可以移项到括号外,和括号外的 − log ⁡ p θ ( x 0 ) -\log p_\theta(x_0) logpθ(x0) 抵消:

  • − log ⁡ p θ ( x 0 ) ≤ E q ( x 1 : T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] -\log p_\theta(x_0) \leq\mathbb{E}_{q(x_{1:T}|x_0)}\left[\log\frac{q(x_{1:T}|x_0)}{p_{\theta}(x_{0:T})}\right] logpθ(x0)Eq(x1:Tx0)[logpθ(x0:T)q(x1:Tx0)]

对不等式左右,求 E q ( x 0 ) \mathbb{E}_{q}(x_{0}) Eq(x0) 的期望:

  • E q ( x 0 ) [ − log ⁡ p θ ( x 0 ) ] ≤ E q ( x 0 ) ( E q ( x 1 : T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] ) \begin{aligned}\mathbb{E}_{q(x_0)}[-\log p_\theta(x_0)]&\leq\mathbb{E}_{q(x_0)}\left(\mathbb{E}_{q(x_1:T\mid x_0)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right]\right)\end{aligned} Eq(x0)[logpθ(x0)]Eq(x0)(Eq(x1:Tx0)[logpθ(x0:T)q(x1:Tx0)])

 


假设条件概率分布 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:Tx0) 可以分解为 q ( x 1 ∣ x 0 ) q ( x 2 ∣ x 0 ) . . . q ( x T ∣ x 0 ) q(x_1|x_0)q(x_2|x_0)...q(x_T|x_0) q(x1x0)q(x2x0)...q(xTx0)

将原始表达式展开:

  • E q ( x 1 ∣ x 0 ) q ( x 2 ∣ x 0 ) . . . q ( x T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] \mathbb{E}{q(x_1|x_0)q(x_2|x_0)...q(x_T|x_0)}[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}] Eq(x1x0)q(x2x0)...q(xTx0)[logpθ(x0:T)q(x1:Tx0)]

根据条件独立性假设,可以将每个条件概率 q ( x i ∣ x 0 ) q(x_i|x_0) q(xix0) 的期望移到外层,得到:

  • E q ( x 1 ∣ x 0 ) [ E q ( x 2 ∣ x 0 ) [ … E q ( x T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] … ] ] \mathbb{E}_{q(x_1|x_0)}\left[\mathbb{E}_{q(x_2|x_0)}\left[\dots \mathbb{E}_{q(x_T|x_0)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right]\dots\right]\right] Eq(x1x0)[Eq(x2x0)[Eq(xTx0)[logpθ(x0:T)q(x1:Tx0)]]]

将这个表达式重新组织,将内层的期望写在外层的期望中,得到:

  • E q ( x 0 : T ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] \mathbb{E}_{q(x_0:T)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right] Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)]

E q ( x 0 : T ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] \mathbb{E}_{q(x_0:T)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right] Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)] 进行重命名,我们得到了最终的形式 L VLB L_{\text{VLB}} LVLB

完整变形过程:

  • E q ( x 0 ) [ − log ⁡ p θ ( x 0 ) ] ≤ E q ( x 0 ) ( E q ( x 1 : T ∣ x 0 ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] ) \begin{aligned}\mathbb{E}_{q(x_0)}[-\log p_\theta(x_0)]&\leq\mathbb{E}_{q(x_0)}\left(\mathbb{E}_{q(x_1:T\mid x_0)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right]\right)\end{aligned} Eq(x0)[logpθ(x0)]Eq(x0)(Eq(x1:Tx0)[logpθ(x0:T)q(x1:Tx0)])

  • E q ( x 0 ) [ − log ⁡ p θ ( x 0 ) ] ≤ E q ( x 0 : T ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] ( L VLB ) \mathbb{E}_{q(x_0)}[-\log p_\theta(x_0)]\leq\mathbb{E}_{q(x_0:T)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right]\quad (L_{\text{VLB}}) Eq(x0)[logpθ(x0)]Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)]LVLB

  • L VLB = E q ( x 0 : T ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] L_{\text{VLB}} = \mathbb{E}_{q(x_0:T)}\left[\log\frac{q(x_{1:T}|x_0)}{p_\theta(x_{0:T})}\right] LVLB=Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)]

 


展开 L VLB L_{\text{VLB}} LVLB

L V L B = E q ( x 0 : T ) [ log ⁡ q ( x 1 : T ∣ x 0 ) p θ ( x 0 : T ) ] = E q [ log ⁡ ∏ t = 1 T q ( x t ∣ x t − 1 ) p θ ( x T ) ∏ t = 1 T p θ ( x t − 1 ∣ x t ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 1 T log ⁡ q ( x t ∣ x t − 1 ) p θ ( x t − 1 ∣ x t ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 2 T log ⁡ q ( x t ∣ x t − 1 ) p θ ( x t − 1 ∣ x t ) + log ⁡ q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 2 T log ⁡ ( q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) ⋅ q ( x t ∣ x 0 ) q ( x t − 1 ∣ x 0 ) ) + log ⁡ q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 2 T log ⁡ q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) + ∑ t = 2 T log ⁡ q ( x t ∣ x 0 ) q ( x t − 1 ∣ x 0 ) + log ⁡ q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ − log ⁡ p θ ( x T ) + ∑ t = 2 T log ⁡ q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) + log ⁡ q ( x T ∣ x 0 ) q ( x 1 ∣ x 0 ) + log ⁡ q ( x 1 ∣ x 0 ) p θ ( x 0 ∣ x 1 ) ] = E q [ log ⁡ q ( x T ∣ x 0 ) p θ ( x T ) + ∑ t = 2 T log ⁡ q ( x t − 1 ∣ x t , x 0 ) p θ ( x t − 1 ∣ x t ) − log ⁡ p θ ( x 0 ∣ x 1 ) ] = E q [ D K L ( q ( x T ∣ x 0 ) ∣ p θ ( x T ) ) ⏟ L T + ∑ t = 2 T D K L ( q ( x t − 1 ∣ x t , x 0 ) ∥ p θ ( x t − 1 ∣ x t ) ) ⏟ L t − 1 − log ⁡ p θ ( x 0 ∣ x 1 ) ] ⏟ L 0 \begin{aligned} L_{\mathrm{VLB}}& =\mathbb{E}_{q(\mathbf{x}_{0}:T)}\bigg[\log\frac{q(\mathbf{x}_{1:T}|\mathbf{x}_{0})}{p_{\theta}(\mathbf{x}_{0:T})}\bigg] \\ &=\mathbb{E}_q\Big[\log\frac{\prod_{t=1}^Tq(\mathbf{x}_t|\mathbf{x}_{t-1})}{p_\theta(\mathbf{x}_T)\prod_{t=1}^Tp_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}\Big] \\ &=\mathbb{E}_q\Big[\left.-\log p_\theta(\mathbf{x}_T)+\sum_{t=1}^T\log\frac{q(\mathbf{x}_t|\mathbf{x}_{t-1})}{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}\right] \\ &=\mathbb{E}_q\Big[-\log p_\theta(\mathbf{x}_T)+\sum_{t=2}^T\log\frac{q(\mathbf{x}_t|\mathbf{x}_{t-1})}{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}+\log\frac{q(\mathbf{x}_1|\mathbf{x}_0)}{p_\theta(\mathbf{x}_0|\mathbf{x}_1)}\Big] \\ &=\mathbb{E}_q\Big[-\log p_\theta(\mathbf{x}_T)+\sum_{t=2}^T\log\Big(\frac{q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}\cdot\frac{q(\mathbf{x}_t|\mathbf{x}_0)}{q(\mathbf{x}_{t-1}|\mathbf{x}_0)}\Big)+\log\frac{q(\mathbf{x}_1|\mathbf{x}_0)}{p_\theta(\mathbf{x}_0|\mathbf{x}_1)}\Big] \\ &=\mathbb{E}_q\Big[-\log p_\theta(\mathbf{x}_T)+\sum_{t=2}^T\log\frac{q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}+\sum_{t=2}^T\log\frac{q(\mathbf{x}_t|\mathbf{x}_0)}{q(\mathbf{x}_{t-1}|\mathbf{x}_0)}+\log\frac{q(\mathbf{x}_1|\mathbf{x}_0)}{p_\theta(\mathbf{x}_0|\mathbf{x}_1)}\Big] \\ &=\mathbb{E}_q\Big[-\log p_\theta(\mathbf{x}_T)+\sum_{t=2}^T\log\frac{q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)}{p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)}+\log\frac{q(\mathbf{x}_T|\mathbf{x}_0)}{q(\mathbf{x}_1|\mathbf{x}_0)}+\log\frac{q(\mathbf{x}_1|\mathbf{x}_0)}{p_\theta(\mathbf{x}_0|\mathbf{x}_1)}\Big] \\ &=\mathbb{E}_q\Big[\log\frac{q(\mathbf{x}_T|\mathbf{x}_0)}{p_\theta(\mathbf{x}_T)}+\sum_{t=2}^T\log\frac{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)\Big] \\ &=\mathbb{E}_q[\underbrace{D_{\mathrm{KL}}(q(\mathbf{x}_T|\mathbf{x}_0)\mid p_\theta(\mathbf{x}_T))}_{L_{T}}+\sum_{t=2}^T\underbrace{D_{\mathrm{KL}}(q(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)\parallel p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t))}_{L_{t-1}}\underbrace{-\log p_\theta(\mathbf{x}_0|\mathbf{x}_1)]}_{L_0} \end{aligned} LVLB=Eq(x0:T)[logpθ(x0:T)q(x1:Tx0)]=Eq[logpθ(xT)t=1Tpθ(xt1xt)t=1Tq(xtxt1)]=Eq[logpθ(xT)+t=1Tlogpθ(xt1xt)q(xtxt1)]=Eq[logpθ(xT)+t=2Tlogpθ(xt1xt)q(xtxt1)+logpθ(x0x1)q(x1x0)]=Eq[logpθ(xT)+t=2Tlog(pθ(xt1xt)q(xt1xt,x0)q(xt1x0)q(xtx0))+logpθ(x0x1)q(x1x0)]=Eq[logpθ(xT)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)+t=2Tlogq(xt1x0)q(xtx0)+logpθ(x0x1)q(x1x0)]=Eq[logpθ(xT)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)+logq(x1x0)q(xTx0)+logpθ(x0x1)q(x1x0)]=Eq[logpθ(xT)q(xTx0)+t=2Tlogpθ(xt1xt)q(xt1xt,x0)logpθ(x0x1)]=Eq[LT DKL(q(xTx0)pθ(xT))+t=2TLt1 DKL(q(xt1xt,x0)pθ(xt1xt))L0 logpθ(x0x1)]

第二行:利用马尔科夫性质,展开第一行,变成连乘的形式 ∏ \prod

第三行:利用 log 运算,把连乘变成求和 ∑ \sum

第四行:把 t = 1 t=1 t=1 时刻分出来

第五行:用条件概率的链式法则引入 x 0 x_{0} x0

第六行:log 展开

第七行:反向 log 展开,把求和移动 log 内变成乘积,约掉分子分母简化

第八行:整理

第九行:得到 3 个 KL 散度: L T L_{T} LT L t − 1 L_{t-1} Lt1 L 0 L_{0} L0

L T L_{T} LT

  • L T L_{T} LT q ( x T ∣ x 0 ) q(\mathbf{x}_T|\mathbf{x}_0) q(xTx0) 是前向传播,从 x 0 x_{0} x0 x t x_{t} xt,没有可学习的参数,可直接推导
  • L T L_{T} LT p θ ( x T ) p_\theta(\mathbf{x}_T) pθ(xT) 是纯高斯噪声
  • 因此, L T L_{T} LT 相当于常量,可以忽略

L t − 1 L_{t-1} Lt1:俩个高斯分布的 KL 散度

L 0 L_{0} L0:相当于 L t − 1 L_{t-1} Lt1 t = 1 t=1 t=1 时刻的简化版

 


L t = E x 0 , ϵ [ 1 2 ∥ Σ θ ( x t , t ) ∥ 2 2 ∥ μ ~ t ( x t , x 0 ) − μ θ ( x t , t ) ∥ 2 ] = E x 0 , ϵ [ 1 2 ∥ Σ θ ∥ 2 2 ∥ 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ t ) − 1 α t ( x t − 1 − α t 1 − α ˉ t ϵ θ ( x t , t ) ) ∥ 2 ] = E x 0 , ϵ [ ( 1 − α t ) 2 2 α t ( 1 − α ˉ t ) ∥ Σ θ ∥ 2 2 ∥ ϵ t − ϵ θ ( x t , t ) ∥ 2 ] = E x 0 , ϵ [ ( 1 − α t ) 2 2 α t ( 1 − α ˉ t ) ∥ Σ θ ∥ 2 2 ∥ ϵ t − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ t , t ) ∥ 2 ] L t s i m p l e = E t ∼ [ 1 , T ] , x 0 , ϵ t [ ∥ ϵ t − ϵ θ ( x t , t ) ∥ 2 ] = E t ∼ [ 1 , T ] , x 0 , ϵ t [ ∥ ϵ t − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ t , t ) ∥ 2 ] \begin{aligned} \color{green}{L_t}& =\mathbb{E}_{\mathbf{x}_{0},\epsilon}\Big[\frac{1}{2\|\mathbf{\Sigma}_{\theta}(\mathbf{x}_{t},t)\|_{2}^{2}}\|\tilde{\boldsymbol{\mu}}_{t}(\mathbf{x}_{t},\mathbf{x}_{0})-\mathbf{\mu}_{\theta}(\mathbf{x}_{t},t)\|^{2}\Big] \\ &=\mathbb{E}_{\mathbf{x}_{0,\boldsymbol{\epsilon}}}\Big[\frac{1}{2\|\boldsymbol{\Sigma}_{\theta}\|_{2}^{2}}\|\frac{1}{\sqrt{\alpha_{t}}}\Big(\mathbf{x}_{t}-\frac{1-\alpha_{t}}{\sqrt{1-\bar{\alpha}_{t}}}\boldsymbol{\epsilon}_{t}\Big)-\frac{1}{\sqrt{\alpha_{t}}}\Big(\mathbf{x}_{t}-\frac{1-\alpha_{t}}{\sqrt{1-\bar{\alpha}_{t}}}\boldsymbol{\epsilon}_{\theta}(\mathbf{x}_{t},t)\Big)\|^{2}\Big] \\ &=\mathbb{E}_{\mathbf{x}_0,\boldsymbol{\epsilon}}\Big[\frac{(1-\alpha_t)^2}{2\alpha_t(1-\bar{\alpha}_t)\|\boldsymbol{\Sigma}_\theta\|_2^2}\|\boldsymbol{\epsilon}_t-\boldsymbol{\epsilon}_\theta(\mathbf{x}_t,t)\|^2\Big] \\ &=\mathbb{E}_{\mathbf{x}_0,\epsilon}\Big[\frac{(1-\alpha_t)^2}{2\alpha_t(1-\bar{\alpha}_t)\|\boldsymbol{\Sigma}_\theta\|_2^2}\|\boldsymbol{\epsilon}_t-\boldsymbol{\epsilon}_\theta(\sqrt{\bar{\alpha}_t}\mathbf{x}_0+\sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon}_t,t)\|^2\Big] \\ &L_{t}^{\mathrm{simple}} =\mathbb{E}_{t\sim[1,T],\mathbf{x}_0,\boldsymbol{\epsilon}_t}\bigg[\|\boldsymbol{\epsilon}_t-\boldsymbol{\epsilon}_\theta(\mathbf{x}_t,t)\|^2\bigg] \\ &=\mathbb{E}_{t\sim[1,T],\mathbf{x}_0,\boldsymbol{\epsilon}_t}\left[\|\boldsymbol{\epsilon}_t-\boldsymbol{\epsilon}_\theta(\sqrt{\bar{\alpha}_t}\mathbf{x}_0+\sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon}_t,t)\|^2\right] \end{aligned} Lt=Ex0,ϵ[2∥Σθ(xt,t)221μ~t(xt,x0)μθ(xt,t)2]=Ex0,ϵ[2∥Σθ221αt 1(xt1αˉt 1αtϵt)αt 1(xt1αˉt 1αtϵθ(xt,t))2]=Ex0,ϵ[2αt(1αˉt)Σθ22(1αt)2ϵtϵθ(xt,t)2]=Ex0,ϵ[2αt(1αˉt)Σθ22(1αt)2ϵtϵθ(αˉt x0+1αˉt ϵt,t)2]Ltsimple=Et[1,T],x0,ϵt[ϵtϵθ(xt,t)2]=Et[1,T],x0,ϵt[ϵtϵθ(αˉt x0+1αˉt ϵt,t)2]

第一行:多元高斯分布的 KL 散度形式

第二行:

  • 中间项:把复原过程中的 均值 μ ~ 均值 \tilde{\mu} 均值μ~ 代入
  • 最右项:把扩散过程中的 均值 μ ~ 均值 \tilde{\mu} 均值μ~ 代入

第三行:

  • 学习噪声 ϵ t \epsilon_t ϵt、噪声 ϵ θ ( x t , t ) 之间的最小均方差 \boldsymbol{\epsilon}_\theta(\mathbf{x}_t,t) 之间的最小均方差 ϵθ(xt,t)之间的最小均方差

第四行:

  • 合并同类项,变成线性组合 y = x + b y=x+b y=x+b 形式‘

第五、六行:

  • 发现第四行前面的权重项影响不大,直接求后面的 线性组合 形式即可

  • 线性组合: [ ∣ ϵ t − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ t , t ) ] \left[|\boldsymbol{\epsilon}t - \boldsymbol{\epsilon}\theta(\sqrt{\bar{\alpha}_t}\mathbf{x}_0 + \sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon}_t, t)\right] [ϵtϵθ(αˉt x0+1αˉt ϵt,t)]

训练流程

ewricas:

补充:

  1. 回到 第1步 继续迭代,直到 第3步 的损失函数收敛

每一轮的迭代,通过向后扩散噪声序列,将俩个时刻噪声之间的差异,作为当前梯度,更新模型参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/267391.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux权限篇

1.什么是权限? 生活中,有些事情你不能做,别人能做,这叫别人有做某事的权限; Linux中,权限的概念也是类似的,特指通过一定的条件,拦住一部分人,给另一部分人权限去访问资…

多目标跟踪数据集

目录 DanceTrack数据集 自己改进的可视化代码: DanceTrack数据集 DanceTrack 是一个大规模的多对象跟踪数据集。用于在遮挡、频繁交叉、同样服装和多样化身体姿态条件下对人进行跟踪。强调运动分析在多对象跟踪中的重要性。 GitHub地址:https://github.com/DanceTrack/Dan…

Ubuntu22.04使能root用户

一、背景 安装Ubuntu22.04系统的时候,会要求创建一个用户,并设置密码。为方便后续行文,将此用户称为user_normal,此密码称为normal_pd 安装Ubuntu22.04系统的时候,没有出现任何和root有关的设置 Ubuntu22.04安装完成…

web服务器之——搭建基于http协议的静态网站

目录 准备工作:web服务器搭建 第一步:挂载 第二步:编辑配置文件 第三步:安装软件包 第四步:启动httpd 查看配置文件: 第五步:设置防火墙状态: 重启服务: 查看状态&#xff…

Runtime

Runtime 概念: Runtime是一套底层纯C语言API,OC代码最终都会被编译器转化为运行时代码,通过消息机制决定函数调用方式,这也是OC作为动态语言使用的基础。Runtime的最大特征就是实现了OC语言的动态特性。 消息机制原理 在Objec…

虾皮选品网:知虾选品工具

使用虾皮(Shopee)平台进行选品时,许多卖家都会寻求数据软件和工具的帮助,以分析市场趋势、竞争程度和产品潜力。在这篇文章中,我们将介绍一些推荐使用的虾皮选品数据软件,并探讨它们如何帮助您更好地了解市…

低功耗模式的通用 MCU ACM32F0X0 系列,具有高整合度、高抗干扰、 高可靠性的特点

ACM32F0X0 系列是一款支持多种低功耗模式的通用 MCU。集成 12 位 1.6 Msps 高精度 ADC 以及比 较器、运放、触控按键控制器、段式 LCD 控制器,内置高性能定时器、多路 UART、LPUART、SPI、I2C 等丰富的通讯外设,内建 AES、TRNG 等信息安全模块&#xff0…

排序算法:【冒泡排序】、逻辑运算符not用法、解释if not tag:

注意: 1、排序:将一组无序序列,调整为有序的序列。所谓有序,就是说,要么升序要么降序。 2、列表排序:将无序列表变成有序列表。 3、列表这个类里,内置排序方法:sort( )&#xff0…

自编码器 AutoEncoder

自编码器(AutoEncoder),也称自编码模型,是一种基于无监督学习的数据维度压缩和特征表示方法,目的是对一组数据学习出一种表示。1986年 Rumelhart 提出自编码模型用于高维复杂数据的降维。由于自动编码器通常应用于无监…

〖大前端 - 基础入门三大核心之JS篇(51)〗- 面向对象之认识上下文与上下文规则

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:哈哥撩编程,十余年工作经验, 从事过全栈研发、产品经理等工作,目前在公司…

web漏洞原理与防御策略,web漏洞怎么挖掘

目录 Web安全的重要性 ​编辑常见的Web漏洞类型及其原理: 1、跨站脚本攻击(XSS): 2、SQL注入: 3、跨站请求伪造(CSRF): 4、远程文件包含(RFI)和本地文件包含(LFI):…

ONLYOFFICE协作空间2.0:文档协作更便捷

〇、前言 大家好我是陈橘又青,在之前的文章中,我向大家介绍了ONLYOFFICE:免费、开源、跨平台的办公神器,想必大家都已经了解到了ONLYOFFICE在企业办公、文档处理工作中的方便快捷。ONLYOFFICE 2.0版本也已于近日更新。 今天就来跟…