【深度学习】DDPM公式详解(第一期)

news2024/9/20 8:48:09

原论文:Denoising Diffusion Probabilistic Models

(1)-1 p θ ( x 0 : T ) : = p ( x T ) ∏ t = 1 T p θ ( x t − 1 ∣ x t ) p_{\theta}(x_0:T) := p(x_T) \prod_{t=1}^{T} p_{\theta}(x_{t-1} \mid x_t) pθ(x0:T):=p(xT)t=1Tpθ(xt1xt)

这个公式描述了扩散模型(Diffusion Model)中的反向过程(reverse process),具体是模型如何通过一系列的条件概率来生成数据。

这个公式可以拆分为以下几个部分来理解:

  1. 联合分布 p θ ( x 0 : T ) p_{\theta}(x_0:T) pθ(x0:T)
    这是模型中所有变量 x 0 x_0 x0 x T x_T xT 的联合概率分布。这里的 x 0 x_0 x0 通常代表原始数据,而 x 1 x_1 x1 x T x_T xT 是在扩散过程中引入的潜变量。

  2. 初始分布 p ( x T ) p(x_T) p(xT)
    这个分布是生成过程的起点,通常是一个标准正态分布 N ( x T ; 0 ; I ) N(x_T; 0; I) N(xT;0;I),即从均值为 0 0 0,方差为 I I I的高斯分布中采样 x T x_T xT

  3. 条件概率 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1} \mid x_t) pθ(xt1xt)
    这是反向过程中的每一步转移概率,表示给定 x t x_t xt 生成 x t − 1 x_{t-1} xt1 的概率。这个概率通常被定义为高斯分布,其均值和方差是通过神经网络 μ θ ( x t , t ) \mu_{\theta}(x_t, t) μθ(xt,t) Σ θ ( x t , t ) \Sigma_{\theta}(x_t, t) Σθ(xt,t) 来确定的。

  4. 逐步生成过程
    公式中的乘积符号 ∏ t = 1 T \prod_{t=1}^{T} t=1T 表示从 t = T t = T t=T 开始,一直到 t = 1 t = 1 t=1 的逐步生成过程。在每一步中,模型从上一步生成的潜变量 x t x_t xt 出发,生成前一个时间点的潜变量 x t − 1 x_{t-1} xt1,直到生成最终的 x 0 x_0 x0,即我们希望生成的数据。

总结

这个公式描述了如何从一个简单的高斯分布 p ( x T ) p(x_T) p(xT) 开始,通过一系列条件概率 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1} \mid x_t) pθ(xt1xt) 逐步生成一个复杂数据分布 p θ ( x 0 ) p_{\theta}(x_0) pθ(x0) 的过程。扩散模型利用这种逐步生成的机制来生成与训练数据分布相似的数据。

(1)-2 p θ ( x t − 1 ∣ x t ) : = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) p_{\theta}(x_{t-1} \mid x_t) := N(x_{t-1}; \mu_{\theta}(x_t, t), \Sigma_{\theta}(x_t, t)) pθ(xt1xt):=N(xt1;μθ(xt,t),Σθ(xt,t))

这个公式描述了扩散模型中的反向生成过程的一个具体步骤,即如何从一个已知的潜变量 x t x_t xt 生成前一个时间步的潜变量 x t − 1 x_{t-1} xt1

这里的各个符号解释如下:

  1. 条件概率 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1} \mid x_t) pθ(xt1xt)
    这是一个条件概率,表示在已知当前时间步的潜变量 x t x_t xt 的情况下,生成前一个时间步的潜变量 x t − 1 x_{t-1} xt1 的概率分布。

  2. 高斯分布 N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) N(x_{t-1}; \mu_{\theta}(x_t, t), \Sigma_{\theta}(x_t, t)) N(xt1;μθ(xt,t),Σθ(xt,t))
    该条件概率被假设为一个多维高斯分布。高斯分布的形式为 N ( ⋅ ; mean , covariance ) N(\cdot; \text{mean}, \text{covariance}) N(;mean,covariance),即在给定均值和协方差矩阵的情况下,描述随机变量的概率分布。

  3. 均值 μ θ ( x t , t ) \mu_{\theta}(x_t, t) μθ(xt,t)
    这是生成 x t − 1 x_{t-1} xt1 的均值,它是一个由神经网络或某种参数化模型 μ θ \mu_{\theta} μθ 来预测的函数,依赖于当前的潜变量 x t x_t xt 和时间步 t t t

  4. 协方差矩阵 Σ θ ( x t , t ) \Sigma_{\theta}(x_t, t) Σθ(xt,t)
    这是生成 x t − 1 x_{t-1} xt1 的协方差矩阵,同样由一个参数化模型 Σ θ \Sigma_{\theta} Σθ 来预测,也依赖于当前的潜变量 x t x_t xt 和时间步 t t t

过程解释

在扩散模型中,反向生成过程是从 x T x_T xT开始,通过一系列的高斯分布逐步生成潜变量,直到生成最终的数据样本 x 0 x_0 x0。在每一步,模型根据当前时间步的潜变量 x t x_t xt来确定生成前一个时间步潜变量 x t − 1 x_{t-1} xt1 的分布,这个分布由均值和协方差来确定。

这个过程通过高斯分布进行采样,使得生成的潜变量序列逐步从噪声(如标准正态分布)趋近于真实数据分布,从而生成与训练数据相似的样本。

(2)-1 q ( x 1 : T ∣ x 0 ) : = ∏ t = 1 T q ( x t ∣ x t − 1 ) q(x_{1:T} \mid x_0) := \prod_{t=1}^{T} q(x_t \mid x_{t-1}) q(x1:Tx0):=t=1Tq(xtxt1)

这个公式描述了扩散模型中前向过程(forward process)的联合概率分布。前向过程描述了从原始数据 x 0 x_0 x0 开始,如何逐步添加噪声来生成一系列潜变量 x 1 x_1 x1 x T x_T xT 的过程。

这个公式可以拆分为以下部分来理解:

  1. 条件概率 q ( x 1 : T ∣ x 0 ) q(x_{1:T} \mid x_0) q(x1:Tx0)
    这是给定原始数据 x 0 x_0 x0 的情况下,从 x 1 x_1 x1 x T x_T xT 的潜变量序列的联合概率分布。

  2. 乘积符号 ∏ t = 1 T \prod_{t=1}^{T} t=1T
    这个符号表示从 t = 1 t = 1 t=1 t = T t = T t=T 的乘积。这个乘积表示模型在前向过程中,每一步生成潜变量的条件概率相乘。

  3. 条件概率 q ( x t ∣ x t − 1 ) q(x_t \mid x_{t-1}) q(xtxt1)
    这是前向过程中的每一步的条件概率,表示给定前一个时间步的潜变量 x t − 1 x_{t-1} xt1,生成当前时间步的潜变量 x t x_t xt 的概率。通常,这个概率会是一个添加了噪声的分布,用来逐步增加数据的不确定性。

过程解释

在扩散模型的前向过程(forward process)中,原始数据 x 0 x_0 x0 逐步被添加噪声,生成一系列的潜变量 x 1 x_1 x1 x T x_T xT,直到最后生成一个完全随机的潜变量 x T x_T xT。这个过程的目标是通过增加噪声来逐渐“破坏”原始数据,使其变得更接近噪声分布。

这一步步生成的潜变量是通过每一步的条件概率 q ( x t ∣ x t − 1 ) q(x_t \mid x_{t-1}) q(xtxt1) 来完成的,而这些条件概率通常是高斯分布或其他适合模型的分布。最终,前向过程的联合概率 q ( x 1 : T ∣ x 0 ) q(x_{1:T} \mid x_0) q(x1:Tx0) 是所有这些条件概率的乘积。

(2)-2 q ( x t ∣ x t − 1 ) : = N ( x t ; 1 − β t x t − 1 , β t I ) q(x_t \mid x_{t-1}) := N\left(x_t; \sqrt{1 - \beta_t} x_{t-1}, \beta_t I\right) q(xtxt1):=N(xt;1βt xt1,βtI)

这个公式定义了扩散模型中前向过程(forward process)每一步的条件概率分布。具体来说,它描述了在给定前一个时间步的潜变量 x t − 1 x_{t-1} xt1 的情况下,如何生成当前时间步的潜变量 x t x_t xt

这个公式表示的是条件概率 q ( x t ∣ x t − 1 ) q(x_t \mid x_{t-1}) q(xtxt1) 被定义为一个多维高斯分布,其具体参数如下:

  1. 条件概率 q ( x t ∣ x t − 1 ) q(x_t \mid x_{t-1}) q(xtxt1)
    这是给定前一个时间步的潜变量 x t − 1 x_{t-1} xt1 后,生成当前时间步潜变量 x t x_t xt 的概率分布。

  2. 高斯分布 N ( ⋅ ; μ , Σ ) N(\cdot; \mu, \Sigma) N(;μ,Σ)
    这个条件概率是一个高斯分布,具有均值 μ \mu μ 和协方差矩阵 Σ \Sigma Σ

  3. 均值 μ = 1 − β t x t − 1 \mu = \sqrt{1 - \beta_t} x_{t-1} μ=1βt xt1
    生成 x t x_t xt 的均值是 1 − β t \sqrt{1 - \beta_t} 1βt 倍的 x t − 1 x_{t-1} xt1。这里的 β t \beta_t βt 是一个小的正数,通常用于控制每一步添加噪声的程度。这个均值表示在生成新变量时,前一个时间步的潜变量 x t − 1 x_{t-1} xt1 被缩放并作为当前变量的期望值。

  4. 协方差矩阵 Σ = β t I \Sigma = \beta_t I Σ=βtI
    协方差矩阵为 β t I \beta_t I βtI,其中 I I I 是单位矩阵。这表示生成 x t x_t xt 时加入了方差为 β t \beta_t βt 的噪声。噪声的大小由 β t \beta_t βt 决定,不同的时间步 t t t 可能有不同的 β t \beta_t βt 值。

过程解释

在扩散模型的前向过程中,每一步 q ( x t ∣ x t − 1 ) q(x_t \mid x_{t-1}) q(xtxt1) 的操作是对前一个潜变量 x t − 1 x_{t-1} xt1 进行缩放,同时加入一定的高斯噪声。通过多次迭代这样的操作,模型可以将原始数据 x 0 x_0 x0 逐步转化为一个近似于标准正态分布的随机变量 x T x_T xT

这个过程的目的在于引入噪声,从而破坏数据的结构,为后续的反向生成过程提供基础。在反向过程中,模型会尝试逆转这些噪声影响,以生成与原始数据分布相似的样本。

(3) E [ − log ⁡ p θ ( x 0 ) ] ≤ E q [ − log ⁡ p θ ( x 0 : T ) q ( x 1 : T ∣ x 0 ) ] = E q [ − log ⁡ p ( x T ) − ∑ t ≥ 1 log ⁡ p θ ( x t − 1 ∣ x t ) q ( x t ∣ x t − 1 ) ] = : L \mathbb{E}[- \log p_{\theta}(x_0)] \leq \mathbb{E}_q\left[- \log \frac{p_{\theta}(x_{0:T})}{q(x_{1:T} \mid x_0)}\right] = \mathbb{E}_q\left[- \log p(x_T) - \sum_{t \geq 1} \log \frac{p_{\theta}(x_{t-1} \mid x_t)}{q(x_t \mid x_{t-1})}\right] =: L E[logpθ(x0)]Eq[logq(x1:Tx0)pθ(x0:T)]=Eq[logp(xT)t1logq(xtxt1)pθ(xt1xt)]=:L

这个公式描述了在扩散模型中,通过变分推断来优化模型的损失函数 L L L。公式中的内容涉及到模型目标的上界(upper bound),并利用变分下界(Variational Lower Bound, VLB)进行估计。

可以拆分为以下部分来理解:

  1. 目标函数 E [ − log ⁡ p θ ( x 0 ) ] \mathbb{E}[- \log p_{\theta}(x_0)] E[logpθ(x0)]
    这里的目标函数是最大化模型生成真实数据 x 0 x_0 x0 的对数概率,即最小化其负对数概率。由于直接优化这个目标比较困难,模型引入了一个上界(upper bound)来进行优化。

  2. 变分下界 E q [ − log ⁡ p θ ( x 0 : T ) q ( x 1 : T ∣ x 0 ) ] \mathbb{E}_q\left[- \log \frac{p_{\theta}(x_{0:T})}{q(x_{1:T} \mid x_0)}\right] Eq[logq(x1:Tx0)pθ(x0:T)]
    这是目标函数的上界。通过引入潜变量 x 1 : T x_{1:T} x1:T 和近似分布 q ( x 1 : T ∣ x 0 ) q(x_{1:T} \mid x_0) q(x1:Tx0),模型对真实分布 p θ ( x 0 ) p_{\theta}(x_0) pθ(x0) 进行近似估计。这个上界可以通过变分推断的方式进行优化。

  3. 公式展开 E q [ − log ⁡ p ( x T ) − ∑ t ≥ 1 log ⁡ p θ ( x t − 1 ∣ x t ) q ( x t ∣ x t − 1 ) ] \mathbb{E}_q\left[- \log p(x_T) - \sum_{t \geq 1} \log \frac{p_{\theta}(x_{t-1} \mid x_t)}{q(x_t \mid x_{t-1})}\right] Eq[logp(xT)t1logq(xtxt1)pθ(xt1xt)]
    这个公式展开将分布 p θ ( x 0 : T ) p_{\theta}(x_{0:T}) pθ(x0:T) 表示为联合分布的形式,并将其与 q ( x 1 : T ∣ x 0 ) q(x_{1:T} \mid x_0) q(x1:Tx0) 的比值展开。这个比值的对数被拆解成两部分:初始分布 p ( x T ) p(x_T) p(xT) 和逐步生成的条件分布比值 p θ ( x t − 1 ∣ x t ) q ( x t ∣ x t − 1 ) \frac{p_{\theta}(x_{t-1} \mid x_t)}{q(x_t \mid x_{t-1})} q(xtxt1)pθ(xt1xt) 的对数和。

  4. 损失函数 L L L
    最终这个公式定义了损失函数 L L L,它是整个优化过程中需要最小化的目标。通过最小化这个损失函数,模型可以学到如何通过反向生成过程 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1} \mid x_t) pθ(xt1xt) 逐步生成接近真实数据 x 0 x_0 x0 的样本。

过程解释

在扩散模型的训练过程中,这个损失函数 L L L 被用来引导模型学习反向生成过程。损失函数的第一项 − log ⁡ p ( x T ) - \log p(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}(x_{t-1} \mid x_t)}{q(x_t \mid x_{t-1})} t1logq(xtxt1)pθ(xt1xt) 表示在每一步中,从当前时间步 x t x_t xt 生成前一个时间步 x t − 1 x_{t-1} xt1 的难度。

通过优化这个损失函数,模型学会了如何有效地从噪声中逐步恢复到原始数据分布,从而生成与训练数据相似的样本。

公式详细推导

E [ − log ⁡ p θ ( x 0 ) ] ≤ − log ⁡ E [ p θ ( x 0 ) ] = − log ⁡ E [ p θ ( x 0 : T ) q ( x 1 : T ∣ x 0 ) ] ≤ E [ − log ⁡ p θ ( x 0 : T ) q ( x 1 : T ∣ x 0 ) ] = E [ − log ⁡ p θ ( x 0 : T ) + log ⁡ q ( x 1 : T ∣ x 0 ) ] = E [ − log ⁡ p ( x T ) − ∑ t = 1 T log ⁡ p θ ( x t − 1 ∣ x t ) + ∑ t = 1 T log ⁡ q ( x t ∣ x t − 1 ) ] = E [ − log ⁡ p ( x T ) − ∑ t ≥ 1 log ⁡ p θ ( x t − 1 ∣ x t ) q ( x t ∣ x t − 1 ) ] \begin{align*} & \mathbb{E}[-\log p_\theta(x_0)] \\ &\leq -\log \mathbb{E}[p_\theta(x_0)] \tag{Jensen's inequality} \\ &= -\log \mathbb{E}\left[\frac{p_\theta(x_{0:T})}{q(x_{1:T}|x_0)}\right] \tag{Importance sampling} \\ &\leq \mathbb{E}\left[-\log\frac{p_\theta(x_{0:T})}{q(x_{1:T}|x_0)}\right] \tag{Jensen's inequality} \\ &= \mathbb{E}[-\log p_\theta(x_{0:T}) + \log q(x_{1:T}|x_0)] \\ &= \mathbb{E}\left[-\log p(x_T) - \sum_{t=1}^T \log p_\theta(x_{t-1}|x_t) + \sum_{t=1}^T \log q(x_t|x_{t-1})\right] \\ &= \mathbb{E}\left[-\log p(x_T) - \sum_{t\geq1} \log \frac{p_\theta(x_{t-1}|x_t)}{q(x_t|x_{t-1})}\right] \end{align*} E[logpθ(x0)]logE[pθ(x0)]=logE[q(x1:Tx0)pθ(x0:T)]E[logq(x1:Tx0)pθ(x0:T)]=E[logpθ(x0:T)+logq(x1:Tx0)]=E[logp(xT)t=1Tlogpθ(xt1xt)+t=1Tlogq(xtxt1)]=E[logp(xT)t1logq(xtxt1)pθ(xt1xt)](Jensen’s inequality)(Importance sampling)(Jensen’s inequality)

(4) q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) q(x_t|x_0) = \mathcal{N} \left(x_t; \sqrt{\bar{\alpha}_t}x_0, (1 - \bar{\alpha}_t)I \right) q(xtx0)=N(xt;αˉt x0,(1αˉt)I)

这个公式描述了在扩散模型(Diffusion Models)中的一个关键步骤,即从初始数据 x 0 x_0 x0 到时间步 t t t 时刻的中间状态 x t x_t xt 的条件分布 q ( x t ∣ x 0 ) q(x_t|x_0) q(xtx0)

  • q ( x t ∣ x 0 ) q(x_t|x_0) q(xtx0): 这是一个条件概率分布,表示给定初始状态 x 0 x_0 x0 后,在时间步 t t t 时刻的中间状态 x t x_t xt 的概率分布。

  • N ( ⋅ ) \mathcal{N}(\cdot) N(): 表示一个正态分布(高斯分布)。正态分布由两个参数决定:均值和协方差矩阵。

  • α ˉ t x 0 \sqrt{\bar{\alpha}_t}x_0 αˉt x0: 这是正态分布的均值,表示 x t x_t xt 的期望值是初始状态 x 0 x_0 x0 经过缩放因子 α ˉ t \sqrt{\bar{\alpha}_t} αˉt 调整后的结果。

  • ( 1 − α ˉ t ) I (1 - \bar{\alpha}_t)I (1αˉt)I: 这是正态分布的协方差矩阵,表示 x t x_t xt 相对于均值的随机波动。 I I I 是单位矩阵,表明各个维度的波动是独立且等方差的,而 ( 1 − α ˉ t ) (1 - \bar{\alpha}_t) (1αˉt) 则决定了波动的幅度。

整体理解

这个公式表明,给定 x 0 x_0 x0 后, x t x_t xt 是一个以 α ˉ t x 0 \sqrt{\bar{\alpha}_t}x_0 αˉt x0 为均值、以 ( 1 − α ˉ t ) I (1 - \bar{\alpha}_t)I (1αˉt)I 为协方差的正态分布随机变量。随着时间步 t t t 的变化, α ˉ t \bar{\alpha}_t αˉt 的值会影响 x t x_t xt 的分布,即从接近 x 0 x_0 x0的集中分布逐渐扩展为更分散的分布。这种形式用于在扩散模型中模拟从数据到噪声的逐渐退化过程。

公式详细推导

在这里插入图片描述

(5)

E q [ D K L ( q ( x T ∣ x 0 ) ∥ p ( x T ) ) ⏟ L T + ∑ t > 1 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 ] \mathbb{E}_q \left[ \underbrace{D_{KL}(q(x_T \mid x_0) \parallel p(x_T))}_{L_T} + \sum_{t>1} \underbrace{D_{KL}(q(x_{t-1} \mid x_t, x_0) \parallel p_\theta(x_{t-1} \mid x_t))}_{L_{t-1}} - \underbrace{\log p_\theta(x_0 \mid x_1)}_{L_0} \right] Eq LT DKL(q(xTx0)p(xT))+t>1Lt1 DKL(q(xt1xt,x0)pθ(xt1xt))L0 logpθ(x0x1)
这个公式是扩散模型中变分下界(ELBO)的一个重要表达式。让我们逐部分解析这个公式:

  1. 整体结构:
    这是一个在分布q下的期望 E q \mathbb{E}_q Eq,其中包含三个主要部分: L T L_T LT, L t − 1 L_{t-1} Lt1, 和 L 0 L_0 L0

  2. L T L_T LT 项:

    D K L ( q ( x T ∣ x 0 ) ∥ p ( x T ) ) ⏟ L T \underbrace{D_{KL}(q(x_T \mid x_0) \parallel p(x_T))}_{L_T} LT DKL(q(xTx0)p(xT))

    这是最终时间步 T T T K L KL KL散度。它衡量了给定初始状态 x 0 x_0 x0的条件下,最终状态 x T x_T xT的后验分布 q ( x T ∣ x 0 ) q(x_T|x_0) q(xTx0)与先验分布 p ( x T ) p(x_T) p(xT)之间的差异。

  3. L t − 1 L_{t-1} Lt1 项:

    ∑ t > 1 D K L ( q ( x t − 1 ∣ x t , x 0 ) ∥ p θ ( x t − 1 ∣ x t ) ) ⏟ L t − 1 \sum_{t>1} \underbrace{D_{KL}(q(x_{t-1} \mid x_t, x_0) \parallel p_\theta(x_{t-1} \mid x_t))}_{L_{t-1}} t>1Lt1 DKL(q(xt1xt,x0)pθ(xt1xt))

    这是一个求和项,涵盖了从 t = 2 t=2 t=2 T T T 的所有时间步。每个时间步计算了两个分布之间的 K L KL KL散度:

    • q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1} | x_t, x0) q(xt1xt,x0):给定当前状态xt和初始状态x0的情况下,前一时间步状态 x t − 1 x_{t-1} xt1的后验分布。
    • p θ ( x t − 1 ∣ x t ) p_θ(x_{t-1} | x_t) pθ(xt1xt):模型预测的从 x t x_t xt x t − 1 x_{t-1} xt1的逆向转移概率。

    这个 K L KL KL散度衡量了真实的后验分布与模型预测的分布之间的差异。

  4. L 0 L_0 L0 项:
    log ⁡ p θ ( x 0 ∣ x 1 ) ⏟ L 0 \underbrace{\log p_\theta(x_0 \mid x_1)}_{L_0} L0 logpθ(x0x1)
    这是模型对初始状态 x 0 x_0 x0的对数似然,给定第一个扩散步骤的状态 x 1 x_1 x1

  5. 负号:
    注意L0项前面有一个负号,这意味着我们要最大化这一项,而最小化其他项。

这个公式的目标是最小化整体期望。在训练过程中,我们通过优化模型参数 θ θ θ 来实现这一目标。具体来说:

  • 最小化 L T L_T LT使得最终状态的分布接近先验。
  • 最小化 L t − 1 L_{t-1} Lt1使得模型的逆向过程尽可能接近真实的后验分布。
  • 最大化 L 0 L_0 L0使得模型能够准确重构初始数据。

这个公式捕捉了扩散模型的核心思想:通过一系列的扩散步骤将数据转换为噪声,然后学习一个逆过程来重构数据。

公式详细推导

L = E q [ − log ⁡ p θ ( x 0 : T ) + log ⁡ q ( x 1 : T ∣ x 0 ) ] = E q [ − log ⁡ p ( x T ) − ∑ t ≥ 1 log ⁡ p θ ( x t − 1 ∣ x t ) − log ⁡ p θ ( x 0 ∣ x 1 ) + log ⁡ q ( x 1 : T ∣ x 0 ) ] = E q [ − log ⁡ p ( x T ) + log ⁡ q ( x T ∣ x 0 ) − ∑ t > 1 log ⁡ p θ ( x t − 1 ∣ x t ) + ∑ t > 1 log ⁡ q ( x t − 1 ∣ x t , x 0 ) − log ⁡ p θ ( x 0 ∣ x 1 ) ] = E q [ log ⁡ q ( x T ∣ x 0 ) − log ⁡ p ( x T ) ] + ∑ t > 1 E q [ log ⁡ q ( x t − 1 ∣ x t , x 0 ) − log ⁡ p θ ( x t − 1 ∣ x t ) ] − E q [ log ⁡ p θ ( x 0 ∣ x 1 ) ] = 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 ) ) − E q [ log ⁡ p θ ( x 0 ∣ x 1 ) ] = D K L ( q ( x T ∣ x 0 ) ∥ p ( x T ) ) ⏟ L T + ∑ t > 1 D K L ( q ( x t − 1 ∣ x t , x 0 ) ∥ p θ ( x t − 1 ∣ x t ) ) ⏟ L t − 1 − E q [ log ⁡ p θ ( x 0 ∣ x 1 ) ] ⏟ L 0 \begin{align*} \mathcal{L} &= \mathbb{E}_q[-\log p_\theta(x_{0:T}) + \log q(x_{1:T}|x_0)] \\[10pt] &= \mathbb{E}_q[-\log p(x_T) - \sum_{t\geq1} \log p_\theta(x_{t-1}|x_t) - \log p_\theta(x_0|x_1) + \log q(x_{1:T}|x_0)] \\[10pt] &= \mathbb{E}_q[-\log p(x_T) + \log q(x_T|x_0) - \sum_{t>1} \log p_\theta(x_{t-1}|x_t) + \sum_{t>1} \log q(x_{t-1}|x_t,x_0) - \log p_\theta(x_0|x_1)] \\[10pt] &= \mathbb{E}_q[\log q(x_T|x_0) - \log p(x_T)] + \sum_{t>1} \mathbb{E}_q[\log q(x_{t-1}|x_t,x_0) - \log p_\theta(x_{t-1}|x_t)] - \mathbb{E}_q[\log p_\theta(x_0|x_1)] \\[10pt] &= D_{KL}(q(x_T|x_0) \parallel p(x_T)) + \sum_{t>1} D_{KL}(q(x_{t-1}|x_t,x_0) \parallel p_\theta(x_{t-1}|x_t)) - \mathbb{E}_q[\log p_\theta(x_0|x_1)] \\[10pt] &= \underbrace{D_{KL}(q(x_T|x_0) \parallel p(x_T))}_{L_T} + \underbrace{\sum_{t>1} D_{KL}(q(x_{t-1}|x_t,x_0) \parallel p_\theta(x_{t-1}|x_t))}_{L_{t-1}} - \underbrace{\mathbb{E}_q[\log p_\theta(x_0|x_1)]}_{L_0} \end{align*} L=Eq[logpθ(x0:T)+logq(x1:Tx0)]=Eq[logp(xT)t1logpθ(xt1xt)logpθ(x0x1)+logq(x1:Tx0)]=Eq[logp(xT)+logq(xTx0)t>1logpθ(xt1xt)+t>1logq(xt1xt,x0)logpθ(x0x1)]=Eq[logq(xTx0)logp(xT)]+t>1Eq[logq(xt1xt,x0)logpθ(xt1xt)]Eq[logpθ(x0x1)]=DKL(q(xTx0)p(xT))+t>1DKL(q(xt1xt,x0)pθ(xt1xt))Eq[logpθ(x0x1)]=LT DKL(q(xTx0)p(xT))+Lt1 t>1DKL(q(xt1xt,x0)pθ(xt1xt))L0 Eq[logpθ(x0x1)]

(6)&(7)

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

其中:

μ ~ t ( x t , x 0 ) : = α ˉ t − 1 β t 1 − α ˉ t x 0 + α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t \tilde{\mu}_t(x_t, x_0) := \frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1 - \bar{\alpha}_t}x_0 + \frac{\sqrt{\alpha_t}(1 - \bar{\alpha}_{t-1})}{1 - \bar{\alpha}_t}x_t μ~t(xt,x0):=1αˉtαˉt1 βtx0+1αˉtαt (1αˉt1)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αˉt1βt

公式理解

  1. 整体结构:
    这个公式给出了给定 x t x_t xt x 0 x_0 x0 的情况下, x t − 1 x_{t-1} xt1 的条件分布。这是一个高斯分布,均值为 μ ~ t ( x t , x 0 ) \tilde{\mu}_t(x_t, x_0) μ~t(xt,x0),协方差矩阵为 β ~ t I \tilde{\beta}_t I β~tI

  2. 均值 μ ~ t ( x t , x 0 ) \tilde{\mu}_t(x_t, x_0) μ~t(xt,x0)

    • 这是 x 0 x_0 x0 x t x_t xt 的加权组合。
    • α ˉ t − 1 β t 1 − α ˉ t \frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1 - \bar{\alpha}_t} 1αˉtαˉt1 βt x 0 x_0 x0 的权重。
    • α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t \frac{\sqrt{\alpha_t}(1 - \bar{\alpha}_{t-1})}{1 - \bar{\alpha}_t} 1αˉtαt (1αˉt1) x t x_t xt 的权重。
    • 这个组合反映了 x t − 1 x_{t-1} xt1 如何同时依赖于初始状态 x 0 x_0 x0 和当前状态 x t x_t xt
  3. 方差 β ~ t \tilde{\beta}_t β~t

    • 这个值决定了分布的不确定性。
    • 它是 β t \beta_t βt 的一个缩放版本,缩放因子为 1 − α ˉ t − 1 1 − α ˉ t \frac{1 - \bar{\alpha}_{t-1}}{1 - \bar{\alpha}_t} 1αˉt1αˉt1
  4. 参数解释:

    • α t = 1 − β t \alpha_t = 1 - \beta_t αt=1βt,其中 β t \beta_t βt 是每个时间步的噪声水平。
    • α ˉ t = ∏ s = 1 t α s \bar{\alpha}_t = \prod_{s=1}^t \alpha_s αˉt=s=1tαs,是累积的信号保留率。
    • 1 − α ˉ t 1 - \bar{\alpha}_t 1αˉt 代表了累积的噪声水平。
  5. 直观理解:

    • 均值公式中的两个权重之和为1,这保证了 x t − 1 x_{t-1} xt1 x 0 x_0 x0 x t x_t xt 的有效插值。
    • t t t 接近 T T T 时, x t x_t xt 的权重会增加,因为此时 x t x_t xt 包含了更多关于最终状态的信息。
    • t t t 接近 0 0 0 时, x 0 x_0 x0 的权重会增加,因为此时初始状态对 x t − 1 x_{t-1} xt1 的影响更大。

这个公式在扩散模型中非常重要,因为它允许我们在给定观察到的数据 x 0 x_0 x0 和当前状态 x t x_t xt 的情况下,推断前一时间步的状态 x t − 1 x_{t-1} xt1。这是实现逆向扩散过程(从噪声重构数据)的关键。

公式详细推导

在这里插入图片描述

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

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

相关文章

AI预测福彩3D采取888=3策略+和值012路或胆码测试8月16日新模型预测第58弹

经过近60期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,57期一共只错了5次,这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了,大…

IoTSharp:基于 .NET 6.0 的开源物联网平台

目录 前言 项目介绍 为什么会有 IoTSharp? IoTSharp 能做什么? IoTSharp 的亮点 项目技术 1、编程语言 2、系统框架 3、数据库支持 4、消息队列与 EventBus 5、EventBus 存储 项目使用 1、下载 2、启动 3、注册服务 4、初始化influxdb 5…

实现清除默认样式的操作

1、在npm官网中搜索reset.scss->点击第一个。(有时候会更新一些代码,第一个出现的不一定就是我图片中的这个,不一定要跟我图片中的代码一致,只需要选择第一个出现的即可) 2、点击Code选项。 3、打开Code选项下面的t…

在私有化过程中不要忽视LLMs的双重逻辑能力:医学领域的数据密集型分析

链接:https://arxiv.org/abs/2309.04198 原标题:Don’t Ignore Dual Logic Ability of LLMs while Privatizing: A Data-Intensive Analysis in Medical Domain 日期:Submitted on 8 Sep 2023 摘要 大量的研究致力于通过喂养特定领域的数据…

智能楼宇控制系统的革新——M31系列分布式IO模块

随着物联网技术的飞速发展,智能楼宇控制系统正逐渐成为现代建筑的标配。它不仅能够提高建筑的能源效率,还能提升用户的生活品质和舒适度。在这样的背景下,分布式IO模块作为智能楼宇控制系统的核心组成部分,发挥着至关重要的作用。…

深度学习9--目标检测

1.概念介绍 目标检测不仅可以检测数字,而且可以检测动物的种类、汽车的种类等。例如,自动驾驶车辆需要自动识别前方物体是车辆还是行人,需要自动识别道路两 旁的指示牌和前方的红绿灯颜色。对于自动检测的算法,有两个要求&#xf…

聊聊场景及场景测试

在我们进行测试过程中,有一种黑盒测试叫场景测试,我们完全是从用户的角度去理解系统,从而可以挖掘用户的隐含需求。 场景是指用户会使用这个系统来完成预定目标的所有情况的集合。 场景本身也代表了用户的需求,所以我们可以认为…

项目管理工具的秘密:如何选出最佳系统

国内外主流的 10 款project项目管理系统对比:PingCode、Worktile、用友、泛微、蓝凌、Zoho Projects、Asana、Trello、Basecamp、Jira。 在寻找合适的项目管理系统时,你是否感到选择众多、功能复杂让人难以抉择?这正是许多项目经理面临的痛点…

计算机毕业设计选题推荐-个性化智能学习系统-Java/Python项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

MySQL架构与数据库基础

文章目录 一、数据库概念二、数据库的简单概念三、SQL四、MySQL架构 一、数据库概念 数据库是一个以某种由组织的方式存储的数据集合。我们可以把数据库想象称为一个文件柜。此文件柜是一个存放数据的物理位置,不管数据是什么以及如何组织的。数据库本质也需要像文…

C++-类与对象(上篇)

一、目标: 1. 面向过程和面向对象初步认识 2. 类的引入 3. 类的定义 4. 类的访问限定符及封装 5. 类的作用域 6. 类的实例化 7. 类的对象大小的计算 8. 类成员函数的 this 指针 二、对类与对象的介绍: 1.面向过程和面向对象初步认识 &#xff1a…

调用FluentUI中的折线图散点图等

文章目录 0.文章介绍1.源码位置2.线性图:基础版本2.1效果图2.2代码 3.线形图:封装版本3.1 效果图3.2 代码 0.文章介绍 调用项目FluentUI中的散点图、折线图组件,做定制化改进。 项目FluentUI源码位置:https://github.com/zhuzich…

手把手教你SpringBoot项目将Swagger升级3.0详解

SpringBoot项目将Swagger升级3.0 前言 这阵子观察到Swagger官方已经升级到了3.0的版本,想着升级体验一下最新的版本 新特性 移除了2.x版本的冲突版本,移除了guava等移除了EnableSwagger2新增了springfox-boot-starter… 引入依赖 新版本中&#xf…

三十八、【人工智能】【机器学习】【监督贝叶斯网络(Bayesian Networks)学习】- 算法模型

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

数据库-DML语言-数据操作语言

定义 DML是对表中数据进行操作的语言,涉及的关键字:INSERT UPDATE DELETE INSERT:向表中插入新数据的语句UPDATE:修改表中数据的语句DELETE:删除表中数据的语句 准备工作 USE mydb; 使用mydb库 CREATE TABLE person( 创建表personname VARCHAR(30),age INT…

AAAI‘25 今日截稿!SD 核心成员开源比 Midjourney 还强的文生图模型,现已提供一键启动

Midjourney 真的不香了!继 Stable Diffusion 3 于 6 月开源后,Stability AI 前核心成员 Robin Rombach 带领着新团队在本月初推出了 FLUX.1 图像生成模型家族。官方声称 FLUX.1 在多个关键指标上超越了 Midjourney v6.0 和 DALLE 3 等文生图的头部模型&a…

VMware Workstation Pro 安装 Ubuntu Server

这里写目录标题 VMware Workstation Pro 安装 Ubuntu Server1. 启动选项2. 系统语言3. 安装程序升级4. 键盘配置5. 安装类型6. 网卡配置7. 代理配置8. 系统镜像配置9. 硬盘配置10. 账户配置11. Ubuntu Pro 版本12. SSH 服务13. 推荐软件14. 安装成功15. 第一次重启报错16. 登录…

JavaScript调试:console 命令的使用

1、console 命令介绍 console 对象用于 JavaScript 调试。JavaScript 原生中默认是没有 console 对象,这是宿主对象(也就是浏览器)提供的内置对象。 用于访问调试控制台,在不同的浏览器里效果可能不同。 console 对象常见的两个用途&#x…

【计算机操作系统】覆盖与交换

覆盖与交换 覆盖与交换是实现内存空间扩充的技术,虚拟存储技术后续会详细讲解 覆盖技术 为了解决程序大小超过物理内存总和的问题引入了覆盖技术 覆盖技术的思想: 将程序分为多个段(多个模块),常用的段常驻内存&…

Go Kafka 操作详解

Go Kafka 操作详解 引言 Apache Kafka 是一个分布式流处理平台,广泛应用于构建实时数据管道和流应用程序。在 Go 语言中,使用 github.com/IBM/sarama 库可以方便地与 Kafka 进行交互。本文将详细介绍如何使用 Sarama 库在 Go 中实现 Kafka 的生产者和消…