SDE 与 ODE
SDE
sde是随机微分方程,可以理解成一个加噪声的过程: \[ dx = f(x,t)dt + g(x,t)dw \] 可以认为是一个原始分布\(P_x(0)\)随着时间的推移进行变化。同时dw是一个布朗运动的过程,g是scale函数。每一个是时间概率也会加上一个布朗噪声。
对于一个确定的初始分布,这个扩散过程最终会把x的分布变成一个和初始分布无关的量。
下面观察几种已有方法:
观察传统SMLD的扩散公式: \[ x_i = x_{i-1} + \sqrt{\sigma_i^2 - \sigma_{i-1}^2} z_{i-1},\quad i = 1,2..N \] 如果考虑连续形式,将 \(x_i = x(t_i),x_{i-1} = x(t_{i-1}), t_{i-1} \to t_i\)时,通过求导和逼近,可以有: \[ dx = \sqrt{\frac{d[\sigma^2(t)]}{dt}}dw \] 这是一个一届的近似,这是一个非常简单的sde方程。有如下特征:
- 方差趋近于无穷
另一方面,对于DDPM模型的公式: \[ x_i = \sqrt{1 - \beta_i} x_{i-1} + \sqrt{\beta_i}z_{i-1},\quad i = 1,2..N \] 同样有等价的SDE方程: \[ dx = -\frac{1}{2}\beta(t)xdt + \sqrt{\beta(t)}dw \] 这个方程的方差趋向于1.
ODE
所谓的ode,就是想让这个扩散过程和随机变量z无关。
解SDE
对于一个SDE,有一个对应的解: \[ dx = [f(x,t) - g^2(t)\bigtriangledown_x \log p_t(x)]dt + g(t)d\hat{w} \] 如果忽略上面方程中dw的项,逆过程就会和随机变量无关,是ode。然而,这样采样效果会变差。
也就是说:
一方面,SDE的逆扩散也是SDE。
另一方面,如果我们有了一个网络去拟合\(\bigtriangledown_x \log p_t(x)\),那么我们就可以通过上面的公式把一个随机分布恢复去噪成\(P_0\)
对于SMLD和DDPM,作者证明了论文中给出的解法都是符合上面的通解公式的。其中DDPM的ancestral sampling是通解公式的一种一阶近似。
作者还给出了一种效果更好的去噪方法:PC
可以看出:
- 原始的 SMLD只有红色部分
- 原始的DDPM只有蓝色部分(这个和原始的ancestral sampling是一阶近似)。
总体而言,这个PC方法相当于是在离散时间下先走按照原来的导数方向走一步概率。由于时间粒度太粗,这个实际SDE解有变差,因此再用多步的Langevin dynamics纠正这个偏差。也就是:预测-纠正
作者通过实验证明了这种带纠正的方法PC同时提升了SMLD和DDPM的效果。注意:计算量增加了
可控生成
也就是在给定y下预测\(P_t(x(t)| y)\)。y可以是标签,也可以是一个遮罩。由于: \[ P_t(x(t)| y) \propto P_t(x) \times P_t(y|x(t)) \] 可以发现: \[ \bigtriangledown_x\log P_t(x(t)| y) = \bigtriangledown_x\log P_t(x(t)) + \bigtriangledown_x\log P_t(y | x(t)) \]
- 左边是不考虑y的正常 score model输出,
- 右边是一个额外的分类器的输出。这个分类器需要对每一个时间t能有输出,因此可以先把训练集中数据做出不同t下的噪声形式,再训练分类器。
生成时,我们将上面的公式作为score带入SDE的通解就可以进行可控地生成了。
总结与点评
总体而言,这篇论文读着很”爽“,让我感觉”不愧是outstanding paper“,”ICLR亦有差距“。这篇文章比较详细地给出了DDPM的数学背景,并且联系起了score-based model和DDPM。 另一方面,作者提出的PC方法简单易用,又真的可以极大提高效果,good。
我在想,既然这些DDPM、SLMD方法都是对于SDE方程的一阶近似解,那么:
- 一阶近似解有无数种,哪种最好?
- 有没有更高阶逼近的解?
另外,我也在思考:
- 想要用在文本生成领域中,还有什么可以借鉴的地方?