1. 从离散到连续:为什么我们需要SDE视角?
如果你已经跟着我之前的文章,把DDPM和基于分数的生成模型(SGM)都过了一遍,那你可能会有一个感觉:这两个模型虽然很强大,但总有点“卡顿感”。它们把整个加噪和去噪的过程,硬生生地切成了几百甚至上千个离散的时间步。就像看一部动画,本来应该是流畅的60帧,结果被做成了PPT,一页一页地跳。这样做当然有它的好处,比如训练和推理的逻辑非常清晰,每一步该干什么都安排得明明白白。但问题也随之而来:这个“步数”T到底该设多大?步长该怎么选?不同的选择会不会影响最终生成图片的质量和效率?
这正是Song Yang等人在那篇著名的论文《Score-Based Generative Modeling through Stochastic Differential Equations》中想要解决的核心问题。他们提出了一个更宏大、更优雅的视角:用连续的随机微分方程(SDE)来统一描述扩散过程。这个想法其实非常直观,既然我们加噪的本质是让数据分布逐渐“溶解”成一片纯噪声,那这个过程为什么不能是平滑、连续的呢?就像一滴墨水滴入清水,它的扩散是一个连续的动态过程,而不是每隔一秒“啪”地跳一下。
把离散模型看成连续SDE的离散化特例,这个视角的转变带来了巨大的好处。首先,它为我们提供了一个统一的数学框架。DDPM和SGM不再是两个独立的模型,而是同一个连续方程在不同设定下的离散近似。这就像牛顿力学和相对论,在低速情况下,前者是后者的一个极好的近似。其次,连续性允许我们利用更丰富的数学工具,比如数值求解器,从而可能设计出更高效、更灵活的采样算法。我们不再被固定的时间步所束缚,可以根据需要动态调整求解的精度和速度。
我自己在尝试复现早期扩散模型代码时,就踩过离散步数的坑。当时为了生成一张高清图片,设置了1000步的采样,结果在Colab上跑了快十分钟。后来我想,能不能减少步数?结果降到200步,生成质量就明显下降,画面变得模糊不清。这让我非常困惑,直到理解了SDE的连续化思想才明白:离散采样就像用矩形法去近似曲线下的面积,步长太大,近似误差自然就大。而SDE视角让我们有机会换用更高级的“积分方法”,比如龙格-库塔法,用更少的“步数”达到更高的精度。
所以,理解SDE,不仅仅是多学一个数学工具,更是让我们站到一个更高的层面,去审视扩散模型的本质。它把生成过程,从一个预设好的“固定剧本”,变成了一个可以由我们灵活调控的“连续动态系统”。
2. 拆解SDE:漂移、扩散与布朗运动
要理解SDE在扩散模型里到底在描述什么,我们得先搞懂它的基本组成。别被“随机微分方程”这个名字吓到,我们可以把它想象成描述一个粒子在液体中运动的方程。
一个正向的SDE通常写成这样: dx = f(x, t) dt + g(t) dw
这里面有三个关键角色:
- x:这就是我们的数据,比如一张图片的像素值。它随着时间t在变化。
- f(x, t):这叫做漂移系数。它决定了数据x在没有随机干扰的情况下,会朝着哪个方向、以多快的速度“漂移”。你可以把它想象成水流的主方向。
- g(t):这叫做扩散系数。它控制了随机噪声的强度。
- dw:这是标准布朗运动(或者说维纳过程)的微分。它是所有随机性的来源,模拟了粒子受到液体分子四面八方无规则碰撞的效果。它的特点是均值为0,方差与时间间隔dt成正比。
所以,这个方程合起来的意思就是:数据x的变化(dx),由两部分组成。一部分是确定性的漂移 f(x, t) dt,另一部分是随机性的扩散 g(t) dw。确定性部分塑造趋势,随机性部分增加扰动,两者共同作用,让数据分布从复杂的真实图片,平滑地、随机地演变成简单的高斯噪声。
现在,最精彩的部分来了:我们熟悉的DDPM和SGM,都可以看作是上述这个通用SDE的一个具体“皮肤”。
2.1 DDPM对应的SDE形式
回忆一下DDPM的加噪公式:x_t = sqrt(1-β_t) * x_{t-1} + sqrt


6770

被折叠的 条评论
为什么被折叠?



