Diffusion Models
本文通过之前的结果构建了广泛的扩散模型的范式,并详细介绍了扩散模型的框架,训练目标的构建,以及训练过程。
扩散模型的框架
- 借助先前介绍的 SDE
和扩散过程,我们终于可以自然的构建扩散模型的理论框架。同样假定数据空间为
,对于 ,我们希望找到某个分布 ,使得随机过程 满足 。我们采用扩散模型实现,即将 视作粒子在时刻 出现在 附近的微小体元内的概率。对于单个粒子,其运动服从伊藤形 SDE : 通过恰当的选择速度场 ,我们期待有 。这样我们只需类似的对 采样,再使用数值方法模拟该 SDE ,便可以近似的对 采样。类比流模型,我们希望使用深度神经网络来预测 ,但实际上扩散模型最后操作的 SDE 与上式略微不同,这主要是为了方便构造训练目标。
训练目标的构造
仿照流模型,我们完全相同的定义概率路径和速度场。然而因为扩散项的存在,单纯的速度场不足以指导
演化到 。为此,我们考虑引入某种确定性的修正场来对抗随机噪声,这便得到了以下定理: - 【定理 1. SDE Extension Trick】对于完全仿照先前定义的速度场
,以及扩散系数 ,若 SDE : 满足,则 。
其中
称为得分函数(Score Function)。1 - Remark.
得分函数在证明中与条件情况无关,因为这只是一个修正项而已;但在计算时其仍依赖于后者。另外大家可能会注意到
在物理建模中是有量纲的,但此处我们却直接对其取了 。这是一个简单的问题,对其除以同量纲的参考量即可。由于梯度的存在,数值上不会有任何影响。
证明:由 Fokker-Planck 方程,要证明上式,只需:
由 Continuity Equation : 考虑: 注意到: 因此: 这便完成了证明。 - 【定理 1. SDE Extension Trick】对于完全仿照先前定义的速度场
- 那么扩散模型最终的框架便是:从
采样得到 ,然后对以上的 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 进行训练。需要注意的问题是我们可能需要跳过边界,以规避数值问题。
我不知道这名字是怎么来的,其意义和得分并无联系。这其实是某种舶来词,但是在原语境里我也没看出这名字有什么道理。说到底这基本是证明时凑因子
凑出来的。↩︎
- 标题: 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 进行许可。