DDPM公式推导(四)

news2024/12/23 9:35:16

3 Diffusion models and denoising autoencoders

扩散模型可能看起来是一类受限制的潜在变量模型,但它们在实现中允许很大的自由度。必须选择正向过程的方差 β t \beta_t βt以及逆向过程的模型架构和高斯分布参数化。为了指导我们的选择,我们在扩散模型和去噪分数匹配之间建立了一个新的显式连接(第 3.2 节),从而为扩散模型提供了一个简化的加权变分边界目标(第 3.4 节)。最终,我们的模型设计通过简单性和实证结果得到了证明(第 4 节)。我们的讨论按公式(5)的术语进行分类。

3.1 Forward process and L T L_T LT


我们忽略了通过重参数化可以使前向过程的方差 β t \beta_t βt变得可学习的事实,而是将它们固定为常数(详见第4节)。因此,在我们的实现中,近似后验分布 q q q没有可学习的参数,因此 L T L_T LT在训练过程中是一个常数,可以忽略不计。

3.2 Reverse process and L 1 : T − 1 L_{1: T-1} L1:T1


现在我们讨论 p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) p_\theta\left(\mathbf{x}_{t-1} \mid \mathbf{x}_t\right)=\mathcal{N}\left(\mathbf{x}_{t-1} ; \boldsymbol{\mu}_\theta\left(\mathbf{x}_t, t\right), \mathbf{\Sigma}_\theta\left(\mathbf{x}_t, t\right)\right) pθ(xt1xt)=N(xt1;μθ(xt,t),Σθ(xt,t)) 中对 1 < t ≤ T 1 < t \leq T 1<tT 的选择。首先,我们将 Σ θ ( x t , t ) = σ t 2 I \boldsymbol{\Sigma}_\theta\left(\mathbf{x}_t, t\right)=\sigma_t^2 \mathbf{I} Σθ(xt,t)=σt2I 设为未训练的时间依赖常数。实验上, σ t 2 = β t \sigma_t^2=\beta_t σt2=βt σ t 2 = β ~ t = 1 − α ˉ t − 1 1 − α ˉ t β t \sigma_t^2=\tilde{\beta}_t=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t} \beta_t σt2=β~t=1αˉt1αˉt1βt 有类似的结果。第一个选择对于 x 0 ∼ N ( 0 , I ) \mathbf{x}_0 \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) x0N(0,I) 是最优的,而第二个选择对于 x 0 \mathbf{x}_0 x0 确定为某一个点是最优的。这是对应于坐标单位方差数据的逆过程熵上下界的两个极端选择 [53]。

其次,为了表示均值 μ θ ( x t , t ) \boldsymbol{\mu}_\theta\left(\mathbf{x}_t, t\right) μθ(xt,t),我们提出了一种特定的参数化方法,这种方法的动机来源于对 L t L_t Lt 的以下分析。对于 p θ ( x t − 1 ∣ x t ) = N ( x t − 1 ; μ θ ( x t , t ) , σ t 2 I ) p_\theta\left(\mathbf{x}_{t-1} \mid \mathbf{x}_t\right)=\mathcal{N}\left(\mathbf{x}_{t-1} ; \boldsymbol{\mu}_\theta\left(\mathbf{x}_t, t\right), \sigma_t^2 \mathbf{I}\right) pθ(xt1xt)=N(xt1;μθ(xt,t),σt2I),我们可以写成:
L t − 1 = E q [ 1 2 σ t 2 ∥ μ ~ t ( x t , x 0 ) − μ θ ( x t , t ) ∥ 2 ] + C ( 8 ) L_{t-1}=\mathbb{E}_q\left[\frac{1}{2 \sigma_t^2}\left\|\tilde{\boldsymbol{\mu}}_t\left(\mathbf{x}_t, \mathbf{x}_0\right)-\boldsymbol{\mu}_\theta\left(\mathbf{x}_t, t\right)\right\|^2\right]+C \quad(8) Lt1=Eq[2σt21μ~t(xt,x0)μθ(xt,t)2]+C(8)
其中 C C C 是一个不依赖于 θ \theta θ 的常数。因此,我们看到 μ θ \boldsymbol{\mu}_\theta μθ 最直接的参数化方式是预测前向过程的后验均值 μ ~ t \tilde{\boldsymbol{\mu}}_t μ~t。但是,我们可以通过将公式 (4) 重参数化为 x t ( x 0 , ϵ ) = α ˉ t x 0 + 1 − α ˉ t ϵ \mathbf{x}_t\left(\mathbf{x}_0, \boldsymbol{\epsilon}\right)=\sqrt{\bar{\alpha}_t} \mathbf{x}_0+\sqrt{1-\bar{\alpha}_t} \boldsymbol{\epsilon} xt(x0,ϵ)=αˉt x0+1αˉt ϵ ϵ ∼ N ( 0 , I ) \boldsymbol{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) ϵN(0,I),并应用前向过程的后验公式 (7) 来进一步展开公式 (8):
L t − 1 − C = E x 0 , ϵ [ 1 2 σ t 2 ∥ μ ~ t ( x t ( x 0 , ϵ ) , 1 α ˉ t ( x t ( x 0 , ϵ ) − 1 − α ˉ t ϵ ) ) − μ θ ( x t ( x 0 , ϵ ) , t ) ∥ 2 ] ( 9 ) = E x 0 , ϵ [ 1 2 σ t 2 ∥ 1 α t ( x t ( x 0 , ϵ ) − β t 1 − α ˉ t ϵ ) − μ θ ( x t ( x 0 , ϵ ) , t ) ∥ 2 ] ( 10 ) \begin{aligned} L_{t-1}-C & =\mathbb{E}_{\mathbf{x}_0, \boldsymbol{\epsilon}}\left[\frac{1}{2 \sigma_t^2}\left\|\tilde{\boldsymbol{\mu}}_t\left(\mathbf{x}_t\left(\mathbf{x}_0, \boldsymbol{\epsilon}\right), \frac{1}{\sqrt{\bar{\alpha}_t}}\left(\mathbf{x}_t\left(\mathbf{x}_0, \boldsymbol{\epsilon}\right)-\sqrt{1-\bar{\alpha}_t} \boldsymbol{\epsilon}\right)\right)-\boldsymbol{\mu}_\theta\left(\mathbf{x}_t\left(\mathbf{x}_0, \boldsymbol{\epsilon}\right), t\right)\right\|^2\right] \quad(9)\\ & =\mathbb{E}_{\mathbf{x}_0, \boldsymbol{\epsilon}}\left[\frac{1}{2 \sigma_t^2}\left\|\frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t\left(\mathbf{x}_0, \boldsymbol{\epsilon}\right)-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}\right)-\boldsymbol{\mu}_\theta\left(\mathbf{x}_t\left(\mathbf{x}_0, \boldsymbol{\epsilon}\right), t\right)\right\|^2\right]\quad(10) \end{aligned} Lt1C=Ex0,ϵ[2σt21 μ~t(xt(x0,ϵ),αˉt 1(xt(x0,ϵ)1αˉt ϵ))μθ(xt(x0,ϵ),t) 2](9)=Ex0,ϵ[2σt21 αt 1(xt(x0,ϵ)1αˉt βtϵ)μθ(xt(x0,ϵ),t) 2](10)

公式(10)揭示了 μ θ \boldsymbol{\mu}_\theta μθ 必须预测 1 α t ( x t − β t 1 − α ˉ t ϵ ) \frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}\right) αt 1(xt1αˉt βtϵ) 给定 x t \mathbf{x}_t xt。由于 x t \mathbf{x}_t xt 作为模型的输入是可用的,我们可以选择参数化方式:
μ θ ( x t , t ) = μ ~ t ( x t , 1 α ˉ t ( x t − 1 − α ˉ t ϵ θ ( x t ) ) ) = 1 α t ( x t − β t 1 − α ˉ t ϵ θ ( x t , t ) ) ( 11 ) \boldsymbol{\mu}_\theta\left(\mathbf{x}_t, t\right)=\tilde{\boldsymbol{\mu}}_t\left(\mathbf{x}_t, \frac{1}{\sqrt{\bar{\alpha}_t}}\left(\mathbf{x}_t-\sqrt{1-\bar{\alpha}_t} \boldsymbol{\epsilon}_\theta\left(\mathbf{x}_t\right)\right)\right)=\frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta\left(\mathbf{x}_t, t\right)\right)\quad(11) μθ(xt,t)=μ~t(xt,αˉt 1(xt1αˉt ϵθ(xt)))=αt 1(xt1αˉt βtϵθ(xt,t))(11)
其中 ϵ θ \boldsymbol{\epsilon}_\theta ϵθ 是一个函数逼近器,用于从 x t \mathbf{x}_t xt 预测 ϵ \boldsymbol{\epsilon} ϵ。采样 x t − 1 ∼ p θ ( x t − 1 ∣ x t ) \mathbf{x}_{t-1} \sim p_\theta\left(\mathbf{x}_{t-1} \mid \mathbf{x}_t\right) xt1pθ(xt1xt) 相当于计算 x t − 1 = 1 α t ( x t − β t 1 − α ˉ t ϵ θ ( x t , t ) ) + σ t z \mathbf{x}_{t-1}=\frac{1}{\sqrt{\alpha_t}}\left(\mathbf{x}_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta\left(\mathbf{x}_t, t\right)\right)+\sigma_t \mathbf{z} xt1=αt 1(xt1αˉt βtϵθ(xt,t))+σtz,其中 z ∼ N ( 0 , I ) \mathbf{z} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) zN(0,I)。完整的采样过程,算法2,类似于 Langevin 动力学,其中 ϵ θ \epsilon_\theta ϵθ 是数据密度的学习梯度。此外,使用参数化公式(11),公式(10)简化为:
E x 0 , ϵ [ β t 2 2 σ t 2 α t ( 1 − α ˉ t ) ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 ] ( 12 ) \mathbb{E}_{\mathbf{x}_0, \boldsymbol{\epsilon}}\left[\frac{\beta_t^2}{2 \sigma_t^2 \alpha_t\left(1-\bar{\alpha}_t\right)}\left\|\boldsymbol{\epsilon}-\boldsymbol{\epsilon}_\theta\left(\sqrt{\bar{\alpha}_t} \mathbf{x}_0+\sqrt{1-\bar{\alpha}_t} \boldsymbol{\epsilon}, t\right)\right\|^2\right]\quad(12) Ex0,ϵ[2σt2αt(1αˉt)βt2 ϵϵθ(αˉt x0+1αˉt ϵ,t) 2](12)
这类似于由 t t t 索引的多个噪声尺度上的去噪得分匹配 [55]。由于公式(12)等于 Langevin-like 逆过程(11)的变分界(一个项),我们看到优化类似于去噪得分匹配的目标等价于使用变分推断来拟合类似于 Langevin 动力学的采样链的有限时间边际。

总之,我们可以训练逆过程均值函数逼近器 μ θ \boldsymbol{\mu}_\theta μθ 来预测 μ ~ t \tilde{\boldsymbol{\mu}}_t μ~t,或者通过修改其参数化方式,我们可以训练它来预测 ϵ \epsilon ϵ。(还有预测 x 0 \mathbf{x}_0 x0 的可能性,但我们发现这会导致实验早期的样本质量较差。)我们已经证明了 ϵ \boldsymbol{\epsilon} ϵ-预测参数化方式既类似于 Langevin 动力学,又将扩散模型的变分界简化为类似于去噪得分匹配的目标。然而,这只是 p θ ( x t − 1 ∣ x t ) p_\theta\left(\mathbf{x}_{t-1} \mid \mathbf{x}_t\right) pθ(xt1xt) 的另一种参数化方式,因此在第4节中,我们通过比较预测 ϵ \boldsymbol{\epsilon} ϵ 和预测 μ ~ t \tilde{\boldsymbol{\mu}}_t μ~t 来验证其有效性。

算法

3.3 Data scaling, reverse process decoder, and L 0 L_0 L0


我们假设图像数据由整数 { 0 , 1 , … , 255 } \{0,1, \ldots, 255\} {0,1,,255} 线性缩放到 [ − 1 , 1 ] [-1,1] [1,1]。这样确保神经网络逆过程在一致缩放的输入上操作,从标准正态先验 p ( x T ) p\left(\mathbf{x}_T\right) p(xT) 开始。为了获得离散的对数似然,我们将逆过程的最后一项设置为从高斯分布 N ( x 0 ; μ θ ( x 1 , 1 ) , σ 1 2 I ) \mathcal{N}\left(\mathbf{x}_0 ; \boldsymbol{\mu}_\theta\left(\mathbf{x}_1, 1\right), \sigma_1^2 \mathbf{I}\right) N(x0;μθ(x1,1),σ12I) 导出的独立离散解码器:
p θ ( x 0 ∣ x 1 ) = ∏ i = 1 D ∫ δ − ( x 0 i ) δ + ( x 0 i ) N ( x ; μ θ i ( x 1 , 1 ) , σ 1 2 ) d x δ + ( x ) = { ∞  if  x = 1 x + 1 255  if  x < 1 δ − ( x ) = { − ∞  if  x = − 1 x − 1 255  if  x > − 1 ( 13 ) \begin{aligned} p_\theta\left(\mathbf{x}_0 \mid \mathbf{x}_1\right) & =\prod_{i=1}^D \int_{\delta_{-}\left(x_0^i\right)}^{\delta_{+}\left(x_0^i\right)} \mathcal{N}\left(x ; \mu_\theta^i\left(\mathbf{x}_1, 1\right), \sigma_1^2\right) d x \\ \delta_{+}(x) & =\left\{\begin{array}{ll} \infty & \text { if } x=1 \\ x+\frac{1}{255} & \text { if } x<1 \end{array} \quad \delta_{-}(x)= \begin{cases}-\infty & \text { if } x=-1 \\ x-\frac{1}{255} & \text { if } x>-1\end{cases} \right.\quad(13) \end{aligned} pθ(x0x1)δ+(x)=i=1Dδ(x0i)δ+(x0i)N(x;μθi(x1,1),σ12)dx={x+2551 if x=1 if x<1δ(x)={x2551 if x=1 if x>1(13)
其中 D D D 是数据的维度,上标 i i i 表示提取一个坐标。(我们也可以简单地使用更强大的解码器,如条件自回归模型,但我们将这留给未来的工作。)与 VAE 解码器和自回归模型中使用的离散连续分布类似 [ 34 , 52 ] [34,52] [34,52],我们在这里的选择确保变分界是离散数据的无损编码长度,无需向数据添加噪声或将缩放操作的雅可比矩阵合并到对数似然中。在采样结束时,我们无噪声地显示 μ θ ( x 1 , 1 ) \boldsymbol{\mu}_\theta\left(\mathbf{x}_1, 1\right) μθ(x1,1)

3.4 Simplified training objective


通过上述定义的逆过程和解码器,由公式(12)和(13)导出的变分界对 θ \theta θ 是明显可微的,并且准备好用于训练。然而,我们发现对训练样本质量(和更简单的实现)有益的是对以下变分界的变体进行训练:
L simple  ( θ ) : = E t , x 0 , ϵ [ ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 ] ( 14 ) L_{\text {simple }}(\theta):=\mathbb{E}_{t, \mathbf{x}_0, \boldsymbol{\epsilon}}\left[\left\|\boldsymbol{\epsilon}-\boldsymbol{\epsilon}_\theta\left(\sqrt{\bar{\alpha}_t} \mathbf{x}_0+\sqrt{1-\bar{\alpha}_t} \boldsymbol{\epsilon}, t\right)\right\|^2\right]\quad(14) Lsimple (θ):=Et,x0,ϵ[ ϵϵθ(αˉt x0+1αˉt ϵ,t) 2](14)
其中 t t t 在 1 和 T T T 之间均匀分布。 t = 1 t=1 t=1 的情况对应于 L 0 L_0 L0,在离散解码器定义(13)中,积分由高斯概率密度函数乘以箱宽近似,忽略了 σ 1 2 \sigma_1^2 σ12 和边缘效应。 t > 1 t>1 t>1 的情况对应于方程(12)的未加权版本,类似于 NCSN 去噪评分匹配模型使用的损失加权。 ( L T L_T LT 不出现,因为前向过程方差 β t \beta_t βt 是固定的。)算法 1 显示了使用此简化目标的完整训练过程。

由于我们的简化目标(14)丢弃了公式(12)中的加权,它是一种加权变分界,与标准变分界相比,强调重建的不同方面。特别是,我们在第 4 节中设置的扩散过程导致简化目标降低了与小 t t t 对应的损失项权重。这些项训练网络去除非常小量的噪声数据,因此将它们降权是有益的,这样网络就可以将重点放在更大 t t t 项的更困难的去噪任务上。我们将在我们的实验中看到,这种重新加权导致更好的样本质量。

继续推导论文中的式(8)。
首先,给出多元高斯分布的概率密度函数公式:
N ( x ∣ μ , Σ ) = 1 ( 2 π ) D / 2 ∣ Σ ∣ 1 / 2 exp ⁡ ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) \mathcal{N}(\mathbf{x} \mid \boldsymbol{\mu}, \boldsymbol{\Sigma})=\frac{1}{(2 \pi)^{D / 2}|\boldsymbol{\Sigma}|^{1 / 2}} \exp \left(-\frac{1}{2}(\mathbf{x}-\boldsymbol{\mu})^T \boldsymbol{\Sigma}^{-1}(\mathbf{x}-\boldsymbol{\mu})\right) N(xμ,Σ)=(2π)D/2Σ1/21exp(21(xμ)TΣ1(xμ))
其中 x ( x 1 , x 2 , … , x D ) \mathbf{x}\left(x_1, x_2, \ldots, x_D\right) x(x1,x2,,xD) D D D 维随机变量, μ \boldsymbol{\mu} μ 为均值向量, Σ \boldsymbol{\Sigma} Σ 为协方差矩阵,注意 ∣ Σ ∣ |\boldsymbol{\Sigma}| Σ 为协方差矩阵的行列式。
为了简化推导,用 q q q 代表 q ( x t − 1 ∣ x t , x 0 ) , p q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0\right) , p q(xt1xt,x0)p 代表 p θ ( x t − 1 ∣ x t ) p_\theta\left(\mathbf{x}_{t-1} \mid \mathbf{x}_t\right) pθ(xt1xt) ,设 p = N ( μ p , Σ p ) p=\mathcal{N}\left(\boldsymbol{\mu}_p, \Sigma_p\right) p=N(μp,Σp) q = N ( μ q , Σ q ) q=\mathcal{N}\left(\mu_q, \Sigma_q\right) q=N(μq,Σq) ,维度均为 D D D ,则根据 KL 散度有:
D K L ( p ∥ q ) = E p [ log ⁡ ( p ) − log ⁡ ( q ) ] = E p [ 1 2 log ⁡ ∣ Σ q ∣ ∣ Σ p ∣ − 1 2 ( x − μ p ) T Σ p − 1 ( x − μ p ) + 1 2 ( x − μ q ) T Σ q − 1 ( x − μ q ) ] = 1 2 E p [ log ⁡ ∣ Σ q ∣ ∣ Σ p ∣ ] − 1 2 E p [ ( x − μ p ) T Σ p − 1 ( x − μ p ) ] + 1 2 E p [ ( x − μ q ) T Σ q − 1 ( x − μ q ) ] = 1 2 log ⁡ ∣ Σ q ∣ ∣ Σ p ∣ − 1 2 E p [ ( x − μ p ) T Σ p − 1 ( x − μ p ) ] + 1 2 E p [ ( x − μ q ) T Σ q − 1 ( x − μ q ) ] \begin{aligned} \mathcal{D}_{K L}(p \| q) & =\mathbb{E}_p[\log (p)-\log (q)] \\ & =\mathbb{E}_p\left[\frac{1}{2} \log \frac{\left|\Sigma_q\right|}{\left|\Sigma_p\right|}-\frac{1}{2}\left(\mathbf{x}-\boldsymbol{\mu}_{\boldsymbol{p}}\right)^T \Sigma_p^{-1}\left(\mathbf{x}-\boldsymbol{\mu}_{\boldsymbol{p}}\right)+\frac{1}{2}\left(\mathbf{x}-\boldsymbol{\mu}_{\boldsymbol{q}}\right)^T \Sigma_q^{-1}\left(\mathbf{x}-\boldsymbol{\mu}_{\boldsymbol{q}}\right)\right]\\ &=\frac{1}{2}\mathbb{E}_p\left[\log \frac{\left|\Sigma_q\right|}{\left|\Sigma_p\right|}\right]-\frac{1}{2} \mathbb{E}_p\left[\left(\mathbf{x}-\boldsymbol{\mu}_p\right)^T \Sigma_p^{-1}\left(\mathbf{x}-\boldsymbol{\mu}_p\right)\right]+\frac{1}{2} \mathbb{E}_p\left[\left(\mathbf{x}-\boldsymbol{\mu}_q\right)^T \Sigma_q^{-1}\left(\mathbf{x}-\boldsymbol{\mu}_q\right)\right]\\ &=\frac{1}{2} \log \frac{\left|\Sigma_q\right|}{\left|\Sigma_p\right|}-\frac{1}{2} \mathbb{E}_p\left[\left(\mathbf{x}-\boldsymbol{\mu}_p\right)^T \Sigma_p^{-1}\left(\mathbf{x}-\boldsymbol{\mu}_p\right)\right]+\frac{1}{2} \mathbb{E}_p\left[\left(\mathbf{x}-\boldsymbol{\mu}_q\right)^T \Sigma_q^{-1}\left(\mathbf{x}-\boldsymbol{\mu}_q\right)\right] \end{aligned} DKL(pq)=Ep[log(p)log(q)]=Ep[21logΣpΣq21(xμp)TΣp1(xμp)+21(xμq)TΣq1(xμq)]=21Ep[logΣpΣq]21Ep[(xμp)TΣp1(xμp)]+21Ep[(xμq)TΣq1(xμq)]=21logΣpΣq21Ep[(xμp)TΣp1(xμp)]+21Ep[(xμq)TΣq1(xμq)]
由于在高斯分布下 E p [ ( x − μ p ) T Σ p − 1 ( x − μ p ) ] = 1 2 E p [ tr ⁡ { ( x − μ p ) ( x − μ p ) T Σ p − 1 } ] = 1 2 tr ⁡ { E p [ Σ p Σ p − 1 ] } = D \mathbb{E}_p\left[\left(\mathbf{x}-\boldsymbol{\mu}_p\right)^T \Sigma_p^{-1}\left(\mathbf{x}-\boldsymbol{\mu}_p\right)\right]=\frac{1}{2} \mathbb{E}_p\left[\operatorname{tr}\left\{\left(\mathbf{x}-\boldsymbol{\mu}_p\right)\left(\mathbf{x}-\boldsymbol{\mu}_p\right)^T \Sigma_p^{-1}\right\}\right]=\frac{1}{2} \operatorname{tr}\left\{\mathbb{E}_p\left[\Sigma_p \Sigma_p^{-1}\right]\right\}=D Ep[(xμp)TΣp1(xμp)]=21Ep[tr{(xμp)(xμp)TΣp1}]=21tr{Ep[ΣpΣp1]}=D,因此,
D K L ( p ∥ q ) = 1 2 log ⁡ ∣ Σ q ∣ ∣ Σ p ∣ − 1 2 D + 1 2 E p [ ( x − μ q ) T Σ q − 1 ( x − μ q ) ] \begin{aligned} \mathcal{D}_{K L}(p \| q) & =\frac{1}{2} \log \frac{\left|\Sigma_q\right|}{\left|\Sigma_p\right|}-\frac{1}{2} D+\frac{1}{2} \mathbb{E}_p\left[\left(\mathbf{x}-\boldsymbol{\mu}_q\right)^T \Sigma_q^{-1}\left(\mathbf{x}-\boldsymbol{\mu}_q\right)\right] \end{aligned} DKL(pq)=21logΣpΣq21D+21Ep[(xμq)TΣq1(xμq)]
需要计算是:
E p [ ( x − μ q ) T Σ y − 1 ( x − μ q ) ] = E p [ ( x − μ p ) + ( μ p − μ q ) ] T Σ q − 1 [ ( x − μ p ) + ( μ p − μ q ) ] = E p [ ( x − μ p ) T Σ y − 1 ( x − μ p ) + ( x − μ p ) T Σ q − 1 ( μ p − μ q ) + ( μ p − μ q ) T Σ q − 1 ( x − μ p ) + ( μ p − μ q ) T Σ q − 1 ( μ p − μ q ) ] = E p [ tr ⁡ ( ( x − μ p ) T Σ y − 1 ( x − μ p ) ) ] + 0 + 0 + ( μ p − μ q ) T Σ q − 1 ( μ p − μ q ) = tr ⁡ ( Σ q − 1 E [ ( x − μ p ) ( x − μ p ) T ] ) + 0 + 0 + ( μ p − μ q ) T Σ q − 1 ( μ p − μ q ) = tr ⁡ ( Σ q − 1 Σ p ) + 0 + 0 + ( μ p − μ q ) T Σ q − 1 ( μ p − μ q ) \begin{aligned} \mathbb{E}_p \left[ (\mathbf{x} - \boldsymbol{\mu}_q)^T \boldsymbol{\Sigma}_y^{-1} (\mathbf{x} - \boldsymbol{\mu}_q) \right]\\ &= \mathbb{E}_p\left[\left(\mathbf{x}-\boldsymbol{\mu}_p\right)+\left(\boldsymbol{\mu}_p-\boldsymbol{\mu}_q\right)\right]^T \boldsymbol{\Sigma}_q^{-1}\left[\left(\mathbf{x}-\boldsymbol{\mu}_p\right)+\left(\boldsymbol{\mu}_p-\boldsymbol{\mu}_q\right)\right]\\ &= \mathbb{E}_p\left[(\mathbf{x} - \boldsymbol{\mu}_p)^T \boldsymbol{\Sigma}_y^{-1} (\mathbf{x} - \boldsymbol{\mu}_p) + (\mathbf{x} - \boldsymbol{\mu}_p)^T \boldsymbol{\Sigma}_q^{-1} (\boldsymbol{\mu}_p - \boldsymbol{\mu}_q) + (\boldsymbol{\mu}_p - \boldsymbol{\mu}_q)^T \boldsymbol{\Sigma}_q^{-1} (\mathbf{x} - \boldsymbol{\mu}_p) + (\boldsymbol{\mu}_p - \boldsymbol{\mu}_q)^T \boldsymbol{\Sigma}_q^{-1} (\boldsymbol{\mu}_p - \boldsymbol{\mu}_q)\right]\\ &= \mathbb{E}_p\left[\operatorname{tr}\left((\mathbf{x} - \boldsymbol{\mu}_p)^T \boldsymbol{\Sigma}_y^{-1} (\mathbf{x} - \boldsymbol{\mu}_p)\right)\right]+0+0+(\boldsymbol{\mu}_p - \boldsymbol{\mu}_q)^T \boldsymbol{\Sigma}_q^{-1} (\boldsymbol{\mu}_p - \boldsymbol{\mu}_q)\\ &=\operatorname{tr}\left(\boldsymbol{\Sigma}_q^{-1} \mathbb{E}\left[\left(\mathbf{x}-\boldsymbol{\mu}_p\right)\left(\mathbf{x}-\boldsymbol{\mu}_p\right)^T\right]\right)+0+0+(\boldsymbol{\mu}_p - \boldsymbol{\mu}_q)^T \boldsymbol{\Sigma}_q^{-1} (\boldsymbol{\mu}_p - \boldsymbol{\mu}_q)\\ &=\operatorname{tr}\left(\boldsymbol{\Sigma}_q^{-1} \boldsymbol{\Sigma}_p\right)+0+0+(\boldsymbol{\mu}_p - \boldsymbol{\mu}_q)^T \boldsymbol{\Sigma}_q^{-1} (\boldsymbol{\mu}_p - \boldsymbol{\mu}_q) \end{aligned} Ep[(xμq)TΣy1(xμq)]=Ep[(xμp)+(μpμq)]TΣq1[(xμp)+(μpμq)]=Ep[(xμp)TΣy1(xμp)+(xμp)TΣq1(μpμq)+(μpμq)TΣq1(xμp)+(μpμq)TΣq1(μpμq)]=Ep[tr((xμp)TΣy1(xμp))]+0+0+(μpμq)TΣq1(μpμq)=tr(Σq1E[(xμp)(xμp)T])+0+0+(μpμq)TΣq1(μpμq)=tr(Σq1Σp)+0+0+(μpμq)TΣq1(μpμq)
因此可得:
D K L ( p ∥ q ) = 1 2 [ log ⁡ ∣ Σ q ∣ ∣ Σ p ∣ − D + tr ⁡ ( Σ q − 1 Σ p ) + ( μ q − μ p ) T Σ q − 1 ( μ q − μ p ) ] = 1 2 ( μ q − μ p ) T Σ q − 1 ( μ q − μ p ) + C \begin{aligned} \mathcal{D}_{K L}(p \| q) & =\frac{1}{2}\left[\log \frac{\left|\boldsymbol{\Sigma}_q\right|}{\left|\boldsymbol{\Sigma}_p\right|}-D+\operatorname{tr}\left(\boldsymbol{\Sigma}_q^{-1} \boldsymbol{\Sigma}_p\right)+\left(\boldsymbol{\mu}_q-\boldsymbol{\mu}_p\right)^T \boldsymbol{\Sigma}_q^{-1}\left(\boldsymbol{\mu}_q-\boldsymbol{\mu}_p\right)\right]\\ &=\frac{1}{2}\left(\boldsymbol{\mu}_{\boldsymbol{q}}-\boldsymbol{\mu}_{\boldsymbol{p}}\right)^T \Sigma_q^{-1}\left(\boldsymbol{\mu}_{\boldsymbol{q}}-\boldsymbol{\mu}_{\boldsymbol{p}}\right)+C \end{aligned} DKL(pq)=21[logΣpΣqD+tr(Σq1Σp)+(μqμp)TΣq1(μqμp)]=21(μqμp)TΣq1(μqμp)+C
重写 L t L_t Lt:
L t − 1 = E q [ D K L ( q ( x t − 1 ∣ x t , x 0 ) ∥ p θ ( x t − 1 ∣ x t ) ) ] = E q [ 1 2 ( μ q − μ p ) T Σ q − 1 ( μ q − μ p ) ] + C = E q [ 1 2 ( μ t ~ − μ θ ) T ( β ~ t I ) − 1 ( μ t ~ − μ θ ) ] + C = E q [ 1 2 β ~ t ∥ μ t ~ − μ θ ∥ 2 ] + C = E q [ 1 2 σ t 2 ∥ μ t ~ − μ θ ∥ 2 ] + C \begin{aligned} L_{t-1} & =\mathbb{E}_q\left[\mathcal{D}_{K L}\left(q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0\right) \| p_\theta\left(\mathbf{x}_{t-1} \mid \mathbf{x}_t\right)\right)\right] \\ & =\mathbb{E}_q\left[\frac{1}{2}\left(\boldsymbol{\mu}_q-\boldsymbol{\mu}_p\right)^T \Sigma_q^{-1}\left(\boldsymbol{\mu}_q-\boldsymbol{\mu}_p\right)\right]+C \\ & =\mathbb{E}_q\left[\frac{1}{2}\left(\tilde{\boldsymbol{\mu}_t}-\boldsymbol{\mu}_\theta\right)^T\left(\tilde{\beta}_t \mathbf{I}\right)^{-1}\left(\tilde{\boldsymbol{\mu}_t}-\boldsymbol{\mu}_\theta\right)\right]+C \\ & =\mathbb{E}_q\left[\frac{1}{2 \tilde{\beta}_t}\left\|\tilde{\boldsymbol{\mu}_t}-\boldsymbol{\mu}_\theta\right\|^2\right]+C \\ & =\mathbb{E}_q\left[\frac{1}{2 \sigma_t^2}\left\|\tilde{\boldsymbol{\mu}_t}-\boldsymbol{\mu}_\theta\right\|^2\right]+C \end{aligned} Lt1=Eq[DKL(q(xt1xt,x0)pθ(xt1xt))]=Eq[21(μqμp)TΣq1(μqμp)]+C=Eq[21(μt~μθ)T(β~tI)1(μt~μθ)]+C=Eq[2β~t1μt~μθ2]+C=Eq[2σt21μt~μθ2]+C
就这样,推出了式(8)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决必剪电脑版导出视频缺斤少两的办法

背景 前几天将电脑重置了&#xff0c;今天想要剪辑一下视频&#xff0c;于是下载了必剪&#xff0c;将视频、音频都调整好&#xff0c;导出&#xff0c;结果15分钟的视频只能导出很短的时长&#xff0c;调整参数最多也只能导出10分钟&#xff0c;My God&#xff01; 解决 首…

Win10“始终使用此应用打开”不见了怎么办?

问题背景 真是服了&#xff0c;昨天家里停电把我电脑系统盘固态烧掉了&#xff0c;于是换了个新的固态给电脑装上新系统。结果这个版本的Win10系统居然无法修改默认应用。具体问题见下面两个图&#xff0c;以py文件为例。 图一&#xff1a;“选择打开方式时没有始终使用此应用…

深入理解指针(四)

目录 1. 回调函数是什么? ​2. qsort使用举例 2.1冒泡排序 2.2使用qsort函数排序整型数据 ​2.3 使用qsort排序结构数据(名字) 2.4 使用qsort排序结构数据(年龄) 3. qsort函数的模拟实现 1. 回调函数是什么? 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数…

计算机组成原理之定点加法与减法运算

文章目录 补码的加减法算法的流程与逻辑实现溢出判断溢出原因单符号位判断双符号位&#xff08;变形补码&#xff09; 基本的加法/减法器舍入方法习题 补码的加减法 数用补码表示&#xff0c;符号位参与运算 考虑几个问题&#xff1f; 1.实际操作能否只取决于操作码&#xff1f…

基于CentOS Stream 9平台 安装/卸载 Redis7.0.15

已更正systemctl管理Redis服务问题 1. 官方下载地址 https://redis.io/downloads/#redis-downloads 1.1 下载或上传到/opt/coisini目录下&#xff1a; mkdir /opt/coisini cd /opt/coisini wget https://download.redis.io/releases/redis-7.0.15.tar.gz2. 解压 tar -zxvf re…

docker拉取镜像太慢解决方案

前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 创建daemon.json文件,输入以下信息 vim /etc/docker/daemon.json{"registry-mirrors": ["https://9cpn8tt6.mirror…

搭建WWW服务

1.实验环境的配置 【1】设置windows虚拟机server和test网络属性 打开虚拟机的【开始】菜单->【控制面板】->【网络连接】窗口。 1. 选中【本地连接】右击鼠标&#xff0c;选中【属性】&#xff0c;打开【本地连接属性】窗口。 2. 选择【网络】页签。 3. 在【此连接使…

vue3实现表格的分页以及确认消息弹窗

表格的分页实例展示 效果1:表格按照每行10条数据分页,且编号也会随之分页自增 实现按照页码分页效果 第二页 展示编号根据分页自动增长 固定表格高度 这边设置了滚动条,同时表格高度实现自适应滚动条高度 template部分 表格代码 编号是按照页码条数进行循环并根据索引自增…

理解DDD设计

DDD的理解 领域驱动设计&#xff08;Domain-Driven Design&#xff0c;DDD&#xff09;是一种软件开发方法论&#xff0c;强调将业务领域作为软件设计的核心&#xff0c;以便更好地满足业务需求。DDD认为&#xff0c;软件开发的核心是理解业务&#xff0c;而不是实现技术。在D…

Unity贪吃蛇改编【详细版】

Big and small greedy snakes 游戏概述 游戏亮点 通过对称的美感&#xff0c;设置两条贪吃蛇吧&#xff0c;其中一条加倍成长以及加倍减少&#xff0c;另一条正常成长以及减少&#xff0c;最终实现两条蛇对整个界面的霸占效果。 过程中不断记录两条蛇的得分情况&#xff0c…

Python 踩坑记 -- 调优

前言 继续解决问题 慢 一个服务运行有点慢&#xff0c;当然 Python 本身不快&#xff0c;如果再编码不当那这个可能就是量级上的劣化。 整个 Code 主线逻辑 1700&#xff0c;各依赖封装 3000&#xff0c;主线逻辑也是很久远的痕迹&#xff0c;长函数都很难看清楚一个 if els…

创建STM32F10X空项目教程

创建STM32F10X系列的空项目工程 官网下载STM32标准外设软件库 STM32标准外设软件库 创建一个空文件夹作为主工程文件夹在主工程文件夹中&#xff0c;创建三个空文件夹 CMSIS - 存放内核函数及启动引导文件 FWLIB - 存放库函数 USER - 存放用户的函数将STM32标准外设软件库文件…

弗洛伊德算法——C语言

弗洛伊德算法&#xff0c;是一种用于解决所有顶点对之间最短路径问题的经典算法&#xff0c;该算法通过动态规划的方法计算出从每个顶点到其他所有顶点的最短路径。 弗洛伊德算法的基本思想是逐步考虑每一个顶点作为中间点&#xff0c;更新所有顶点对之间的最短路径。它通过以…

环形链表2证明

解法 快慢指针相遇后&#xff0c;其中一个指回头部&#xff0c;然后同步前进 代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNod…

java(JVM)

JVM Java的JVM&#xff08;Java虚拟机&#xff09;是运行Java程序的关键部件。它不直接理解或执行Java源代码&#xff0c;而是与Java编译器生成的字节码&#xff08;Bytecode&#xff09;进行交互。下面是对Java JVM更详尽的解释&#xff1a; 1.字节码&#xff1a; 当你使用J…

通过命令行启动MySQL

通过命令行启动MySQL 右击&#xff0c;选择管理员运行 停止MySQL net stop你的服务名称 net stop MySQL启动MySQL net start你的服务名称 net start MySQL

实战项目: 负载均衡

0. 前言 这个项目使用了前后端,实现一个丐版的LeetCode刷题网站,并根据每台主机的实际情况,选择对应的主机,负载均衡的调度 0.1 所用技术与开发环境 所用技术: C STL 标准库 Boost 准标准库 ( 字符串切割 ) cpp- httplib 第三方开源网络库 ctemplate 第三方开源前端网…

pikachu中pkxss数据库怎么创建

在用小皮时候&#xff0c;只是知道个pikachu这个数据库&#xff0c;跟着视频看人家用pkxss数据库&#xff0c;自己也想用&#xff0c;查看了很多资料&#xff0c;又蒙又查&#xff0c;终于明白怎么弄&#xff0c;特此传授经验 图像中画横线的就是平常怎么创建数据库的&#xff…

HP惠普暗影精灵10 OMEN Gaming Laptop 16-wf1xxx原厂Win11系统镜像下载

惠普hp暗影精灵10笔记本电脑16-wf1000TX原装出厂Windows11&#xff0c;恢复开箱状态oem预装系统安装包&#xff0c;带恢复重置还原 适用型号:16-wf1xxx 16-wf1000TX,16-wf1023TX,16-wf1024TX,16-wf1025TX, 16-wf1026TX,16-wf1027TX,16-wf1028TX,16-wf1029TX, 16-wf1030TX,16-…

C++ 算法教程

归并排序 #include<iostream> using namespace std; template <class T> void Merge(T data[],int start,int mid,int end) {int len1 mid - start 1, len2 end - mid;int i, j, k;T* left new int[len1];T* right new int[len2];for (i 0; i < len1; i)…