SDE in diffusion models

SDE in diffusion models

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

论文:Score-Based Generative Modeling through Stochastic Differential Equations

本文被认为是 diffusion models 方向中最重要的一篇的论文。作者通过将之前的两类 diffusion models(DDPM、NCSN)通过 SDE 在理论上统一在了一起。注意虽然统一了两种形式,但是本质上 SDE 还是通过估计 score。

为什么要用 SDE 来描述扩散模型?

对于扩散模型,我们的研究对象就是噪声图 x t x_t xt 。对于 x t x_t xt ,实际就是一个关于 x x x t t t 的函数:

  • t t t 固定时, x t x_t xt 可看做是一个随机变量, x t ∼ N ( α ˉ t x 0 , 1 − α ˉ t I ) x_t\sim\mathcal{N}(\sqrt{\bar\alpha_t}x_0,\sqrt{1-\bar\alpha_t}I) xtN(αˉt x0,1αˉt I)
  • x x x 固定时,我们就得到一条采样轨迹: x T , x T − 1 , … , x 0 x_T,x_{T-1},\dots,x_0 xT,xT1,,x0

基于上述观察,可以发现 x t x_t xt 实际上就是一个随机过程,而描述随机过程的数学工具,自然就是 SDE。

连续的扩散过程

之前的工作,无论是 DDPM 还是 NCSN(score-based model),都是将 diffusion 过程看作是一个离散的过程:

离散 diffusion 过程: x 0 , x 1 , . . . x t , . . . , x T x_0,x_1,...x_t,...,x_T x0,x1,...xt,...,xT,reverse 过程: x T , x T − 1 , . . . x t , . . . , x 0 x_T,x_{T-1},...x_t,...,x_0 xT,xT1,...xt,...,x0

实际当然我们也可以将它考虑为一个连续的过程:

连续 diffusion 过程: t ∈ [ 0 , 1 ] t\in[0,1] t[0,1] ,扩散过程是 x t → x t + Δ t ,    Δ t → 0 x_t\rightarrow x_{t+{\Delta t}},\ \ \Delta t\rightarrow 0 xtxt+Δt,  Δt0 ,reverse 过程则是 x t + Δ t → x t x_{t+{\Delta t}}\rightarrow x_t xt+Δtxt

在 SDE 的框架内,我们使用更一般的连续形式来研究扩散过程。

SDE 框架描述扩散模型的公式

论文中给出了扩散过程的 SDE 公式:
d x = f ( x , t ) d t + g ( t ) d w dx=f(x,t)dt+g(t)dw dx=f(x,t)dt+g(t)dw
式中, x x x 就是我们的研究对象噪声图, f ( x , t ) f(x,t) f(x,t) 称为漂移系数(drift coefficient), g ( t ) g(t) g(t) 称为扩散系数(diffusion coefficient), w w w 是布朗运动( brownian motion)。

SDE 公式共有两项,其中前一项 f ( x , t ) d t f(x,t)dt f(x,t)dt 是一个确定性的变化过程,后一项 g ( t ) d w g(t)dw g(t)dw 则是一个不确定性的过程。

下面,我们基于 SDE 形式的扩散公式,来推到其重建公式。

我们先把 d t dt dt 写成离散形式 Δ t \Delta t Δt ,有:
x t + Δ t − x t = f ( x t , t ) Δ t + g ( t ) Δ t ϵ ,     ϵ ∼ N ( 0 , I ) x t + Δ t = x t + f ( x t , t ) Δ t + g ( t ) Δ t ϵ x_{t+\Delta t}-x_t=f(x_t,t)\Delta t+g(t)\sqrt{\Delta t}\epsilon,\ \ \ \epsilon\sim\mathcal{N}(0,I) \\ x_{t+\Delta t}=x_t+f(x_t,t)\Delta t+g(t)\sqrt{\Delta t}\epsilon xt+Δtxt=f(xt,t)Δt+g(t)Δt ϵ,   ϵN(0,I)xt+Δt=xt+f(xt,t)Δt+g(t)Δt ϵ
注意这里 d w dw dw 的系数从 g ( t ) g(t) g(t) 变成 Δ t \sqrt{\Delta t} Δt ,从一阶的两变成了一个 1 / 2 1/2 1/2 阶的量,这是一个结论性的东西,先记住就行了。

然后写出 P ( x t + Δ t ∣ x t ) P(x_{t+\Delta t}|x_t) P(xt+Δtxt)
P ( x t + Δ t ∣ x t ) ∼ N ( x t + f ( x t , t ) Δ t ,    g 2 ( t ) Δ t   I ) P(x_{t+\Delta t}|x_t)\sim\mathcal{N}(x_t+f(x_t,t)\Delta t,\ \ g^2(t)\Delta t\ I) P(xt+Δtxt)N(xt+f(xt,t)Δt,  g2(t)Δt I)
上述是对扩散公式的变换,是由 x t x_t xt 推导 x t + Δ t x_{t+\Delta t} xt+Δt ,而我们推导重建公式的目标是由 x t + Δ t x_{t+\Delta t} xt+Δt 推导 x t x_t xt ,即 P ( x t ∣ x t + Δ t ) P(x_t|x_{t+\Delta t}) P(xtxt+Δt) ,有:
P ( x t ∣ x t + Δ t ) = P ( x t + Δ t ∣ x t ) P ( x t ) P ( x t + Δ t ) P(x_t|x_{t+\Delta t})=\frac{P(x_{t+\Delta t}|x_t)P(x_t)}{P(x_{t+\Delta t})} P(xtxt+Δt)=P(xt+Δt)P(xt+Δtxt)P(xt)
上面扩散过程中 P ( x t + Δ t ∣ x t ) P(x_{t+\Delta t}|x_t) P(xt+Δtxt) 已经写出来了,现在要做的就是处理 P ( x t ) P(x_t) P(xt) P ( x t + Δ t ) P(x_{t+\Delta t}) P(xt+Δt) ,我们将他们构造成 log 的形式:
P ( x t ∣ x t + Δ t ) = P ( x t + Δ t ∣ x t ) exp ⁡ { log ⁡ P ( x t ) − log ⁡ P ( x t + Δ t ) } P(x_t|x_{t+\Delta t})=P(x_{t+\Delta t}|x_t)\exp \{\log P(x_t)-\log P(x_{t+\Delta t})\} P(xtxt+Δt)=P(xt+Δtxt)exp{logP(xt)logP(xt+Δt)}
对式中的 log ⁡ P ( x t + Δ t ) \log P(x_{t+\Delta t}) logP(xt+Δt) ,对其进行一阶泰勒展开的近似:
log ⁡ ( x t + Δ t ) ≈ log ⁡ P ( x t ) + ( x t + Δ t − x t ) ∇ x t log ⁡ P ( x t ) + Δ t ∂ ∂ t log ⁡ P ( x t ) \log (x_{t+\Delta t})\approx \log P(x_t)+(x_{t+\Delta t}-x_t)\nabla_{x_t}\log P(x_t)+\Delta t\frac{\partial}{\partial t}\log P(x_t) log(xt+Δt)logP(xt)+(xt+Δtxt)xtlogP(xt)+ΔttlogP(xt)
代回去,有:
P ( x t ∣ x t + Δ t ) = P ( x t + Δ t ∣ x t ) exp ⁡ { − ( x t + Δ t − x t ) ∇ x t log ⁡ P ( x t ) − Δ t ∂ ∂ t log ⁡ P ( x t ) } ∝ exp ⁡ { ∣ ∣ x t + Δ t − x t − f ( x t , t ) Δ t ∣ ∣ 2 2 2 g 2 ( t ) Δ t − ( x t + Δ t − x t ) ∇ x t log ⁡ p ( x t ) − Δ t ∂ ∂ t log ⁡ P ( x t ) } \begin{align} P(x_t|x_{t+\Delta t})&=P(x_{t+\Delta t}|x_t)\exp \{-(x_{t+\Delta t}-x_t)\nabla_{x_t}\log P(x_t)-\Delta t\frac{\partial}{\partial t}\log P(x_t)\} \\ &\propto \exp\{\frac{||x_{t+\Delta t}-x_t-f(x_t,t)\Delta t||_2^2}{2g^2(t)\Delta t}-(x_{t+\Delta t}-x_t)\nabla_{x_t}\log p(x_t)-\Delta t\frac{\partial}{\partial t}\log P(x_t)\} \end{align} P(xtxt+Δt)=P(xt+Δtxt)exp{(xt+Δtxt)xtlogP(xt)ΔttlogP(xt)}exp{2g2(t)Δt∣∣xt+Δtxtf(xt,t)Δt22(xt+Δtxt)xtlogp(xt)ΔttlogP(xt)}
接下来,我们对 x t + Δ t x_{t+\Delta t} xt+Δt 进行配方:
P ( x t ∣ x t + Δ t ) ∝ exp ⁡ { − 1 2 g 2 ( t ) Δ t [ ( x t + Δ t − x t ) 2 − ( 2 f ( x t , t ) Δ t − 2 g 2 ( t ) Δ t ∇ x t log ⁡ p ( x t ) ) ( x t + Δ t − x t ) ] } − Δ t ∂ ∂ t log ⁡ P ( x t ) − f 2 ( x t , t ) Δ t 2 g 2 ( t ) = exp ⁡ { − 1 2 g 2 ( t ) Δ t ∣ ∣ ( x t + Δ t ) − x t − ( f ( x t , t ) − g 2 ( t ) ∇ x t log ⁡ P ( x t ) ) Δ t ∣ ∣ 2 2 − Δ ∂ ∂ t log ⁡ P ( x t ) − f 2 ( x t , t ) Δ t 2 g 2 ( t ) + f ( x t , t ) − g 2 ( t ) ∇ x t log ⁡ P ( x t ) 2 g 2 ( t ) Δ t } \begin{align} P(x_t|x_{t+\Delta t})&\propto\exp\{-\frac{1}{2g^2(t)\Delta t}[(x_{t+\Delta t}-x_t)^2-(2f(x_t,t)\Delta t-2g^2(t)\Delta t\nabla_{x_t}\log p(x_t))(x_{t+\Delta t}-x_t)]\}-\Delta t\frac{\partial}{\partial t}\log P(x_t)-\frac{f^2(x_t,t)\Delta t}{2g^2(t)} \\ &=\exp \{-\frac{1}{2g^2(t)\Delta t}||(x_{t+\Delta t)}-x_t-(f(x_t,t)-g^2(t)\nabla_{x_t}\log P(x_t))\Delta t||_2^2-\Delta \frac{\partial}{\partial t}\log P(x_t)-\frac{f^2(x_t,t)\Delta t}{2g^2(t)}+\frac{f(x_t,t)-g^2(t)\nabla_{x_t}\log P(x_t)}{2g^2(t)\Delta t}\} \end{align} P(xtxt+Δt)exp{2g2(t)Δt1[(xt+Δtxt)2(2f(xt,t)Δt2g2(t)Δtxtlogp(xt))(xt+Δtxt)]}ΔttlogP(xt)2g2(t)f2(xt,t)Δt=exp{2g2(t)Δt1∣∣(xt+Δt)xt(f(xt,t)g2(t)xtlogP(xt))Δt22ΔtlogP(xt)2g2(t)f2(xt,t)Δt+2g2(t)Δtf(xt,t)g2(t)xtlogP(xt)}

接下来做一下近似,我们的 Δ t → 0 \Delta t\rightarrow 0 Δt0,可以将 Δ t \Delta t Δt 的一次项丢掉,而 t = t + Δ t t=t+\Delta t t=t+Δt ,则:
P ( x t ∣ x t + Δ t ) ∝ exp ⁡ { − 1 2 g 2 ( t + Δ t ) ∣ ∣ ( x t + Δ t − x t ) − f ( x t + Δ t , t + Δ t ) − g 2 ( t + Δ t ) ∇ x t + Δ t log ⁡ P ( x t + Δ t ) Δ t ∣ ∣ 2 2 } P(x_t|x_{t+\Delta t})\propto\exp \{-\frac{1}{2g^2(t+\Delta t)}||(x_{t+\Delta t}-x_t)-f(x_{t+\Delta t},t+\Delta t)-g^2(t+\Delta t)\nabla_{x_{t+\Delta t}}\log P(x_{t+\Delta t})\Delta t||^2_2\} P(xtxt+Δt)exp{2g2(t+Δt)1∣∣(xt+Δtxt)f(xt+Δt,t+Δt)g2(t+Δt)xt+ΔtlogP(xt+Δt)Δt22}
从而我们就可以写出 P ( x t ∣ x t + Δ t ) P(x_t|x_{t+\Delta t}) P(xtxt+Δt) 的均值:
x t + Δ t − ( f ( x t + Δ t , t + Δ t ) − g 2 ( t + Δ t ) ∇ x t + Δ t log ⁡ P ( x t + Δ t ) ) Δ t x_{t+\Delta t}-(f(x_{t+\Delta t},t+\Delta t)-g^2(t+\Delta t)\nabla_{x_{t+\Delta t}}\log P(x_{t+\Delta t}))\Delta t xt+Δt(f(xt+Δt,t+Δt)g2(t+Δt)xt+ΔtlogP(xt+Δt))Δt
方差:
g 2 ( t + Δ t ) Δ t g^2(t+\Delta t)\Delta t g2(t+Δt)Δt
从而:
d x = [ f ( x , t ) − g 2 ( t ) ∇ x t log ⁡ P ( x t ) ] d t + g ( t ) d w dx=[f(x,t)-g^2(t)\nabla_{x_t}\log P(x_t)]dt+g(t)dw dx=[f(x,t)g2(t)xtlogP(xt)]dt+g(t)dw
即得到了连续的扩散模型采样过程的 SDE 公式。

当然,代码实现的时候我们还是按照离散的形式来实现,写出其离散形式为:
x t + Δ t − x t = [ f ( x t + Δ t , t + Δ t ) − g 2 ( t + Δ t ) ∇ x t + Δ t log ⁡ P ( x t + Δ t ) ] Δ t + g ( t + Δ t ) Δ t   ϵ x_{t+\Delta t}-x_t=[f(x_{t+\Delta t},t+\Delta t)-g^2(t+\Delta t)\nabla_{x_{t+\Delta t}}\log P(x_{t+\Delta t})]\Delta t+g(t+\Delta t)\sqrt{\Delta t}\ \epsilon xt+Δtxt=[f(xt+Δt,t+Δt)g2(t+Δt)xt+ΔtlogP(xt+Δt)]Δt+g(t+Δt)Δt  ϵ
结果中,只有 score 的部分 ∇ x t + Δ t log ⁡ P ( x t + Δ t ) \nabla_{x_{t+\Delta t}}\log P(x_{t+\Delta t}) xt+ΔtlogP(xt+Δt) 是我们不知道的,需要模型来预测,别的部分都是已知的。

如果写成 DDPM 那样的离散形式,即 Δ t = 1 \Delta t=1 Δt=1,有:
x t − 1 = x t − [ f ( x t , t ) − g 2 ( t ) ∇ x t log ⁡ P ( x t ) ] × 1 + g ( t ) ϵ x_{t-1}=x_t-[f(x_t,t)-g^2(t)\nabla_{x_t}\log P(x_t)]\times 1+g(t)\epsilon xt1=xt[f(xt,t)g2(t)xtlogP(xt)]×1+g(t)ϵ
至此,我们已经有了 SDE 框架下扩散模型的扩散公式和采样公式:

扩散公式:
d x = f ( x , t ) d t + g ( t ) d w dx=f(x,t)dt+g(t)dw dx=f(x,t)dt+g(t)dw
采样公式:
d x = [ f ( x , t ) − g 2 ( t ) ∇ x log ⁡ P ( x ) ] d t + g ( t ) d w dx=[f(x,t)-g^2(t)\nabla_x\log P(x)]dt+g(t)dw dx=[f(x,t)g2(t)xlogP(x)]dt+g(t)dw

SDE框架下的NCSN(VE)和DDPM(VP)

我们最开始的时候提到,SDE 这篇工作统一了扩散模型中的 DDPM 和 NCSN 两类模型。本节将具体介绍 SDE 框架是如何统一这两类模型的。

在文章中,NCSN 和 DDPM 分别对应于 VE-SDE 和 VP-SDE,其意义分别为 Variance Exploding 和 Variance Preseving。这里我们先写出两类模型的扩散公式:

方法NCSNDDPM
SDEVEVP
一步到位扩散公式 x t = x 0 + σ t ϵ x_t=x_0+\sigma_t\epsilon xt=x0+σtϵ x t = α ˉ t x 0 + 1 − α ˉ t ϵ x_t=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\epsilon xt=αˉt x0+1αˉt ϵ
单步扩散公式 x t + 1 = σ t + 1 2 − σ t 2 ϵ x_{t+1}=\sqrt{\sigma_{t+1}^2-\sigma_t^2}\epsilon xt+1=σt+12σt2 ϵ x t + 1 = 1 − β t + 1 x t + β t + 1 ϵ x_{t+1}=\sqrt{1-\beta_{t+1}}x_t+\sqrt{\beta_{t+1}}\epsilon xt+1=1βt+1 xt+βt+1 ϵ

这两个名字是从何得来呢?我们知道,在扩散模型中,加到最大的噪声强度时,噪声图 x T x_T xT 需要几乎完全是一个高斯分布。

  • 在 NCSN 中, x T = x 0 + σ T ϵ x_T=x_0+\sigma_T\epsilon xT=x0+σTϵ 要是一个完全的噪声,其中方差 σ T \sigma_T σT 就要非常大,故称为 Variance Exploding,噪声爆炸;

  • 在 DDPM 中, x T = α ˉ T x 0 + 1 − α ˉ T ϵ x_T=\sqrt{\bar\alpha_T}x_0+\sqrt{1-\bar\alpha_T}\epsilon xT=αˉT x0+1αˉT ϵ 要是一个完全的噪声,其中 α ˉ T \bar\alpha_T αˉT 就要非常小,所以噪声 1 − α ˉ t \sqrt{1-\bar\alpha_t} 1αˉt 最大也只有 1,故称为 Variance Preserving,方差收紧。

接下来我们就正式介绍如何使用 SDE 框架统一这两种扩散模型。我们先再写出 SDE 的扩散公式:
d x = f ( x , t ) d t + g ( t ) d w x t + Δ t = x t + f ( x t , t ) Δ t + g ( t ) Δ t   ϵ dx=f(x,t)dt+g(t)dw \\ x_{t+\Delta t}=x_t+f(x_t,t)\Delta t+g(t)\sqrt{\Delta t}\ \epsilon dx=f(x,t)dt+g(t)dwxt+Δt=xt+f(xt,t)Δt+g(t)Δt  ϵ
我们先看 DDPM(VE)的情况,有:
x t + Δ t = x t + σ t + Δ t 2 − σ t 2   ϵ = x t + σ t + Δ t 2 − σ t 2 Δ t Δ t   ϵ = x t + Δ σ t 2 Δ t Δ t   ϵ \begin{align} x_{t+\Delta t}&=x_t+\sqrt{\sigma^2_{t+\Delta t}-\sigma^2_t}\ \epsilon \\ &=x_t+\sqrt{\frac{\sigma^2_{t+\Delta t}-\sigma^2_t}{\Delta t}}\sqrt{\Delta t}\ \epsilon \\ &=x_t+\sqrt{\frac{\Delta \sigma_t^2}{\Delta t}}\sqrt{\Delta t}\ \epsilon \end{align} xt+Δt=xt+σt+Δt2σt2  ϵ=xt+Δtσt+Δt2σt2 Δt  ϵ=xt+ΔtΔσt2 Δt  ϵ
与上式比对,则有:
f ( x , t ) = 0 g ( t ) = d d t σ t 2 f(x,t)=0\\ g(t)=\frac{d}{dt}\sigma_t^2 f(x,t)=0g(t)=dtdσt2

VE 的情况还是比较简单的。

再来看 DDPM(VP) 的情况,其单步扩散公式为:
x t + 1 = 1 − β t + 1 x t + β t   ϵ x_{t+1}=\sqrt{1-\beta_{t+1}}x_t+\sqrt{\beta_t}\ \epsilon xt+1=1βt+1 xt+βt  ϵ
其中 { β i } i = 1 T \{\beta_i\}_{i=1}^T {βi}i=1T 是我们人为定义的一组超参数。为了将离散函数连续化,现在我们再构造 { β ˉ i = T β i } i = 1 T \{\bar\beta_i=T\beta_i\}_{i=1}^T {βˉi=Tβi}i=1T 。当 T → ∞ T\rightarrow \infty T 时, β \beta β 就趋近于一个函数:
{ β ˉ i } i = 1 T → β ( t ) ,    t ∈ [ 0 , 1 ] \{\bar\beta_i\}_{i=1}^T\rightarrow \beta(t),\ \ t\in [0,1] {βˉi}i=1Tβ(t),  t[0,1]
则有: β ( i T ) = β ˉ i \beta(\frac{i}{T})=\bar\beta_i β(Ti)=βˉi

再看扩散公式:
x t + 1 = 1 − β ˉ t + 1 T x t + β ˉ t + 1 T   ϵ x_{t+1}=\sqrt{1-\frac{\bar\beta_{t+1}}{T}}x_t+\sqrt{\frac{\bar\beta_{t+1}}{T}}\ \epsilon xt+1=1Tβˉt+1 xt+Tβˉt+1  ϵ
Δ t = 1 T \Delta t=\frac{1}{T} Δt=T1 时:
x t + Δ t = 1 − β ( t + Δ t ) x t + β ( t + Δ t ) Δ t   ϵ x_{t+\Delta t}=\sqrt{1-\beta(t+\Delta t)}x_t+\sqrt{\beta(t+\Delta t)\Delta t}\ \epsilon xt+Δt=1β(t+Δt) xt+β(t+Δt)Δt  ϵ
这里做一下近似。我们知道,当 x → 0 x\rightarrow 0 x0 时,有 ( 1 − x ) a ≈ 1 − a x (1-x)^a\approx 1-ax (1x)a1ax,则有:
x t + Δ t ≈ ( 1 − 1 2 β ( t + Δ t ) Δ t ) x t + β ( t + Δ t ) Δ t   ϵ x_{t+\Delta t}\approx (1-\frac{1}{2}\beta(t+\Delta t)\Delta t)x_t+\sqrt{\beta(t+\Delta t)}\sqrt{\Delta t}\ \epsilon xt+Δt(121β(t+Δt)Δt)xt+β(t+Δt) Δt  ϵ
又由于 Δ t → 0 \Delta t\rightarrow 0 Δt0,我们再做一下近似,把不想要的 Δ t \Delta t Δt 拿掉,有:
x t + Δ t ≈ ( 1 − 1 2 β ( t ) Δ t ) x t + β ( t ) Δ t   ϵ x_{t+\Delta t}\approx (1-\frac{1}{2}\beta(t)\Delta t)x_t+\sqrt{\beta(t)}\sqrt{\Delta t}\ \epsilon xt+Δt(121β(t)Δt)xt+β(t) Δt  ϵ
再对比 SDE 的扩散公式,有:
f ( x , t ) = − 1 2 β ( t ) x t g ( t ) = β ( t ) f(x,t)=-\frac{1}{2}\beta(t)x_t\\ g(t)=\sqrt{\beta(t)} f(x,t)=21β(t)xtg(t)=β(t)
到这里,我们已经把 NCSN 和 DDPM 在 SDE 框架中的形式推导出来了。通过指定不同的 f ( x , t ) f(x,t) f(x,t) g ( t ) g(t) g(t) ,扩散模型的 SDE 框架就分别变成了 NCSN 和 DDPM 两类模型。

关于NCSN中的score estimator和DDPM中的denoiser之间关系的分析

在 NCSN 中,我们使用一个模型 s θ ( x t , t ) s_\theta(x_t,t) sθ(xt,t) 来预测模型的分数,而在 DDPM 中,则是使用一个模型 ϵ θ ( x t , t ) \epsilon_\theta(x_t,t) ϵθ(xt,t) 来估计模型的噪声。既然 SDE 框架下,NCSN 能与 DDPM 统一起来,那么我们实际训练的这两个模型,是否也存在一定的关系呢?

s θ ( x t , t ) s_\theta(x_t,t) sθ(xt,t) 是对分数的估计,即:
s θ ( x t , t ) ≈ ∇ x t log ⁡ P ( x t ) s_\theta(x_t,t)\approx\nabla_{x_t}\log P(x_t) sθ(xt,t)xtlogP(xt)
而我们知道, x t x_t xt 是服从一个正态分布的,即:
x t ∼ N ( α ˉ t x 0 , ( 1 − α ˉ t ) I ) x_t\sim\mathcal{N}(\sqrt{\bar\alpha_t}x_0,(1-\bar\alpha_t)I) xtN(αˉt x0,(1αˉt)I)

则有:
P ( x t ) ∝ exp ⁡ { − ∣ ∣ x t − α ˉ t x 0 ∣ ∣ 2 2 2 ( 1 − α ˉ t ) } P(x_t)\propto\exp \{-\frac{||x_t-\sqrt{\bar\alpha_t}x_0||_2^2}{2(1-\bar\alpha_t)}\} P(xt)exp{2(1αˉt)∣∣xtαˉt x022}
然后我们可以直接把 score 求出来:
s θ ( x t , t ) ≈ ∇ x t log ⁡ P ( x t ) = − x t − α ˉ t x 0 1 − α ˉ t s_\theta(x_t,t)\approx\nabla_{x_t}\log P(x_t)=-\frac{x_t-\sqrt{\bar\alpha_t}x_0}{1-\bar\alpha_t} sθ(xt,t)xtlogP(xt)=1αˉtxtαˉt x0
我们还知道噪声预测器:
ϵ θ ( x t , t ) = x t − α ˉ t x 0 1 − α ˉ t \epsilon_\theta(x_t,t)=\frac{x_t-\sqrt{\bar\alpha_t}x_0}{\sqrt{1-\bar\alpha_t}} ϵθ(xt,t)=1αˉt xtαˉt x0
比较以上两式,有:
s θ ( x t , t ) = − 1 1 − α ˉ t ϵ θ ( x t , t ) s_\theta(x_t,t)=-\frac{1}{\sqrt{1-\bar\alpha_t}}\epsilon_\theta(x_t,t) sθ(xt,t)=1αˉt 1ϵθ(xt,t)
可以看到,NCSN 中的分数估计模型和 DDPM 中的噪声预测模型实际就只差了一个系数而已。如果训好了一个 NSCN 的分数估计模型,甚至可以直接乘个系数直接拿到 DDPM 中用。当然,在介绍 score-based model 的时候我们也提到了,估计分数,实际上就是估计噪声,在这里也再一次得到了验证。

关于VE和VP等价性的简单证明

本节对 VP 和 VE 的等价性做简单的证明。

我们从 VE 开始:
x t = x 0 + σ t ϵ x_t=x_0+\sigma_t\epsilon xt=x0+σtϵ
同除 1 + σ t 2 \sqrt{1+\sigma^2_t} 1+σt2 ,有:
x t 1 + σ t 2 = x 0 1 + σ t 2 + σ t ϵ 1 + σ t 2 \frac{x_t}{\sqrt{1+\sigma^2_t}}=\frac{x_0}{\sqrt{1+\sigma^2_t}}+\frac{\sigma_t\epsilon}{\sqrt{1+\sigma^2_t}} 1+σt2 xt=1+σt2 x0+1+σt2 σtϵ
这里我们记
x t ′ = x t 1 + σ t 2 α ˉ t = 1 1 + σ t 2 x'_t=\frac{x_t}{\sqrt{1+\sigma^2_t}}\\ \bar\alpha_t=\frac{1}{\sqrt{1+\sigma_t^2}} xt=1+σt2 xtαˉt=1+σt2 1
从而
1 − α ˉ t = σ t 1 + σ t 2 \sqrt{1-\bar\alpha_t}=\frac{\sigma_t}{\sqrt{1+\sigma_t^2}} 1αˉt =1+σt2 σt
则有:
x t ′ = α ˉ t x 0 + 1 − α ˉ t   ϵ x'_t=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\ \epsilon xt=αˉt x0+1αˉt  ϵ
到这里发现就已经推到了 VP 的形式,从而就完成了 VE 和 VP 等价性的简单证明。

如果在 VE 上做了些理论的分析,那是可以直接照搬到 VP 上去的,因为它们是等价的。

  • 19
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sentaurus SDE是由美国Synopsys公司开发的一种集成电路设计软件。它被广泛应用于半导体工业中的器件设计、工艺仿真和电路模拟等领域。Sentaurus SDE具有强大的仿真和分析能力,可以帮助工程师和设计师更好地理解和优化集成电路的性能。 Sentaurus SDE的主要功能包括器件建模和仿真、工艺模拟和优化、电路仿真和验证等。通过器件建模和仿真,工程师可以对不同材料和结构的器件进行详细的建模和仿真分析,以评估其性能、优化设计和减少成本。工艺模拟和优化则帮助工程师在制造过程中更好地理解和控制材料和工艺参数对器件性能的影响,从而优化电子产品的制造过程。电路仿真和验证则可以确保设计的电路在现实环境中能够正常工作,并满足指定的性能要求。 Sentaurus SDE还具有丰富的物理模型库和精确的数值分析算法,可以模拟并分析各种不同类型的器件,如MOSFET、BJT、MIM等。它还支持多物理领域的耦合仿真,如器件和电路的耦合、光电耦合等。此外,Sentaurus SDE还提供了直观而灵活的图形界面,使工程师能够方便地进行建模、仿真和分析操作。 总之,Sentaurus SDE是一款功能强大的集成电路设计软件,通过其丰富的功能和强大的性能,能够帮助工程师和设计师高效地进行集成电路的设计、仿真和优化工作,提高产品的质量和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值