基于随机微分方程的生成建模:从SDE到DDPM的离散化框架
Score-Based Generative Modeling through Stochastic Differential Equations》提出了一种随机微分方程(SDE),它通过逐步注入噪声,将复杂的数据分布平滑地转化为一个已知的先验分布;同时,该工作还提出了一个对应的反向时间 SDE,通过逐步去除噪声,将先验分布转化回数据分布。关键在于,反向时间 SDE 仅依赖于扰动数据分布的时间依赖
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)方法:
θ∗=argminθEt{λ(t)Ex(0)Ex(t)∣x(0)[∣∣sθ(x(t),t)−∇x(t)logp0t(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]}
在足够的数据和模型容量条件下,对于几乎所有的 xxx 和 ttt,分数匹配的最优解为 sθ(x,t)=∇xlogpt(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∇xlogpt(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)2∇xlogpt(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−βixi−1+βizi−1,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=1−Nβˉixi−1+Nβˉizi−1,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)=xi,z(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)Δtx(t)+β(t+Δt)Δtz(t)≈x(t)−21β(t+Δt)Δtx(t)+β(t+Δt)Δtz(t)≈x(t)−21β(t)Δtx(t)+β(t)Δtz(t),
第二行利用了泰勒展开,当 Δt→0\Delta t \to 0Δt→0 时,得到对应的前向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 去噪分数匹配
θ∗=argminθEt{λ(t)Ex(0)Ex(t)∣x(0)[∣∣11−αˉ(t)sθ(x(t),t)+∇x(t)logp0t(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]}
得到近似于∇xlogpt(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)e−21∫0tβ(s)ds,I−Ie−∫0tβ(s)ds)
3.3 离散化逆向SDE
dx=[−12β(t)x−β(t)∇xlogpt(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βi,dtdtdt 是无穷小的负时间步长。以下离散化时使用正步长 Δ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*} xi−1xi−1=xi+(−21Δtβixi−Δtβisθ(xi,Ni))(−Δt)+ΔtβiΔtz=xi+21βixi+βisθ(xi,Ni)+βiz=(1+21βi)xi+βisθ(xi,Ni)+βiz
由泰勒展开 11−βi≈1+12βi\frac{1}{\sqrt{1 - \beta_{i}}} \approx 1 + \frac{1}{2} \beta_{i}1−βi1≈1+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 xi−1=1−βi1xi+βisθ(xi,Ni)+βiz
由于 β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 xi−1=1−βi1(xi+βisθ(xi,Ni))+βiz
为形式上直观,变量替换 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 xt−1=1−βt1(xt+βtsˉθ(xt,t))+βtz
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 xt−1=1−βt1(xt−1−αˉ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−αˉt1ϵθ(xt,t)
4. 参考来源
- https://arxiv.org/pdf/2011.13456
- https://www.youtube.com/watch?v=B4oHJpEJBAA
更多推荐



所有评论(0)