扩散损失是什么?教扩散模型学会一步步去除噪声
扩散损失(Diffusion Loss)是训练扩散模型时使用的损失函数,用来指导模型学会如何一步步地去除噪声、恢复出数据原本的结构。扩散模型是如今图像生成、视频生成等领域的主流技术,Stable Diffusion、Sora 等背后都是扩散模型。
先说扩散模型的两个过程
扩散模型包括两个过程。前向扩散过程:从一张真实的图片出发,一步一步地往上面加一点点随机的高斯噪声,经过足够多的步数,图片就变成了完全的随机噪声,看不出任何内容。这个过程是固定的、不需要学习的,而且有一个很好的数学性质:可以直接算出任意一步加噪后的结果,不需要一步步地真的去加。逆向扩散过程:从纯噪声出发,一步一步地把噪声去掉,最终恢复出一张清晰的图片。这个过程就是模型需要学会的,生成新图片时就靠它。
扩散损失怎么定义
2020 年的 DDPM(去噪扩散概率模型)论文给出了一个简洁有效的训练方法,它的损失函数成了最常用的扩散损失形式。训练的每一步是这样的:随机取一张训练图片,随机选一个时间步(也就是加噪的程度),再随机生成一份噪声,按照前向过程的公式把噪声加到图片上,得到一张带噪的图片。然后让模型看这张带噪的图片和时间步,去预测加进去的噪声是什么。扩散损失就是模型预测的噪声和真实加入的噪声之间的均方误差。模型的预测越准,损失越小。
这个看似简单的目标,背后有扎实的理论依据:它对应于数据似然的一个下界(变分下界)的简化形式,也和“分数匹配”方法在数学上是等价的,相当于让模型学习数据分布的梯度方向。
不同的变体
除了预测噪声,模型也可以被训练成直接预测原始的干净图片,或者预测一种结合了两者的“速度”量(v 预测),它们在数学上可以相互转换,但在训练稳定性和生成效果上各有差异。不同时间步的损失如何加权,也会影响效果,研究者提出了多种加权方案。流匹配是近年流行的另一类相关方法,它的训练目标也和扩散损失密切相关。值得一提的是,“扩散损失”这个说法在一些新工作中还有更具体的用法:比如何恺明团队 2024 年提出用扩散损失替代分类损失,让自回归模型直接生成连续的图像 token,而不必先把图像离散化。