1. 引言

《Score-Based Generative Modeling through Stochastic Differential Equations》提出了一种随机微分方程(SDE),它通过逐步注入噪声,将复杂的数据分布平滑地转化为一个已知的先验分布;同时,该工作还提出了一个对应的反向时间 SDE,通过逐步去除噪声,将先验分布转化回数据分布。关键在于,反向时间 SDE 仅依赖于扰动数据分布的时间依赖梯度场(即分数,score)。利用神经网络可以准确估计这些分数,并使用数值 SDE 求解器生成样本。而DDPM(Denoising Diffusion Probabilistic Models)可以被视为该SDE框架的离散化版本。


2. 基于随机微分方程(SDE)的分数生成建模

在这里插入图片描述

2.1 随机微分方程(SDE)与数据扰动

dx=f(x,t)dt+g(t)dw \mathrm{d} x = f ( x , t ) \mathrm{d} t + g ( t ) \mathrm{d} w dx=f(x,t)dt+g(t)dw

其中,f(x,t)f(x, t)f(x,t) 是漂移项,g(t)g(t)g(t) 是扩散项,dw\mathrm{d} wdw 是标准布朗运动。通过这个SDE,可以逐步将数据分布转化为一个简单的先验分布(如高斯分布)。

2.2 去噪分数匹配

为了估计分数(即梯度场),使用去噪分数匹配(Denoising Score Matching)方法:

θ∗=arg⁡min⁡θEt{λ(t)Ex(0)Ex(t)∣x(0)[∣∣sθ(x(t),t)−∇x(t)log⁡p0t(x(t)∣x(0))∣∣22]} \theta^* = \arg \min_{\theta} \mathbb{E}_t \left\{ \lambda(t) \mathbb{E}_{\mathbf{x}(0)} \mathbb{E}_{\mathbf{x}(t) | \mathbf{x}(0)} \left[ ||\mathbf{s}_\theta(\mathbf{x}(t), t) - \nabla_{\mathbf{x}(t)} \log p_{0t}(\mathbf{x}(t) | \mathbf{x}(0))||_2^2 \right] \right\} θ=argθminEt{λ(t)Ex(0)Ex(t)x(0)[∣∣sθ(x(t),t)x(t)logp0t(x(t)x(0))22]}

在足够的数据和模型容量条件下,对于几乎所有的 xxxttt,分数匹配的最优解为 sθ(x,t)=∇xlog⁡pt(x)s_\theta(x, t) = \nabla_x \log p_t(x)sθ(x,t)=xlogpt(x)

2.3 逆向SDE

dx=[f(x,t)−g(t)2∇xlog⁡pt(x)]dt+g(t)dw‾ d\mathbf{x} = [\mathbf{f}(\mathbf{x}, t) - g(t)^2 \nabla_{\mathbf{x}} \log p_t(\mathbf{x})] dt + g(t) d\overline{\mathbf{w}} dx=[f(x,t)g(t)2xlogpt(x)]dt+g(t)dw

其中,w‾\overline{\mathbf{w}}w 是逆向时间的布朗运动。将分数匹配得到的 sθ(x,t)s_\theta(x, t)sθ(x,t) 带入逆向SDE,利用数值求解器即可生成数据样本。


3. DDPM

3.1 前向过程

DDPM(Denoising Diffusion Probabilistic Models)可以被视为上述SDE框架的离散化版本。DDPM的前向过程可以表示为:

xi=1−βixi−1+βizi−1,i=1,⋯ ,N \mathbf{x}_i = \sqrt{1 - \beta_i} \mathbf{x}_{i-1} + \sqrt{\beta_i} \mathbf{z}_{i-1}, \quad i = 1, \cdots, N xi=1βi xi1+βi zi1,i=1,,N

定义 βiˉ=Nβi\bar{\beta_i} = N\beta_iβiˉ=Nβi,代入上式:

xi=1−βˉiNxi−1+βˉiNzi−1,i=1,⋯ ,N \mathbf{x}_i = \sqrt{1 - \frac{\bar{\beta}_i}{N}} \mathbf{x}_{i-1} + \sqrt{\frac{\bar{\beta}_i}{N}} \mathbf{z}_{i-1}, \quad i = 1, \cdots, N xi=1Nβˉi xi1+Nβˉi zi1,i=1,,N

N→∞N \to \inftyN 时,{βˉi}i=1N\{\bar{\beta}_i\}_{i=1}^N{βˉi}i=1N 趋于一个定义域在 [0,1][0,1][0,1] 的函数 β(t)\beta(t)β(t)。令 β(iN)=βiˉ\beta(\frac{i}{N}) = \bar{\beta_i}β(Ni)=βiˉx(iN)=xi\mathbf{x}(\frac{i}{N}) = \mathbf{x}_ix(Ni)=xiz(iN)=zi\mathbf{z}(\frac{i}{N}) = \mathbf{z}_iz(Ni)=zi,并令 Δt=1N\Delta t = \frac{1}{N}Δt=N1,将 ttt 限制在 [0,1][0,1][0,1],重写上式:

x(t+Δt)=1−β(t+Δt)Δt x(t)+β(t+Δt)Δt z(t)≈x(t)−12β(t+Δt)Δt x(t)+β(t+Δt)Δt z(t)≈x(t)−12β(t)Δt x(t)+β(t)Δt z(t), \begin{align*} \mathbf{x}(t+\Delta t) &= \sqrt{1-\beta(t+\Delta t)\Delta t}\,\mathbf{x}(t) + \sqrt{\beta(t+\Delta t)\Delta t}\,\mathbf{z}(t) \\ &\approx \mathbf{x}(t) - \frac{1}{2}\beta(t+\Delta t)\Delta t\,\mathbf{x}(t) + \sqrt{\beta(t+\Delta t)\Delta t}\,\mathbf{z}(t) \\ &\approx \mathbf{x}(t) - \frac{1}{2}\beta(t)\Delta t\,\mathbf{x}(t) + \sqrt{\beta(t)\Delta t}\,\mathbf{z}(t), \end{align*} x(t+Δt)=1β(t+Δt)Δt x(t)+β(t+Δt)Δt z(t)x(t)21β(t+Δt)Δtx(t)+β(t+Δt)Δt z(t)x(t)21β(t)Δtx(t)+β(t)Δt z(t),

第二行利用了泰勒展开,当 Δt→0\Delta t \to 0Δt0 时,得到对应的前向SDE:

dx=−12β(t)x dt+β(t) dw \mathrm{d} \mathbf{x} = - \frac{1}{2} \beta(t) \mathbf{x} \, \mathrm{d}t + \sqrt{\beta(t)} \, \mathrm{d} \mathbf{w} dx=21β(t)xdt+β(t) dw

3.2 去噪分数匹配

θ∗=arg⁡min⁡θEt{λ(t)Ex(0)Ex(t)∣x(0)[∣∣11−αˉ(t)sθ(x(t),t)+∇x(t)log⁡p0t(x(t)∣x(0))∣∣22]} \theta^* = \arg \min_{\theta} \mathbb{E}_t \left\{ \lambda(t) \mathbb{E}_{\mathbf{x}(0)} \mathbb{E}_{\mathbf{x}(t) | \mathbf{x}(0)} \left[ || \frac{1}{\sqrt{1 - \bar{\alpha}(t)}}\mathbf{s}_\theta(\mathbf{x}(t), t) + \nabla_{\mathbf{x}(t)} \log p_{0t}(\mathbf{x}(t) | \mathbf{x}(0))||_2^2 \right] \right\} θ=argθminEt{λ(t)Ex(0)Ex(t)x(0)[∣∣1αˉ(t) 1sθ(x(t),t)+x(t)logp0t(x(t)x(0))22]}
得到近似于∇xlog⁡pt(x)\nabla_{\mathbf{x}} \log p_t(\mathbf{x})xlogpt(x)sθ(x,t)s_\theta(\mathbf{x},t)sθ(x,t)。由于漂移系数f(x,t)=−12β(t)xf (\mathbf{x} , t )=- \frac{1}{2} \beta(t) \mathbf{x}f(x,t)=21β(t)x关于x\mathbf{x}x是仿射的,所以p0t(x(t)∣x(0))p_{0t}(\mathbf{x}(t) | \mathbf{x}(0))p0t(x(t)x(0))是高斯分布,且均值和方差均有解析形式:
p0t(x(t)∣x(0))=N(x(t);x(0)e−12∫0tβ(s)ds,I−Ie−∫0tβ(s)ds) p_{0t}(\mathbf{x}(t) | \mathbf{x}(0))=N(x(t);x(0)e^{-\frac{1}{2}\int_{0}^{t}\beta(s)ds},I-Ie^{-\int_{0}^{t}\beta(s)ds}) p0t(x(t)x(0))=N(x(t);x(0)e210tβ(s)ds,IIe0tβ(s)ds)

3.3 离散化逆向SDE

dx=[−12β(t)x−β(t)∇xlog⁡pt(x)]dt+β(t)dw‾ d\mathbf{x} = [- \frac{1}{2} \beta(t) \mathbf{x} - \beta(t) \nabla_{\mathbf{x}} \log p_t(\mathbf{x})] dt + \sqrt{\beta(t)} d\overline{\mathbf{w}} dx=[21β(t)xβ(t)xlogpt(x)]dt+β(t) dw

离散化时将时间区间 NNN 等分,β(iN)=βiˉ=Nβi=βiΔt\beta(\frac{i}{N}) = \bar{\beta_i} = N\beta_i = \frac{\beta_i}{\Delta t}β(Ni)=βiˉ=Nβi=Δtβidtdtdt 是无穷小的负时间步长。以下离散化时使用正步长 Δt=1N\Delta t = \frac{1}{N}Δt=N1

xi−1=xi+(−12βiΔtxi−βiΔtsθ(xi,iN))(−Δt)+βiΔt Δtzxi−1=xi+12βixi+βisθ(xi,iN)+βi z=(1+12βi)xi+βisθ(xi,iN)+βi z \begin{align*} x_{i-1} &= x_i + \left(-\frac{1}{2}\frac{\beta_i}{\Delta t} x_i - \frac{\beta_i}{\Delta t}s_{\theta}(x_i,\frac{i}{N})\right) (-\Delta t) + \sqrt{\frac{\beta_i}{\Delta t}} \, \sqrt{\Delta t} z \\ x_{i-1} &= x_i + \frac{1}{2}\beta_i x_i + \beta_i s_\theta(x_i, \frac{i}{N}) + \sqrt{\beta_i} \, z \\ &= \left(1+ \frac{1}{2} \beta_{i}\right) x_{i} + \beta_i s_{\theta}(x_{i}, \frac{i}{N}) + \sqrt{\beta_i} \, z \end{align*} xi1xi1=xi+(21ΔtβixiΔtβisθ(xi,Ni))(Δt)+Δtβi Δt z=xi+21βixi+βisθ(xi,Ni)+βi z=(1+21βi)xi+βisθ(xi,Ni)+βi z

由泰勒展开 11−βi≈1+12βi\frac{1}{\sqrt{1 - \beta_{i}}} \approx 1 + \frac{1}{2} \beta_{i}1βi 11+21βi,得:

xi−1=11−βixi+βisθ(xi,iN)+βi z x_{i-1} = \frac{1}{\sqrt{1 - \beta_i}} x_i + \beta_i s_\theta(x_i, \frac{i}{N})+ \sqrt{\beta_i} \, z xi1=1βi 1xi+βisθ(xi,Ni)+βi z

由于 βi\beta_iβi 的取值一般较小,上式近似于:

xi−1=11−βi(xi+βisθ(xi,iN))+βi z x_{i-1} = \frac{1}{\sqrt{1 - \beta_i}} \left(x_i + \beta_i s_\theta(x_i, \frac{i}{N})\right) + \sqrt{\beta_i} \, z xi1=1βi 1(xi+βisθ(xi,Ni))+βi z

为形式上直观,变量替换 sθ(xi,iN)=sˉθ(xt,t)s_\theta(x_i, \frac{i}{N}) = \bar{s}_\theta(x_t, t)sθ(xi,Ni)=sˉθ(xt,t),重写上式:

xt−1=11−βt(xt+βtsˉθ(xt,t))+βt z x_{t-1} = \frac{1}{\sqrt{1 - \beta_t}} \left(x_t + \beta_t \bar{s}_\theta(x_t, t)\right) + \sqrt{\beta_t} \, z xt1=1βt 1(xt+βtsˉθ(xt,t))+βt z

3.4 DDPM采样

xt−1=11−βt(xt−βt1−αˉtϵθ(xt,t))+σtz x_{t-1} = \frac{1}{\sqrt{1 - \beta_t}} \left( x_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon_\theta(x_t, t) \right) + \sigma_t z xt1=1βt 1(xt1αˉt βtϵθ(xt,t))+σtz

可以看到,数据分布的分数相当于DDPM采样的噪声估计乘以一个系数:

sˉθ(xt,t)=−11−αˉtϵθ(xt,t) \bar{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)


4. 参考来源

  • https://arxiv.org/pdf/2011.13456
  • https://www.youtube.com/watch?v=B4oHJpEJBAA

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐