SDE:

前置:ODE to SDE

首先回顾一下常微分方程ODE的相关知识。ODE通常解决下面一类问题:存在一个未知的函数y=f(x)y=f(x),如果方程中不仅含有自变量x,还包含位置函数的导数y(n)=f(n)(x)y^{(n)}=f^{(n)}(x),那么就被成为微分方程,如果未知函数只包含一个未知变量,那么就是ODE,如果多元函数,那么就是PDE。ODE可以用公式形式化表示如下:

F(x,y(x),y(x),...)=0F(x, y(x), y'(x), ...) = 0

了解完ODE,再来看随机微分方程SDE。和ODE类似,SDE也不是数学家们凭空想出来的一些方程,它和现实世界中的随机过程有着紧密联系。什么叫随机过程呢?随机过程就是指值随着时间以不确定的方式变化,并且我们只能知道在某个时间点,这个值的分布。(相反地,确定性过程就是只要给定了时间t,我们就能确定这个时间点的值x(t))。现实世界中,存在最广泛的一类随机过程就是物理课本上的布朗运动(Brownian motion),它还有另外一个常见的名字Wiener Process(维纳过程)。下面我们简单了解下Wiener Process。

Wiener Process是一种Markov随机过程,因此它未来时刻的状态只取决于当前状态,而与历史状态无关。它有一些比较特别的性质:

1.在 Δt\Delta t 时间内发生的变化,可以用 ΔZ=ϵΔt\Delta Z=\epsilon\sqrt{\Delta t} 表示,其中 ϵN(0,1)\epsilon\in N(0,1) 。根据这个式子,我们知道 ΔZ\Delta Z 也是一个正态分布: E[ΔZ]=0,var(ΔZ)=ΔtE[\Delta Z]=0,var(\Delta Z)=\Delta t 。方差会随着时间 t越来越大,越来越难预测。

2.在某一个时间点 T

Z(T)Z(0)=i=1nϵiΔt=i=1nΔZi Z(T)-Z(0)=\sum_{i=1}^n\epsilon_i\sqrt{\Delta t}=\sum_{i=1}^n\Delta Z_i

其中, n=TΔtn=\frac{T}{\Delta t} 。这个性质就很有意思,我们可以简单改写一下上式:

Z(T)=Z(0)+ΔZi. Z(T)=Z(0)+\sum\Delta Z_i\,.

从上面可以看出,Wiener Process的均值恒定不变,就是 Z(0)Z(0) (通常,我们就取 Z(0)=0Z(0)=0 )。而在某个时刻 T的值,则是多个正态分布随机变量的和 ΔZi\sum\Delta Z_{i}

从上面均值恒定不变的Wiener Process,数学家们又推导出了Generalized Wiener Process

dX=adt+bdZ dX=a dt+b dZ

这里的 a代表drift term,表示随机过程中平均数的变化,而 b则是variance rate,代表方差的变化,Z则是普通的Wiener Process里的随机变量。这里有一个结论:普通的Wiener Process实际上是drift term= 0, variance rate=1的特殊情况。

那么是否还存在更一般的随机过程呢?存在,它就是It process(伊藤过程):

dX=a(X,t)dt+b(X,t)dZ dX=a(X,t)dt+b(X,t)dZ

这里,我们看到It process实际上就是将drift term和variance rate从常量变成了x,t的函数。这里的 a(X,t)a(X,t)

b(X,t)b(X,t) 我们称为drift和velocity。需要注意的是,对于伊藤过程,我们没法直接推导出 E( dX)E(~dX) 和 Var(dX)。

。除此之外,伊藤过程还有个特殊的名字:diffusion process。

SDE

alt text

推荐阅读:

这篇文章是宋飏博士发表在 ICLR 2021 上面的一篇文章,它的核心贡献是对先前扩散模型相关工作(NCSN或者说Score Matching、DDPM) 从 SDE(随机微分方程)的视角进行了解读和统一。基于 SDE 的扩散模型不仅能够获得更高质量的生成样本,还能进行准确的对数似然(log-likelihood)计算,以及有利于逆问题(inverse problem)求解中的可控样本生成。这个工作也获得了 ICLR 2021 Outstanding Paper Award。

扩散模型的前向过程可以看作是向信号里面逐渐加入高斯噪声,直到信号被噪声淹没。此前的工作 NCSN 和 DDPM 推导了离散情况下扩散模型的原理与公式,而借助随机微分方程 Itô SDE (stochastic differential equation),我们则可以从连续的视角来描述扩散过程,其前向模型可以由如下 SDE 定义:

dx=f(x,t)dt+g(x)dW dx = f(x, t)dt + g(x)dW 其中, dx=limΔt0(xt+Δtxt)dx = \lim_{\Delta t \to 0} (x_{t+\Delta t}-x_t)f(x,t):Rn×RRnf(x, t):\mathbb{R}^n \times \mathbb{R} \to \mathbb{R}^n 是漂移函数,g(t):RnRg(t):\mathbb{R}^n \to \mathbb{R} 是噪声函数,dWdW 是 Wiener 分布(standard Brownian motion), dW可以看成无限小的白噪声。

SDE 方程中f,gf, g的设置并不是固定的,而是人为设计的。后面我们会看到,其NCSN 和 DDPM 本质上就是对应了两种不同的f,gf, g的设计,它们都可以实现样本生产的目的。

基于上面SDE中定义的$\mathrm{d}\mathbf{x}$,当给定一个极小的时间步长$\Delta t \rightarrow 0$,$\mathbf{x}t$在扩散过程中的变化可以离散化地表示为$\mathbf{x}_t \rightarrow \mathbf{x}{t + \Delta t}$:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>

任何的SDE都有一个对应的reverse SDE,它可以解析地写成以下形式(推导见Appendix):

dx=[f(x,t)g2(t)xlogpt(x)]dt+g(t)dw \mathrm{d}\mathbf{x} = \left[\mathbf{f}(\mathbf{x}, t) - g^2(t) \nabla_{\mathbf{x}} \log p_t(\mathbf{x}) \right] \mathrm{d}t + g(t) \mathrm{d}\mathbf{w}

其中,$\mathrm{d}t$是一个负的极小的时间步长(因为是反向过程,所以$t$是从大变小),$p_t(\mathbf{x})$是$\mathbf{x}$在时刻$t$的边缘概率分布。

results matching ""

    No results matching ""