DDIM详解

DDIM详解

参考:https://www.bilibili.com/video/BV1VP411u71p/

虽然 DDIM 现在主要用于加速采样,但他的实际意义远不止于此。本文将首先回顾 DDPM 的训练和采样过程,再讨论 DDPM 与 DDIM 的关系,然后推导 DDIM 的采样公式,最后给出几个不同的理解 DDIM 的角度。

DDPM回顾

DDPM 实际是建模两个分布:diffusion 过程的分布 q ( x t ∣ x 0 ) q(x_t|x_0) q(xtx0) q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1) 和 reverse 过程的分布 q ( x t − 1 ∣ x t ) q(x_{t-1}|x_t) q(xt1xt)

diffusion 过程:
q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) x t = α ˉ t x 0 + 1 − α ˉ t ϵ ,     ϵ ∼ N ( 0 , I ) q(x_t|x_0)=\mathcal{N}(x_t;\sqrt{\bar\alpha_t}x_0,(1-\bar{\alpha}_t)I)\\ x_t=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\epsilon,\ \ \ \epsilon\sim\mathcal{N}(0,I) q(xtx0)=N(xt;αˉt x0,(1αˉt)I)xt=αˉt x0+1αˉt ϵ,   ϵN(0,I)
reverse 过程:
q ( x t − 1 ∣ x t ) = q ( x t − 1 ∣ x t , x 0 ) = q ( x t ∣ x t − 1 ) q ( x t − 1 ∣ x 0 ) q ( x t ∣ x 0 ) = N ( x t − 1 ; μ ( x t , x 0 ) , σ t 2 I ) q(x_{t-1}|x_t)=q(x_{t-1}|x_t,x_0)=\frac{q(x_t|x_{t-1})q(x_{t-1}|x_0)}{q(x_t|x_0)}=\mathcal{N}(x_{t-1};\mu(x_t,x_0),\sigma_t^2I)\\ q(xt1xt)=q(xt1xt,x0)=q(xtx0)q(xtxt1)q(xt1x0)=N(xt1;μ(xt,x0),σt2I)
其中:
μ ( x t , x 0 ) = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + α ˉ t − 1 β t 1 − α ˉ t x 0 σ t 2 = 1 − α ˉ t − 1 1 − α ˉ t β t \mu(x_t,x_0)=\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar\alpha_{t}}x_t+\frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar\alpha_t}x_0 \\ \sigma_t^2=\frac{1-\bar\alpha_{t-1}}{1-\bar\alpha_t}\beta_t μ(xt,x0)=1αˉtαt (1αˉt1)xt+1αˉtαˉt1 βtx0σt2=1αˉt1αˉt1βt
之前的文章已经详细介绍过推导过程,这里仅列出结论。

强调一个点:注意 reverse 过程中的 x 0 x_0 x0 是未知的,因此这里每一步的 x 0 x_0 x0 实际都是该步对 x 0 x_0 x0 的估计值,最终的 x 0 x_0 x0 相当于是每一步估计 x 0 x_0 x0 的加权和。DDPM 的 reverse 过程的每一步可以理解为做了两件事情:

  1. 根据 x t x_t xt 和 UNet 预测出的噪声 ϵ θ ( x t , t ) \epsilon_\theta(x_t,t) ϵθ(xt,t) 估计当前步的 x ^ 0 ∣ t \hat{x}_{0|t} x^0∣t x ^ 0 ∣ t = 1 α ˉ t ( x t − 1 − α ˉ t ϵ θ ( x t , t ) ) \hat{x}_{0|t}=\frac{1}{\sqrt{\bar{\alpha}_t}}(x_t-\sqrt{1-\bar\alpha_t}\epsilon_\theta(x_t,t)) x^0∣t=αˉt 1(xt1αˉt ϵθ(xt,t))
  2. 计算出 x t − 1 x_{t-1} xt1 x t − 1 = μ ( x t , x ^ 0 ∣ t ) + σ t ϵ ,      ϵ ∼ N ( 0 , I ) x_{t-1}=\mu(x_t,\hat{x}_{{0|t}})+\sigma_t\epsilon,\ \ \ \ \epsilon\sim\mathcal{N}(0,I) xt1=μ(xt,x^0∣t)+σtϵ,    ϵN(0,I)

DDIM理解

在 DDPM 的采样公式 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0) 中 ,当我们已知 x 0 x_0 x0 时,当然可以通过扩散公式来计算 x t − 1 x_{t-1} xt1 。但在采样时,我们显然并不知道真实的 x 0 x_0 x0,因此,我们使用 x t x_t xt 来计算 x 0 x_0 x0 的估计值 x 0 ∣ t x_{0|t} x0∣t ,然后计算 x t − 1 x_{t-1} xt1
q ( x t − 1 ∣ x t , x 0 ) = α ˉ t − 1 x 0 + 1 − α ˉ t − 1   ϵ ,     ϵ ∼ N ( 0 , I ) = α ˉ t − 1 x ^ 0 ∣ t + 1 − α ˉ t − 1   ϵ = α ˉ t − 1 1 α ˉ t ( x t − 1 − α ˉ t ϵ θ ( x t , t ) ) + 1 − α ˉ t − 1   ϵ \begin{aligned} q(x_{t-1}|x_t,x_0)&=\sqrt{\bar{\alpha}_{t-1}}x_{0}+\sqrt{1-\bar{\alpha}_{t-1}}\ \epsilon,\ \ \ \epsilon\sim\mathcal{N}(0,I) \\ &=\sqrt{\bar\alpha_{t-1}}\hat{x}_{0|t}+\sqrt{1-\bar{\alpha}_{t-1}}\ \epsilon \\ &=\sqrt{\bar\alpha_{t-1}}\frac{1}{\sqrt{\bar{\alpha}_t}}(x_t-\sqrt{1-\bar\alpha_t}\epsilon_\theta(x_t,t))+\sqrt{1-\bar{\alpha}_{t-1}}\ \epsilon \end{aligned} q(xt1xt,x0)=αˉt1 x0+1αˉt1  ϵ,   ϵN(0,I)=αˉt1 x^0∣t+1αˉt1  ϵ=αˉt1 αˉt 1(xt1αˉt ϵθ(xt,t))+1αˉt1  ϵ
这与我们上面复习 DDPM 时的思路相同。

对于这个式子:
q ( x t − 1 ∣ x t , x 0 ) = α ˉ t − 1 x ^ 0 ∣ t + 1 − α ˉ t − 1   ϵ q(x_{t-1}|x_t,x_0)=\sqrt{\bar\alpha_{t-1}}\hat{x}_{0|t}+\sqrt{1-\bar{\alpha}_{t-1}}\ \epsilon q(xt1xt,x0)=αˉt1 x^0∣t+1αˉt1  ϵ
我们知道 ϵ \epsilon ϵ 是采样自标准高斯分布,我们可以将其替换为模型估计的噪声 ϵ θ ( x t , t ) \epsilon_\theta(x_t,t) ϵθ(xt,t)
q ( x t − 1 ∣ x t , x 0 ) = α ˉ t − 1 x ^ 0 ∣ t + 1 − α ˉ t − 1   ϵ θ ( x t , t ) q(x_{t-1}|x_t,x_0)=\sqrt{\bar\alpha_{t-1}}\hat{x}_{0|t}+\sqrt{1-\bar{\alpha}_{t-1}}\ \epsilon_\theta(x_t,t) q(xt1xt,x0)=αˉt1 x^0∣t+1αˉt1  ϵθ(xt,t)
同时考虑式 (5,6),我们可以将这两种噪声都考虑进来,则有:
q ( x t − 1 ∣ x t , x 0 ) = α ˉ t − 1 x ^ 0 ∣ t + 1 − α ˉ t − 1 − σ t 2 ϵ θ + σ t ϵ q(x_{t-1}|x_t,x_0)=\sqrt{\bar\alpha_{t-1}}\hat{x}_{0|t}+\sqrt{1-\bar{\alpha}_{t-1}-\sigma^2_t}\epsilon_\theta+\sigma_t\epsilon q(xt1xt,x0)=αˉt1 x^0∣t+1αˉt1σt2 ϵθ+σtϵ
注意这里要保证加的两个噪声的方差和之前一样,即 1 − α ˉ t − 1 − σ t 2 2 + σ t 2 = 1 − α ˉ t − 1 2 \sqrt{1-\bar{\alpha}_{t-1}-\sigma^2_t}^2+\sigma^2_t=\sqrt{1-\bar{\alpha}_{t-1}}^2 1αˉt1σt2 2+σt2=1αˉt1 2 ,明显上式中是满足的。

**观察上述推导过程,其实有一个 DDPM 中的条件我们是一直没有用到的。即: q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1) 。 这件事情其实是 DDIM 的核心,即丢弃掉 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1) 这个条件。这样一来,我们的采样公式就不依赖于两步是相邻的,从而可以实现跳步的采样,即 q ( x s ∣ x k , x 0 ) q(x_s|x_k,x_0) q(xsxk,x0) (因此 DDIM 可以用来加速采样)。**我们有更通用的 DDIM 的采样公式:
x s = q ( x s ∣ x k , x 0 ) = α ˉ s x ^ 0 ∣ s + 1 − α ˉ s − σ k 2 ϵ θ + σ k ϵ x_s=q(x_s|x_k,x_0)=\sqrt{\bar\alpha_{s}}\hat{x}_{0|s}+\sqrt{1-\bar{\alpha}_s-\sigma^2_k}\epsilon_\theta+\sigma_k\epsilon xs=q(xsxk,x0)=αˉs x^0∣s+1αˉsσk2 ϵθ+σkϵ
在这个公式中,我们丢弃了 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1) 这个约束条件,实现了从任意步 k k k 到任意步 s s s 的跳步采样。在 DDPM 采样时,必须一步一步进行,而使用 DDIM 采样,则可以自己定义任意的采样步数与步长:
DDPM Samping :      T = 1000 , 999 , 998 , . . . , 2 , 1 , 0 DDIM Samping :      T = 1000 , 888 , 666 , . . . , 123 , 0 \text{DDPM Samping}:\ \ \ \ T=1000,999,998,...,2,1,0\\ \text{DDIM Samping}:\ \ \ \ T=1000,888,666,...,123,0 DDPM Samping:    T=1000,999,998,...,2,1,0DDIM Samping:    T=1000,888,666,...,123,0

DDIM 丢掉了 DDPM 中的一个条件 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1) ,可以进行跳步采样,实际上是一种更一般的形式。也就是说 DDIM 加一个条件约束 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1) ,即可推出 DDPM,DDPM 去掉该条件,即可得到更一般的 DDIM。

在这里插入图片描述

DDIM推导

接下来我们来正式地推导一下 DDIM。

首先整理一下我们推到的目标:给定 q ( x t ∣ x 0 ) q(x_t|x_0) q(xtx0) q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt1x0) ,不能用 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1) ,求 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0)

这里假设 x t − 1 x_{t-1} xt1 x t x_t xt x 0 x_0 x0 的线性组合,记其系数分别为 m t m_t mt n t n_t nt ,即有:
x t − 1 = m t x t + n t x 0 + σ t ϵ 1 x_{t-1}=m_tx_t+n_tx_0+\sigma_t\epsilon_1 xt1=mtxt+ntx0+σtϵ1
又知道:
x t = α ˉ t x t + 1 − α ˉ t ϵ 2 x t − 1 = α ˉ t − 1 x t − 1 + 1 − α ˉ t − 1 ϵ 3 x_t=\sqrt{\bar\alpha_t}x_t+\sqrt{1-\bar{\alpha}_t}\epsilon_2 \\ x_{t-1}=\sqrt{\bar{\alpha}_{t-1}}x_{t-1}+\sqrt{1-\bar\alpha_{t-1}}\epsilon_3 xt=αˉt xt+1αˉt ϵ2xt1=αˉt1 xt1+1αˉt1 ϵ3
这里用 ϵ 123 \epsilon_{123} ϵ123 的下标来区分对高斯分布的不同采样。(11) 代入 (10),有:
x t − 1 = m t ( α ˉ t x t + 1 − α ˉ t ϵ 2 ) + n t x 0 + σ t ϵ 1 = ( m t α ˉ t + n t ) x 0 + m t 1 − α ˉ t ϵ 2 + σ t ϵ 1 \begin{aligned} x_{t-1}&=m_t(\sqrt{\bar\alpha_t}x_t+\sqrt{1-\bar{\alpha}_t}\epsilon_2)+n_tx_0+\sigma_t\epsilon_1 \\ &=(m_t\sqrt{\bar{\alpha}_t}+n_t)x_0+m_t\sqrt{1-\bar{\alpha}_t}\epsilon_2+\sigma_t\epsilon_1 \end{aligned} xt1=mt(αˉt xt+1αˉt ϵ2)+ntx0+σtϵ1=(mtαˉt +nt)x0+mt1αˉt ϵ2+σtϵ1
从而:
{ m t α ˉ t + n t = α ˉ t − 1 m t 2 ( 1 − α t ) + α t 2 = 1 − α ˉ t − 1 \begin{cases} m_t\sqrt{\bar{\alpha}_t}+n_t=\sqrt{\bar{\alpha}_{t-1}} \\ m_t^2(1-\alpha_t)+\alpha_t^2=1-\bar{\alpha}_{t-1} \\ \end{cases} {mtαˉt +nt=αˉt1 mt2(1αt)+αt2=1αˉt1
立即可以计算出 m t m_t mt n t n_t nt
m t = 1 − α ˉ t − 1 − σ t 2 1 − α ˉ t n t = α ˉ t − 1 − α ˉ t 1 − α ˉ t ( 1 − α ˉ t − 1 − σ t 2 ) m_t=\sqrt{\frac{1-\bar\alpha_{t-1}-\sigma^2_t}{1-\bar\alpha_t}} \\ n_t=\sqrt{\bar\alpha_{t-1}}-\sqrt{\frac{\bar\alpha_t}{1-\bar\alpha_t}(1-\bar\alpha_{t-1}-\sigma^2_t)} mt=1αˉt1αˉt1σt2 nt=αˉt1 1αˉtαˉt(1αˉt1σt2)

代回到式 (10),有:
x t − 1 = 1 − α ˉ t − 1 − σ t 2 1 − α ˉ t x t + ( α ˉ t − 1 − α ˉ t 1 − α ˉ t ( 1 − α ˉ t − 1 − σ t 2 ) ) x 0 + σ t ϵ = α ˉ t − 1 x 0 + 1 − α ˉ t − 1 − σ t 2 ( 1 1 − α ˉ t x t − α ˉ t 1 − α ˉ t x 0 ) + σ t ϵ = α ˉ t − 1 x 0 + 1 − α ˉ t − 1 − σ t 2 x t − α ˉ t x 0 1 − α ˉ t + σ t ϵ \begin{aligned} x_{t-1}&=\sqrt{\frac{1-\bar\alpha_{t-1}-\sigma^2_t}{1-\bar\alpha_t}}x_t+(\sqrt{\bar\alpha_{t-1}}-\sqrt{\frac{\bar\alpha_t}{1-\bar\alpha_t}(1-\bar\alpha_{t-1}-\sigma^2_t)})x_0+\sigma_t\epsilon \\ &=\sqrt{\bar\alpha_{t-1}}x_0+\sqrt{1-\bar\alpha_{t-1}-\sigma^2_t}(\frac{1}{\sqrt{1-\bar\alpha_t}}x_t-\frac{\sqrt{\bar\alpha_t}}{\sqrt{1-\bar\alpha_t}}x_0)+\sigma_t\epsilon \\ &=\sqrt{\bar\alpha_{t-1}}x_0+\sqrt{1-\bar\alpha_{t-1}-\sigma^2_t}\frac{x_t-\sqrt{\bar\alpha_t}x_0}{\sqrt{1-\bar\alpha_t}}+\sigma_t\epsilon \end{aligned} xt1=1αˉt1αˉt1σt2 xt+(αˉt1 1αˉtαˉt(1αˉt1σt2) )x0+σtϵ=αˉt1 x0+1αˉt1σt2 (1αˉt 1xt1αˉt αˉt x0)+σtϵ=αˉt1 x0+1αˉt1σt2 1αˉt xtαˉt x0+σtϵ
代换成模型的预测值:
x t − 1 = α ˉ t − 1 x ^ 0 ∣ t + 1 − α ˉ t − 1 − σ t 2 ϵ θ ( x t , t ) + σ t ϵ x_{t-1}=\sqrt{\bar\alpha_{t-1}}\hat{x}_{0|t}+\sqrt{1-\bar\alpha_{t-1}-\sigma^2_t}\epsilon_{\theta}(x_t,t)+\sigma_t\epsilon xt1=αˉt1 x^0∣t+1αˉt1σt2 ϵθ(xt,t)+σtϵ
至此,推导出的结果式 (16) 就与式 (8) 完全一致了。即:我们使用 q ( x t ∣ x 0 ) q(x_t|x_0) q(xtx0) q ( x t − 1 ∣ x 0 ) q(x_{t-1}|x_0) q(xt1x0) 两个条件,没有用 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1) ,求出了 q ( x t − 1 ∣ x t , x 0 ) q(x_{t-1}|x_t,x_0) q(xt1xt,x0) 。DDPM 去掉条件 q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1) ,得到了更一般的 DDIM 的采样公式。而如果我们再加上该条件,就可以把方差 σ t \sigma_t σt 的值也确定下来,就得到了 DDPM 的采样公式。

理解DDIM的三个视角

训练目标的角度

DDPM 推导了那么多公式,但是在网络训练的时候是很简单的。就是先定义一系列超参数 α ˉ 1... T \bar\alpha_{1...T} αˉ1...T ,均匀采样一个时间步 t t t,从训练集中采样真实图片,按照 α ˉ \bar\alpha αˉ t t t 计算出噪声加到图片上,得到 x t x_t xt,训练一个 UNet 网络根据 x t x_t xt t t t 来预测出图中噪声。也就是说,DDPM 训练的就是一个 UNet 网络在不同的噪声步条件 t t t 下对应的去噪能力。

而 DDIM 在采样时可以跳步,也就是说 UNet 只需要具备对某几个时间步的去噪能力就行了。即:DDIM 的训练目标是 DDPM 的子集

反过来说,如果一个 DDPM 已经完整地训练完成了,UNet 具备 1... T 1...T 1...T 所有时间步的去噪能力,那么就肯定包含了 DDIM 所需要的能力。因此,一个训练好的 DDPM 网络,可以直接使用 DDIM 采样算法进行加速采样

在这里插入图片描述

图示理解的角度

x t − 1 = α ˉ t − 1 x ^ 0 ∣ t + 1 − α ˉ t − 1 − σ t 2 ϵ θ ( x t , t ) + σ t ϵ x_{t-1}=\sqrt{\bar\alpha_{t-1}}\hat{x}_{0|t}+\sqrt{1-\bar\alpha_{t-1}-\sigma^2_t}\epsilon_\theta(x_t,t)+\sigma_t\epsilon xt1=αˉt1 x^0∣t+1αˉt1σt2 ϵθ(xt,t)+σtϵ

观察 DDIM 的采样公式,其中一共有三项:

  1. 第一项 α ˉ t − 1 x ^ 0 ∣ t \sqrt{\bar\alpha_{t-1}}\hat{x}_{0|t} αˉt1 x^0∣t 的意义是当前步对 x 0 x_0 x0 的估计,乘一个系数(图中蓝色部分)
  2. 第二项 1 − α ˉ t − 1 − σ t 2 ϵ θ ( x t , t ) \sqrt{1-\bar\alpha_{t-1}-\sigma^2_t}\epsilon_\theta(x_t,t) 1αˉt1σt2 ϵθ(xt,t) 则相当于按照原来的方向又往回走了一段距离(图中绿色部分)
  3. 第三项 σ t ϵ \sigma_t\epsilon σtϵ 则表示在当前到达的位置又加了一个小扰动(图中黄色部分)

经过这样一步一步,最终逼近 x 0 x_0 x0

在这里插入图片描述

这又有两种特殊情况:

特殊情况一 σ t = 0 \sigma_t=0 σt=0 。此时相当于第三项没有了,即没有了小扰动。此时采样的过程就没有随机性了,初始点 x T x_T xT 就已经决定了最终结果 x 0 x_0 x0 。这样的好处就是 x T x_T xT 可以被看做是一个隐变量,类似 GAN Inversion 那中编辑、插值的方法就都可以搞起来了。

特殊情况二 1 − α ˉ t − 1 − σ t 2 = 0 \sqrt{1-\bar\alpha_{t-1}-\sigma_t^2}=0 1αˉt1σt2 =0 。此时相当于第二项没有了,这样采样过程会比较震荡。所以说,第二项的存在,能够使得采样的过程更加平滑。

常微分方程的角度

考虑 σ t = 0 \sigma_t=0 σt=0 的情况:
x t − 1 = α ˉ t − 1 x ^ 0 ∣ t + 1 − α ˉ t − 1 − σ t 2 ϵ θ ( x t , t ) = α ˉ t − 1 ⋅ 1 α ˉ t ( x t − 1 − α ˉ t ϵ θ ( x t , t ) ) + 1 − α ˉ t − 1 − σ t 2 ϵ θ ( x t , t ) x t − 1 α ˉ t − 1 = x t α ˉ t − 1 − α ˉ t α ˉ t ϵ θ ( x t , t ) + 1 − α ˉ t − 1 α ˉ t − 1 ϵ θ ( x t , t ) x t − 1 α ˉ t − 1 − x t α ˉ t = ( 1 − α ˉ t − 1 α ˉ t − 1 − 1 − α ˉ t α ˉ t )   ϵ θ ( x t , t ) \begin{aligned} x_{t-1}&=\sqrt{\bar\alpha_{t-1}}\hat{x}_{0|t}+\sqrt{1-\bar\alpha_{t-1}-\sigma^2_t}\epsilon_\theta(x_t,t) \\ &=\sqrt{\bar\alpha_{t-1}}\cdot \frac{1}{\sqrt{\bar\alpha_t}}(x_t-\sqrt{1-\bar\alpha_t}\epsilon_\theta(x_t,t))+\sqrt{1-\bar\alpha_{t-1}-\sigma^2_t}\epsilon_\theta(x_t,t) \\ \frac{x_{t-1}}{\sqrt{\bar\alpha_{t-1}}}&=\frac{x_t}{\sqrt{\bar\alpha_t}}-\sqrt{\frac{1-\bar\alpha_t}{\bar\alpha_t}}\epsilon_\theta(x_t,t)+\sqrt{\frac{1-\bar\alpha_{t-1}}{\bar\alpha_{t-1}}}\epsilon_\theta(x_t,t) \\ \frac{x_{t-1}}{\sqrt{\bar\alpha_{t-1}}}-\frac{x_t}{\sqrt{\bar\alpha_t}}&=(\sqrt{\frac{1-\bar\alpha_{t-1}}{\bar\alpha_{t-1}}}-\sqrt{\frac{1-\bar\alpha_t}{\bar\alpha_t}})\ \epsilon_\theta(x_t,t) \end{aligned} xt1αˉt1 xt1αˉt1 xt1αˉt xt=αˉt1 x^0∣t+1αˉt1σt2 ϵθ(xt,t)=αˉt1 αˉt 1(xt1αˉt ϵθ(xt,t))+1αˉt1σt2 ϵθ(xt,t)=αˉt xtαˉt1αˉt ϵθ(xt,t)+αˉt11αˉt1 ϵθ(xt,t)=(αˉt11αˉt1 αˉt1αˉt ) ϵθ(xt,t)
可以看到,这已经是一个差分的形式。

记 自变量为 s ∈ [ 0 , 1 ] s\in[0,1] s[0,1] a = α ˉ a=\sqrt{\bar\alpha} a=αˉ σ = 1 − α ˉ α ˉ \sigma=\sqrt{\frac{1-\bar\alpha}{\bar\alpha}} σ=αˉ1αˉ ,则有:
d d s ( x ( s ) a ( s ) ) = d d s σ ( s ) ϵ θ ( x ( s ) , t ( s ) ) \frac{d}{ds}(\frac{x(s)}{a(s)})=\frac{d}{ds}\sigma(s)\epsilon_\theta(x(s),t(s)) dsd(a(s)x(s))=dsdσ(s)ϵθ(x(s),t(s))
这就把离散的形式写成连续的形式。

那么,扩散模型采样的过程就相当于:给定 x ( 1 ) ∼ N ( 0 , I ) x(1)\sim\mathcal{N}(0,I) x(1)N(0,I),求 x ( 0 ) x(0) x(0) 。这样一来,扩散模型的采样过程就相当于求解这个常微分方程。从而,很多加速求解常微分方程的方法,都可以用来加速扩散模型的采样过程。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL的事务-隔离级别

上篇,整理了MySQL事务的原子性,这篇继续整理MySQL事务的一致性、隔离性和持久性。 2. 一致性指的是事务开始前和结束后,数据库的完整性约束没有被破坏,这保证了数据的完整性和一致性。一致性必须确保数据库从一个一致的状态转换到…

【无标题】【一周安全资讯1223】一图读懂《工业和信息化部办公厅关于组织开展网络安全保险服务试点工作的通知》;15亿条纽约房产记录泄露

要闻速览 1、一图读懂《工业和信息化部办公厅关于组织开展网络安全保险服务试点工作的通知》 2、国家数据局《“数据要素”三年行动计划 (2024—2026年)》公开征求意见 3、中国信息通信研究院发布《公共数据授权运营发展洞察 (2023年)》 4、15亿条纽约房产记录泄露&#xff0c…

c# OpenCvSharp透视矫正六步实现透视矫正(八)

透视矫正,引用文档拍照扫描,相片矫正这块。 读取图像Cv2.ImRead();预处理(灰度化,高斯滤波、边缘检测)轮廓检测(获取到最大轮廓)获取最大面积轮廓的四个顶点标识最小矩形坐标透视矫正显示 完整代码 // 1、…

结构体的对齐规则

1.引入 我们在掌握了结构体的基本使⽤后。 现在我们深⼊讨论⼀个问题:计算结构体的大小。 这也是⼀个特别热门的考点: 结构体内存对齐。 2.具体分析 ⾸先我们得掌握结构体的对⻬规则: 1. 结构体的第⼀个成员对⻬到和结构体变量起始位置偏移量…

直通车定义、功能以及扣费原则

1.直通车是天猫付费搜索广告,即时需求,是消费者主动来搜索的,cpc扣费原则,一般用来拉新或者收割客户; 2.一般关键词优先,人群溢价是用来更精准投放的,可以不投溢价人群; 3.溢价人群…

移动开发新的风口?Harmony4.0鸿蒙应用开发基础+实践案例

前段时间鸿蒙4.0引发了很多讨论,不少业内人士认为,鸿蒙将与iOS、安卓鼎足而三了。 事实上,从如今手机操作系统竞赛中不难看出,安卓与iOS的形态、功能逐渐趋同化,两大系统互相取长补短,综合性能等差距越来越…

详细学习Java注解Annotation、元注解(通俗易懂,一学就会)

概述 底层原理 自定义注解 示例代码: 1. 2.只有属性名为value的才可以,java对它进行了标识,如果是其他别名如value1是不行的 3.多个属性,必须用键值对形式,不能少写,也不能多写,除非有default修…

Apache Commons BeanUtils: JavaBean操作的艺术

第1部分:Apache Commons BeanUtils 简介 咱们今天聊聊Apache Commons BeanUtils。这货简直就是处理JavaBean的利器,用起来又方便又快捷。不管是属性拷贝、类型转换,还是动态访问,BeanUtils都能轻松应对。 BeanUtils是啥&#xf…

H266/VVC帧内预测编码技术概述

预测编码技术 预测编码(Prediction Coding)是指利用已编码的一个或多个样本值,根据某种模型或方法,对当前的样本值进行预测,并对样本真实值和预测值之间的差值进行编码。 视频中的每个像素看成一个信源符号&#xff…

Java并发(二十一)----wait notify介绍

1、小故事 - 为什么需要 wait 由于条件不满足(没烟干不了活啊,等小M把烟送过来),小南不能继续进行计算 但小南如果一直占用着锁,其它人就得一直阻塞,效率太低 于是老王单开了一间休息室(调…

时间Date

你有没有思考过时间问题: 前端为什么可以直接看见时间格式的数据 后端怎么接受的数据,怎么处理的 一般来说:前端传输来数据都是时间格式的字符串,那么后端需要能够解析时间格式的字符串,归功于JSONFormat ,可以解析…

node封装一个图片拼接插件

说在前面 平时我们拼接图片的时候一般都要通过ps或者其他图片处理工具来进行处理合成,这次有个需求就需要进行图片拼接,而且我希望是可以直接使用代码进行拼接,于是就有了这么一个工具包。 插件效果 通过该插件,我们可以将图片进…

SUS-Chat-34B领先一步:高效双语AI模型的突破

引言 在人工智能领域,模型的规模和效能一直是衡量其先进性的关键指标。南方科技大学联合IDEA研究院CCNL团队最新开源的SUS-Chat-34B模型,以其340亿参数的庞大规模和卓越的双语处理能力,在AI界引起了广泛关注。 模型概述 SUS-Chat-34B是基于…

07 Vue3框架简介

文章目录 一、Vue3简介1. 简介2. 相关网站3. 前端技术对比4. JS前端框架5. Vue核心内容6. 使用方式 二、基础概念1. 创建一个应用2. 变量双向绑定(v-model)3. 条件控制(v-if)4. 数组遍历(v-for)5. 绑定事件…

Vue核心语法、脚手架与组件化开发、VueRouterVuex、综合案例(待办事项工具)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学&#xff0c;可以点心心支持一下哈 一、Vue核心语法 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name…

leetcode2两数加和问题(链表)

题目思路&#xff1a; ①创建一个int类型的局部变量&#xff0c;用来存储两个结点的Val值。 ②判断该Val值与10求余(mod)后是否大于0,如果大于0, 则需要在下一个结点进位。 ③最关键的步骤&#xff1a;实现l1&#xff0c;l2结点数值相加后构建新的存储求和后的结点&#xff0…

嵌入式——下载仿真调试

仿真器 ARM仿真器是用于模拟ARM架构微处理器或微控制器的工具,以便开发和测试嵌入式系统软件。这些仿真器允许开发人员在计算机上模拟ARM处理器的执行,而无需实际的硬件设备。ARM仿真器通常包含以下特点: 指令级仿真: 提供对ARM指令级别的仿真,使开发人员能够逐步执行和调…

C++11特性:线程同步之条件变量

条件变量是C11提供的另外一种用于等待的同步机制&#xff0c;它能阻塞一个或多个线程&#xff0c;直到收到另外一个线程发出的通知或者超时时&#xff0c;才会唤醒当前阻塞的线程。条件变量需要和互斥量配合起来使用&#xff0c;C11提供了两种条件变量&#xff1a; 1. conditi…

基于Python的新能源汽车销量分析与预测系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 基于Python的新能源汽车销量分析与预测系统是一个使用Python编程语言和Flask框架开发的系统。它可以帮助用户分析和预测新能源汽车的销量情况。该系统使用了关系数据库进行数据存储&#xff0c;并…

AcWing算法进阶课-1.17.1费用流

算法进阶课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 给定一个包含 n n n 个点 m m m 条边的有向图&#xff0c;并给定每条边的容量和费用&#xff0c;边的容量非负。 图中可能存在重边和自环&#xff0c;保证费用不会存在负环。 求从 S S S 到 …