Diffusion Models

RPChe_

本文通过之前的结果构建了广泛的扩散模型的范式,并详细介绍了扩散模型的框架,训练目标的构建,以及训练过程。

扩散模型的框架

  • 借助先前介绍的 SDE 和扩散过程,我们终于可以自然的构建扩散模型的理论框架。同样假定数据空间为 ,对于 ,我们希望找到某个分布 ,使得随机过程 满足 。我们采用扩散模型实现,即将 视作粒子在时刻 出现在 附近的微小体元内的概率。对于单个粒子,其运动服从伊藤形 SDE : 通过恰当的选择速度场 ,我们期待有 。这样我们只需类似的对 采样,再使用数值方法模拟该 SDE ,便可以近似的对 采样。类比流模型,我们希望使用深度神经网络来预测 ,但实际上扩散模型最后操作的 SDE 与上式略微不同,这主要是为了方便构造训练目标。

训练目标的构造

  • 仿照流模型,我们完全相同的定义概率路径和速度场。然而因为扩散项的存在,单纯的速度场不足以指导 演化到 。为此,我们考虑引入某种确定性的修正场来对抗随机噪声,这便得到了以下定理:

    • 【定理 1. SDE Extension Trick】对于完全仿照先前定义的速度场 ,以及扩散系数 ,若 SDE : 满足,则

    其中 称为得分函数(Score Function)。1

    • Remark. 得分函数在证明中与条件情况无关,因为这只是一个修正项而已;但在计算时其仍依赖于后者。另外大家可能会注意到 在物理建模中是有量纲的,但此处我们却直接对其取了 。这是一个简单的问题,对其除以同量纲的参考量即可。由于梯度的存在,数值上不会有任何影响。

    证明:由 Fokker-Planck 方程,要证明上式,只需: 由 Continuity Equation : 考虑: 注意到: 因此: 这便完成了证明。

  • 那么扩散模型最终的框架便是:从 采样得到 ,然后对以上的 SDE 做数值模拟,从而得到 。我们会使用深度神经网络来预测 ,因此我们需要为后者构建训练目标,而这是简单的: 形式上这仍然是对条件得分函数求期望。现在我们考虑先前提到的 Denoising Diffusion Models 的条件得分函数是怎样的,其具备很好的形式:

扩散模型的训练

  • 扩散模型的速度场和先前的流模型是完全一致的,因此此处我们主要关注其得分函数的训练。将模型预测的 时刻 处的得分记作 类似的,我们要定义 score matching loss 以及 conditional score match loss : 类似的, 是难以计算的,因此我们期待可以通过优化后者来解决这一问题,而这是有保障的:

    • 【定理 2. Conditional Score Matching Loss】存在常数 ,使得对于任意 有: 证明:参照先前关于 Conditional Flow Matching Loss 的证明即可。

    • Remark. 这一类命题的意义其实很简单。本质上 Marginal 的情况比起 Conditional 只是多做了一次期望,这便使得条件得分函数转变为了边缘得分函数。

  • 这样,我们便得到了扩散模型的完整训练框架。最后,我们可以选择任意的扩散系数 ,并通过模拟 SDE : 来对 采样。这个过程中会产生两类误差:其一是模拟的数值误差;其二则是模型预测误差。因此尽管理论上任意选择的 均符合要求,在实践中仍然希望通过选择恰当的 以控制误差,而这似乎是依赖经验的。

  • 在 Denoising Diffusion Models 中: 同样做重参数化 ,得到: 可以认为得分项本质上是在对抗噪声,因此上式被称作 Denoising Score Matching 。另一方面,注意到在 ,这会导致数值爆炸。因此在最初的 Denoising Diffusion Models 的实现(Denoising Diffusion Probabilistic Models,DDPM)中,系数 直接被丢弃,并且分数 被重参数化为一个噪声预测器 ,满足: 当然,这样做并没有必然的数学保证,而只是工程上的优化而已。

  • 另外,Denoising Diffusion Models 还有一个极好的性质,即我们实际上只用学习 ,便可以得到 ,按照:

    • 【定理 3. Conversion Formula for Gaussian Probability Path】对于 Gaussian Probability Path ,有: 证明:对于条件的情况,代入即可。对于边缘的情况,对于条件的情况做积分即可。

    • Remark. 反过来可以得到: 对于 ,应有 ,这说明

    以上,我们并没有必要对于 Denoising Diffusion Models 分别训练 ,而可以任意选择 Flow Matching 或是 Score Matching 进行训练。需要注意的问题是我们可能需要跳过边界,以规避数值问题。


  1. 我不知道这名字是怎么来的,其意义和得分并无联系。这其实是某种舶来词,但是在原语境里我也没看出这名字有什么道理。说到底这基本是证明时凑因子 凑出来的。↩︎

  • 标题: Diffusion Models
  • 作者: RPChe_
  • 创建于 : 2025-08-26 00:00:00
  • 更新于 : 2025-08-29 18:18:16
  • 链接: https://rpche-6626.github.io/2025/08/26/DF/diffusion/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论