The orginal paper can be found here. [Karras et al. 2022]. https://www.youtube.com/watch?v=T0Qxzf0eaio
作者建立了一个简洁的数学框架,将所有扩散模型都看作是在解一个常微分方程(ODE) 。
关于“采样”的改进(让生成速度更快、质量更高)
以往的模型生成图片需要几百步,而这篇论文通过两项改进大幅提升了效率:
- 更高级的“交通工具”: 以往大多使用简单的欧拉法(Euler),这篇论文采用了二阶 Heun 方法 。这种方法在每一步都会进行一次“修正”,虽然单步计算量稍大,但总步数可以大幅减少 。
- 更直的“路径”: 作者重新设计了噪音进度表(Schedule),使得生成过程中的运动轨迹尽可能接近直线 。走直线当然比走弯路更快、更准确
关于“训练”的改进(让网络学得更稳、更准)
作者对神经网络的训练过程进行了“预处理(Preconditioning)” : 标准化输入输出: 神经网络在处理数值太小或太大的数据时表现不好。作者设计了一套缩放公式,确保网络处理的数据始终处于单位方差(unit variance)附近,让学习过程更轻松
更科学的噪音分布: 在训练时,并不是所有的噪音水平都同等重要。作者提出在训练时多关注那些“人类肉眼能看出形状”的中等噪音水平,而少关注那些几乎全黑或全白的极端水平 。
为什么需要缩放?(VP 与 VE 的区别)
论文中提到了两种主流的扩散模型模型,它们对 $s(t)$ 的处理完全不同,这能帮你理解它的作用:
- VE (Variance Exploding,方差爆炸型) :
- 它的 $s(t) = 1$.
- 含义:原始图像的大小保持不变,只是不断地往上面堆噪声。结果就是图像的总能量(方差)越来越大,最后变成一团巨大的噪声 。
- VP (Variance Preserving,方差保存型,如 DDPM) :
- 它的 $s(t) = 1/\sqrt{\sigma(t)^2 + 1}$ 。
- 含义:随着噪声 $\sigma$ 的增加,它会主动把原始图像缩小(调暗)。
- 目的:这样做是为了保证“缩小后的图像 + 噪声”的总能量(方差)始终维持在 1 左右,不会爆炸 。这就是为什么它叫“方差保存型”。
这篇论文的一个重要发现是:如果你想让生成路径最简单、最直观(走直线),最好的选择是令 $s(t) = 1$(不缩放)并且 $\sigma(t) = t$(噪声随时间线性增加)
SDE和ODE
扩散模型最初是建立在 SDE 基础上的,因为它模拟的是加入随机噪声的过程。 Song 等人证明了,对于每一个 SDE,都存在一个对应的“概率流 ODE”