【理论推导】随机微分方程(SDE)视角下的Diffusion Model与Score-based Model

SDE与DDPM

以 DDPM 为例,DDPM的通项公式为
x t ∼ N ( α ‾ t x 0 , ( 1 − α ‾ t ) I ) x_t \sim \mathcal N(\sqrt{\overline{\alpha}_t}x_0, (1-\overline{\alpha}_t) I) xtN(αt x0,(1αt)I)
当我们固定 t t t 的取值时, x t x_t xt 是定义在样本空间上的函数,即为一随机变量,当我们固定 x x x的随机性时,即为关于变量 t t t 的一个函数,因此 x t x_t xt 是一随机过程,而对于一组确定的 { x t } t = 0 T \{x_t\}_{t=0}^T {xt}t=0T,称为随机过程的一个实现,或是一条轨迹/轨道,而随机过程可以使用随机微分方程(Stochastic Differential Equation)进行描述

SDE定义为
d X t = b ( t , X t ) d t + σ ( t , X t ) d B t dX_t = b(t,X_t)dt + \sigma(t,X_t)dB_t dXt=b(t,Xt)dt+σ(t,Xt)dBt
其中 B t B_t Bt 表示布朗运动,此方程的解称为伊藤(Itô)过程或是扩散过程。如果我们将 DDPM的迭代式从离散扩展到连续区间,即 x t → x t + Δ t      ( Δ t → 0 ) x_t\rightarrow x_{t+\Delta t}\;\;(\Delta t\rightarrow 0) xtxt+Δt(Δt0),即可得到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
其中 w w w 表示一个标准布朗运动, f ( ⋅ , t ) f(\cdot,t) f(,t) 称作是漂移系数 (drift coefficient),描述了确定性的变化过程, g ( ⋅ ) g(\cdot) g() 称作是扩散系数 (diffusion coefficient),描述了不确定的变化过程

SDE视角下的生成模型

SDE的离散形式表示如下所示
x t + Δ t − x t = f ( x , t ) Δ t + g ( t ) Δ t ε x_{t+\Delta_t}-x_t = f(x,t)\Delta t + g(t)\sqrt{\Delta t} \varepsilon xt+Δtxt=f(x,t)Δt+g(t)Δt ε
其中 ε ∼ N ( 0 , I ) \varepsilon \sim \mathcal N(0,I) εN(0,I),因此有条件概率分布
x t + Δ t ∣ x t ∼ N ( x t + f ( x t , t ) Δ t , g 2 ( t ) Δ t I ) x_{t+\Delta_t}|x_t \sim \mathcal N(x_t+f(x_t,t)\Delta t, g^2(t)\Delta t I) xt+ΔtxtN(xt+f(xt,t)Δt,g2(t)ΔtI)
考虑逆过程 x t ∣ x t + Δ t x_t|x_{t+\Delta t} xtxt+Δt,有
p ( x t ∣ x t + Δ t ) = p ( x t + Δ t ∣ x t ) p ( x t ) p ( x t + Δ t ) = p ( x t + Δ t ∣ x t ) exp ⁡ ( log ⁡ p ( x t ) − log ⁡ p ( 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 ) } = 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 ∂ ∂ 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 Δ t 2 g 2 ( t ) } = Δ t → 0 exp ⁡ { − 1 2 g 2 ( t + Δ 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 } \begin{align} p(x_t|x_{t+\Delta t}) &= \frac{p(x_{t+\Delta t}|x_t)p(x_t)}{p(x_{t+\Delta t})} \nonumber \\&= p(x_{t+\Delta t}|x_t)\exp(\log p(x_t)-\log p(x_{t+\Delta t})) \nonumber \\&\approx p(x_{t+\Delta t}|x_t)\exp \{ - (x_{t+\Delta t}-x_t)\triangledown_{x_t} \log p(x_t)-\Delta t \frac{\partial }{\partial t}\log p(x_{t})\} \nonumber \\&\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)\triangledown_{x_t}\log p(x_t)- \Delta t \frac{\partial }{\partial t}\log p(x_t)\} \nonumber \\&= \exp \left\{ -\frac{1}{2g^2(t)\Delta t}||(x_{t+\Delta t}-x_t)-(f(x_t,t)-g^2(t)\triangledown_{x_t}\log p(x_t))\Delta t||_2^2 -\Delta t \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)\triangledown_{x_t}\log p(x_t))^2\Delta t}{2g^2(t)} \right\} \nonumber \\&\overset{\Delta t\rightarrow 0}{=} \exp \left\{ -\frac{1}{2g^2(t+\Delta t)\Delta t}||(x_{t+\Delta t}-x_t)-(f(x_{t+\Delta t},t+\Delta t)-g^2(t+\Delta t)\triangledown_{x_{t+\Delta t}}\log p(x_{t+\Delta t}))\Delta t||_2^2 \right \} \nonumber \end{align} p(xtxt+Δt)=p(xt+Δt)p(xt+Δtxt)p(xt)=p(xt+Δtxt)exp(logp(xt)logp(xt+Δ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)}=exp{2g2(t)Δt1∣∣(xt+Δtxt)(f(xt,t)g2(t)xtlogp(xt))Δt22Δttlogp(xt)2g2(t)f2(xt,t)Δt+2g2(t)(f(xt,t)g2(t)xtlogp(xt))2Δt}=Δt0exp{2g2(t+Δt)Δt1∣∣(xt+Δtxt)(f(xt+Δt,t+Δt)g2(t+Δt)xt+Δtlogp(xt+Δt))Δt22}

因此, x t ∣ x t + Δ t x_t|x_{t+\Delta t} xtxt+Δt 服从均值方差如下的高斯分布
μ = x t + Δ t − ( f ( x t + Δ t , t + Δ t ) − g 2 ( t + Δ t ) ▽ x t + Δ t log ⁡ p ( x t + Δ t ) ) Δ t σ 2 = g 2 ( t + Δ t ) Δ t \mu = x_{t+\Delta t}-(f(x_{t+\Delta t},t+\Delta t)-g^2(t+\Delta t)\triangledown_{x_{t+\Delta t}}\log p(x_{t+\Delta t}))\Delta t \\\sigma^2 = g^2(t+\Delta t)\Delta t μ=xt+Δt(f(xt+Δt,t+Δt)g2(t+Δt)xt+Δtlogp(xt+Δt))Δtσ2=g2(t+Δt)Δt
因此,有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 ε d x = [ f ( x , t ) − g 2 ( t ) ▽ x t log ⁡ p ( x t ) ] + g ( t ) d w \begin{align} x_{t+\Delta t}-x_t &= (f(x_{t+\Delta t},t+\Delta t)-g^2(t+\Delta t)\triangledown_{x_{t+\Delta t}}\log p(x_{t+\Delta t}))\Delta t + g(t+\Delta t)\sqrt{\Delta t}\varepsilon \\dx &= [f(x,t)-g^2(t)\triangledown_{x_t}\log p(x_t)]+g(t)dw \end{align} xt+Δtxtdx=(f(xt+Δt,t+Δt)g2(t+Δt)xt+Δtlogp(xt+Δt))Δt+g(t+Δt)Δt ε=[f(x,t)g2(t)xtlogp(xt)]+g(t)dw
在这里插入图片描述

考虑 NCSN 与 DDPM,两种形式均可以统一到SDE的理论表示形式下面,分别称为 VE-SDE (Variance Exploding) 与 VP-SDE (Variance Preserving),对应 NCSN 与 DDPM

对于NCSN,正向过程(加噪声)如下所示
x t = x 0 + σ t ε x t + 1 = x t + σ t + 1 2 − σ t 2 ε x_t = x_0 + \sigma_t\varepsilon \\ x_{t+1} = x_t+\sqrt{\sigma_{t+1}^2 - \sigma_t^2}\varepsilon xt=x0+σtεxt+1=xt+σt+12σt2 ε
因此,对应的SDE表示形式中
f ( x t , t ) = 0 g ( t ) = d d t σ t 2 f(x_{t},t)=0 \\g(t)= \frac{d}{dt}\sigma_t^2 f(xt,t)=0g(t)=dtdσt2

对于 DDPM,正向过程(加噪声)如下所示
x t = α ‾ t x 0 + 1 − α ‾ t ε x t + 1 = 1 − β t + 1 x t + β t + 1 ε x_t = \sqrt{\overline{\alpha}_t}x_0 + \sqrt{1-\overline{\alpha}_t}\varepsilon \\ x_{t+1} = \sqrt{1-\beta_{t+1}}x_t + \sqrt{\beta_{t+1}}\varepsilon xt=αt x0+1αt εxt+1=1βt+1 xt+βt+1 ε
我们令 β : [ 0 , 1 ] → R \beta:[0,1]\rightarrow \R β:[0,1]R 代替 β t \beta_{t} βt,满足 β ( i T ) = T β i \beta(\frac{i}{T}) = T\beta_i β(Ti)=Tβi Δ t = 1 T \Delta t = \frac{1}{T} Δt=T1,则有
x t + 1 = 1 − β ( t + Δ t ) Δ t x t + β ( t + Δ t ) Δ t ε = Δ t → 0 ( 1 − 1 2 β ( t ) Δ t ) x t + β ( t ) Δ t ε \begin{align} x_{t+1} &= \sqrt{1-\beta(t+\Delta t)\Delta t}x_t +\sqrt{\beta(t+\Delta t)\Delta t}\varepsilon \\&\overset{\Delta t\rightarrow 0}{=}(1-\frac{1}{2}\beta(t)\Delta t)x_t+\sqrt{\beta(t)}\sqrt{\Delta t}\varepsilon \end{align} xt+1=1β(t+Δt)Δt xt+β(t+Δt)Δt ε=Δt0(121β(t)Δt)xt+β(t) Δt ε
因此,对应的SDE表现形式中,有
f ( x t , t ) = − 1 2 β ( t ) x t g ( t ) = β ( t ) f(x_{t},t)=-\frac{1}{2}\beta(t)x_t \\g(t)= \sqrt{\beta(t)} f(xt,t)=21β(t)xtg(t)=β(t)

当我们希望 t → T t\rightarrow T tT 时,图像为纯粹的噪声图像,那么 σ t → ∞ \sigma_t\rightarrow \infty σt,但 α ‾ t → 0 \overline{\alpha}_t \rightarrow 0 αt0 即可,因此分别称作是 VE-SDE 和 VP-SDE

DDPM Denoiser ϵ θ ( x t , t ) \epsilon_\theta(x_t,t) ϵθ(xt,t) 与 NCSN Estimator s θ ( x t , t ) s_\theta(x_t,t) sθ(xt,t) :在 DDPM 正向过程中,有 x t ∼ N ( α ‾ t x 0 , ( 1 − α ‾ t ) I ) x_t \sim \mathcal N(\sqrt{\overline \alpha}_t x_0, (1-\overline \alpha_t)I) xtN(α tx0,(1αt)I),代入 s θ ( x t , t ) = ▽ x t log ⁡ p ( x t ) s_\theta(x_t,t) = \triangledown_{x_t} \log p(x_t) sθ(xt,t)=xtlogp(xt),可以得到
s θ ( x t , t ) = − x t − α ‾ t x 0 1 − α ‾ t = − 1 1 − α ‾ t ϵ θ ( x t , t ) s_\theta(x_t,t) = -\frac{x_t-\sqrt{\overline \alpha}_t x_0}{1-\overline \alpha_t} = -\frac{1}{\sqrt{1-\overline \alpha_t}} \epsilon_\theta(x_t,t) sθ(xt,t)=1αtxtα tx0=1αt 1ϵθ(xt,t)

PC Sampling

最后,从算法实现的角度来回顾一下 DDPM 和 NCSN,DDPM基于的假设是 Markov 假设,假定不同时间的采样之间服从条件概率分布,因此 DDPM 采用称作是祖先采样(Ancestral Sampling)的方式去求解 SDE 方程,给出的算法如下所示
在这里插入图片描述
而 NCSN 依赖于 Langevin Dynamics 进行同一噪声分布下的迭代优化,对于不同的噪声大小,得到的采样之间并没有进行任何的依赖关系,其采样方式如下所示
在这里插入图片描述
前者可以看作是对于 SDE 方程的离散形式求解,称为Predictor,后者可以看作是进一步的优化过程,称为 Corrector,作者结合这两部分,给出了 Predictor-Corrector Sampling Method
在这里插入图片描述

参考资料

Score-based Generative Modeling Through Stochastic Differential Equations

扩散模型 Diffusion Model SDE

### 回答1: 随机微分方程是一种包含随机项的微分方程,常用于描述含有随机因素的物理和自然现象。MATLAB是一种功能强大的数值计算和编程软件,可用于求解随机微分方程。 要在MATLAB中求解随机微分方程,首先需要定义方程的数学模型。例如,考虑一个一阶随机微分方程dX = a*X*dt + b*X*dW,其中X是未知的随机过程,a和b是常数,dt是时间步长,dW是维纳过程的增量。 在MATLAB中,可以使用随机微分方程求解器如“sde_euler”或“sde45”来求解随机微分方程。以下是一些求解过程的示例代码: ```matlab % 定义随机微分方程模型 a = 1; b = 0.5; dW = 0.01; % 设置时间步长和总时间 dt = 0.01; T = 1; % 设置初始条件 X0 = 1; % 定义随机微分方程 SDE = sde(@(t,X) a*X, @(t,X) b*X, 'StartState', X0); % 求解随机微分方程 [t,X] = sde_euler(SDE, T, 'DeltaTime', dt, 'NoiseSize', dW); % 绘制结果 plot(t, X); xlabel('时间'); ylabel('X'); title('随机微分方程的求解结果'); ``` 以上代码演示了如何使用sde_euler函数求解随机微分方程。首先定义了方程的数学模型,然后设置了时间步长和总时间。接下来定义了随机微分方程模型,并使用sde_euler函数求解方程。最后,使用plot函数绘制了求解结果。 通过以上步骤,我们可以在MATLAB中求解随机微分方程并获得数值解。这些数值解可以帮助我们理解随机系统的动力学行为,并揭示随机性对系统行为的影响。 ### 回答2: 随机微分方程是一类带有随机项的微分方程,可以描述具有随机性的动态系统。而MATLAB是一种强大的数值计算软件,可以用来求解各种数学问题,包括求解随机微分方程。 要在MATLAB中求解随机微分方程,我们需要使用MATLAB提供的数值求解器和随机数生成器。首先,我们需要确定随机微分方程的具体形式,并将其转化为MATLAB中可处理的表达式。 接下来,我们需要确定数值求解器的类型。MATLAB提供了许多求解随机微分方程的函数,如ode45、ode23s和ode15s。这些函数可以根据方程的类型选择最合适的数值求解方法。 然后,我们还需要确定随机项的分布类型和参数。MATLAB中有很多种随机数生成器和分布函数可以使用,如rand、randn、normrnd和exprnd。根据实际情况,我们可以选择合适的随机数生成方法和分布类型。 最后,我们可以使用MATLAB的求解器函数对随机微分方程进行数值求解。这些函数一般需要输入方程的初始条件、求解时间区间和其他参数。求解完成后,MATLAB会返回求解结果,我们可以进一步分析和可视化结果。 总之,MATLAB可以用于求解各种类型的随机微分方程。我们需要确定方程的形式、选择合适的数值求解器和随机数生成器,并进行求解和结果分析。MATLAB提供了丰富的函数和工具,可以帮助我们在研究随机微分方程中获得准确的数值解。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值