Lecture 2 - Score Matching
1 Score Matching:问题与方法
上一讲学习 DDPM 时,我们采用了这样的思路:先人为定义一个逐步加噪的 forward process,再学习 reverse process。Maximum likelihood 本来难以直接计算,但经过 ELBO、KL divergence、Bayes' rule 和 Gaussian identities,最后得到一个非常简单的 noise prediction loss。
这一讲换一个视角。假设数据来自未知的复杂分布 ,我们仍然希望从容易采样的 Gaussian 出发,最终生成数据。现在的问题是:
答案是 score function。课程随后围绕这个答案逐层展开:
概率密度的梯度有什么问题?
↓
为什么改用 log-density 的梯度?
↓
如何学习未知数据分布的 score?
↓
DSM 与 NCSN 如何让训练变得可行?
↓
DDPM 和 NCSN 如何统一为连续时间 SDE?
↓
如何用 reverse-time SDE 从噪声生成数据?
↓
如何去掉随机项,得到 Probability Flow ODE?
↓
DPM-Solver 如何利用 ODE 的结构实现少步采样?
学完后,应当能够回答:
- Score function 为什么不依赖未知的 normalization constant?
- Langevin dynamics 如何利用 score 进行采样?
- 原始 Score Matching 为什么仍然不可直接监督?
- Denoising Score Matching 如何构造可计算的目标?
- 为什么单一噪声尺度不够,NCSN 为什么要使用多个 noise levels?
- DDPM 和 NCSN 分别对应哪类 SDE?
- Reverse-time SDE 中为什么会出现 score?
- Probability Flow ODE 与 SDE 的“等价”到底指什么?
- DPM-Solver 为什么比通用 ODE solver 更适合 diffusion model?
1.1 为什么要学习 Score?
1.1.1 从概率密度的梯度开始
设数据分布的密度为 。梯度
指出 增长最快的方向。因此,如果我们能在空间中不断沿这个方向移动,就有机会从低密度区域走向高密度区域。
但真实数据分布通常只能写成未归一化形式:
对高维图像而言,partition function 基本不可计算。于是:
未知的 仍然存在。除此之外,低密度区域中的
和
可能极小,也容易造成 numerical stability 问题。
1.1.2 改用 log-density 的梯度
考虑:
代入未归一化密度:
与
无关,因此:
最终得到:
这就是最关键的第一步:对数之后再对 求导,未知的 normalization constant 自动消失。
定义 score function:
它还有两个重要性质。
第一,它和 指向同一方向,因为:
只要 ,分母是正数,不会改变方向。
第二,除以 相当于使用相对变化率。在低密度区域,它通常比直接使用极小的
更稳定。
1.1.3 一维 Gaussian 的例子
若:
则:
所以:
这个结果非常有直觉:
- 当
时,score 为负,指向左侧;
- 当
时,score 为正,指向右侧;
- 离均值越远,修正幅度越大;
- 方差越小,分布越尖锐,score 的拉回作用越强。
Score 可以理解为一张“地形导航图”:它不直接告诉我们当前位置的概率值,却告诉我们应该往哪里走。
1.2 知道 Score 后,怎样生成样本?
1.2.1 Langevin sampling
如果已经知道目标分布的 score,可以用 Langevin dynamics 构造 Markov chain:
其中:
- score term 把样本推向高密度区域;
- Gaussian noise 防止所有样本只做 deterministic gradient ascent,最终坍缩到单个 mode;
- step size
控制每次更新的尺度。
在适当条件和足够多迭代后,这条 Markov chain 的 stationary distribution 是目标分布 。
请注意,Langevin sampling 不是单纯的优化:
Gradient ascent:寻找某个 mode
Langevin sampling:从整个 distribution 采样
随机项在这里不是误差,而是正确采样所需的组成部分。
1.2.2 问题转移了
Langevin dynamics 告诉我们:只要得到 ,就能尝试生成样本。但训练数据只给出样本
,并没有直接给出概率密度,更没有提供 score label。
因此接下来要解决的问题是:
1.3 Score Matching 为什么困难?
1.3.1 最直接的目标不可计算
理想目标是 Fisher divergence:
问题正写在公式里:真实的 未知,所以无法把它直接当作监督标签。
1.3.2 Implicit Score Matching
Hyvarinen 的 Implicit Score Matching(ISM) 使用 integration by parts,把目标改写为与真实 score 无关的形式。忽略与 无关的常数后:
这里:
是 score network Jacobian 的 trace。它摆脱了未知的真实 score,但在高维图像上直接计算 Jacobian trace 代价很高。
1.3.3 Sliced Score Matching
Sliced Score Matching(SSM) 不直接计算完整 trace,而是把高维 score 投影到随机方向,通过随机向量估计 trace,从而降低计算成本。
它展示了一个重要思想:真实 score 虽然不可见,但可以通过等价目标间接估计。不过,本讲接下来选择另一条更适合生成模型的路线:主动给数据加已知噪声。
1.4 加噪为什么反而让 Score 更容易学习?
1.4.1 构造一个 score 已知的条件分布
对干净数据 加 Gaussian noise:
于是条件分布为:
Gaussian score 有解析形式:
现在监督信号出现了:训练时 和我们加入的
都已知,因此条件 score 可以直接计算。
1.4.2 我们真正想学的是带噪边际分布
带噪数据的 marginal distribution 为:
真正需要的是它的 score:
表面上看,我们拥有的是 conditional score,却想学习 marginal score。Denoising Score Matching 的关键结论是:以下两个目标关于 只相差一个常数,具有相同最优解:
与
因此得到可训练的 Denoising Score Matching(DSM) loss:
这里最容易误解的一点是:单个训练标签是 conditional score,但网络在所有可能的 上做平方误差回归后,学到的是给定
时 conditional score 的条件期望,而这个条件期望恰好等于 marginal score。
1.4.3 为什么叫 Denoising?
Score 指向带噪分布的高密度区域,也就大体指向更像真实数据的位置。对 Gaussian corruption 而言,score 与最优 denoiser 还有 Tweedie's formula 联系:
所以 score network 既在学习密度几何,也隐式给出了去噪方向。
1.5 为什么一个噪声尺度还不够?
1.5.1 Vanilla DSM 的两难
如果 很小,
很接近真实数据分布。这听起来很好,但训练样本只覆盖数据流形附近;远离数据的低密度区域几乎没有监督。采样若从随机噪声开始,模型在这些区域的 score 可能很不准确。
如果 很大,Gaussian noise 会填平数据分布之间的空隙,低密度区域得到更充分的覆盖,score 更容易学习;但此时
与真实数据分布相差较远,细节已经被抹去。
这形成一组矛盾:
小噪声:接近真实数据,但全局 score 难学
大噪声:全局 score 好学,但远离真实数据
1.5.2 NCSN:同时学习多个噪声尺度
Noise Conditional Score Network(NCSN) 使用递减的 noise schedule:
训练一个以 noise level 为条件的网络:
加权 DSM loss 可写为:
因为 target magnitude 随 变化,不同 noise level 的 loss 尺度差异很大。常见选择是:
它让各尺度对训练的贡献更平衡。
1.5.3 Annealed Langevin Dynamics
推理时,从最大噪声尺度开始,再逐步降低噪声。对每个 ,执行若干次 Langevin update:
这称为 Annealed Langevin Dynamics(ALD)。
它的生成逻辑是:
- 大噪声分布比较平滑,先把随机初值推到正确的全局区域;
- 逐渐减小噪声,开始形成更细的结构;
- 在最低噪声尺度上逼近真实数据分布,恢复局部细节。
这和 simulated annealing 的精神相似:先解决全局探索,再逐步精修。
1.6 DDPM 的 Noise Prediction 和 NCSN 的 Score Prediction 是什么关系?
DDPM 的任意时刻加噪公式为:
因此条件分布为:
它的 conditional score 是:
所以 noise prediction 与 score prediction 只差一个由 noise schedule 决定的缩放和负号:
这说明 DDPM 与 Score Matching 并不是两套互不相干的方法:
- DDPM 表面上训练 noise predictor;
- NCSN 直接训练 score predictor;
- 二者都在学习不同 noise level 下的带噪分布结构。
这条联系为后面的连续时间统一视角做好了准备。
2 连续时间扩散与采样
2.1 Wiener process
连续时间里的 Gaussian noise 由 Wiener process(也称 Brownian motion)描述。记为 ,它满足:
;
- 样本路径连续;
- 不相交时间区间的 increments 相互独立;
- 增量满足:
因此可以形式化写成:
这正是“不断加入无穷小 Gaussian increment”的连续版本。
2.1.1 一般形式的 SDE
一条 Itô stochastic differential equation 写为:
其中:
是 drift coefficient,描述确定性运动;
是 diffusion coefficient,控制随机噪声强度;
是 Wiener increment。
Drift 决定平均往哪里走,diffusion 决定样本云怎样扩散。
2.1.2 DDPM 对应 VP-SDE
DDPM 的离散更新:
当 很小时,使用 Taylor approximation:
于是极限形式为 Variance Preserving SDE(VP-SDE):
它有向原点收缩的 drift,同时加入噪声,使总体方差保持受控。DDPM 可以看作 VP-SDE 的一种离散化。
2.1.3 NCSN 对应 VE-SDE
NCSN 的前向扰动主要是不断增大 additive noise,而不衰减原信号。它对应 Variance Exploding SDE(VE-SDE):
这里 drift 为零,方差随时间增长,因此称为 variance exploding。
课程在这里完成了统一:
DDPM 的离散加噪 -> VP-SDE
NCSN 的多尺度噪声 -> VE-SDE
↓
都是 dx = f dt + g dW 的特例
统一并不是说二者的 forward process 完全相同,而是说它们都能放进同一个 SDE 框架,使用同一套训练和反向生成理论。
2.2 连续时间下怎样训练 Score Network?
设 forward SDE 从数据分布 出发,在时间
产生 marginal
。我们希望训练:
与 DSM 相同,训练时使用已知的 perturbation kernel :
对常见的 linear SDE,条件分布是 Gaussian:
因此:
训练配方可以概括为:
- 采样 clean image
、time
和 noise
;
- 构造
;
- 输入
,预测 score;
- 与
比较并反向传播。
这和 DDPM 的训练步骤几乎同构。差别主要在 parameterization 和 weighting,而不是学习对象的本质。
2.3 怎样把 Forward SDE 反过来?
2.3.1 Reverse-time SDE
Forward SDE 为:
Anderson 的 reverse-time diffusion 结果给出:
生成时从 积分到
,所以时间增量
。
表示反向过程使用的 Wiener process,不是简单重放 forward noise。
真实 score 未知时,使用模型替换:
2.3.2 为什么反向漂移中必须出现 Score?
Forward diffusion 不断把概率质量摊平。若只把时间方向翻转,而不修正 drift,随机噪声仍会继续扩散,无法让样本重新聚集到数据分布。
Score term:
为 drift 增加了密度相关的修正。结合反向积分的 ,它把样本推向
的高密度区域,用以抵消 diffusion 的摊平作用。
2.3.3 用 Euler-Maruyama 采样
从终端分布采样:
对 从
走向
,Euler-Maruyama 离散化为:
其中:
最终得到 。课程指出,DDPM 的 reverse update 可以视为这种 reverse SDE 的一种离散形式。
2.4 为什么还要把 SDE 改写成 ODE?
Reverse SDE 能生成数据,但随机项也带来代价:
- 通常需要很多细小步骤;
- 误差同时来自有限步长的 discretization 和每步注入的随机噪声;
- 给定相同初始状态,中间轨迹仍不确定。
于是课程提出一个大胆的问题:
2.4.1 从 Fokker-Planck equation 出发
Forward SDE 对应的密度演化为:
利用:
可以改写成:
而 deterministic ODE:
对应 continuity equation:
对比两式,得到速度场:
因此 Probability Flow ODE(PF-ODE) 为:
实际使用模型 score:
2.4.2 “相同 Probability Flow”是什么意思?
PF-ODE 与原 SDE 满足:
对每个时间 都成立。但这不代表单条 sample trajectory 相同:
- SDE 轨迹是 stochastic 的;
- ODE 在给定初值后是 deterministic 的;
- 二者相同的是每个时刻由大量样本形成的 marginal density。
这是本讲必须准确掌握的一句话:
2.4.3 为什么一个是
,另一个是
?
Reverse SDE:
Probability Flow ODE:
Reverse SDE 自身仍有 diffusion term,它对密度演化贡献二阶项,因此 drift 中需要完整的 score correction。PF-ODE 没有随机扩散项,为了复现同一组 marginal densities,速度场只需要
correction。
2.4.4 与 DDIM 的类比
课程把两组关系并列起来:
DDPM <-> DDIM
Reverse SDE <-> PF-ODE
左侧是 stochastic sampling,右侧是可确定的 counterpart;右侧都能够复用原来训练的模型,并以较低 sampling diversity 换取更快的推理。这个类比强调角色相似,不代表 DDIM 的每个离散更新都与任意 PF-ODE solver 完全相同。
2.5 有了 ODE,为什么还需要 DPM-Solver?
2.5.1 NFE 是推理成本的核心指标
使用 neural ODE 采样时,主要成本来自反复调用网络。Number of Function Evaluations(NFE) 表示 solver 调用模型的次数。
最简单的 Euler method 每步使用 1 NFE:
它计算便宜,但大步长误差较大。Runge-Kutta 4 每步通常使用 4 NFE,精度更高,但每一步也更昂贵。
真正应比较的是固定 NFE budget 下的生成质量,而不是只比较“步数”。
2.5.2 Diffusion ODE 不是任意黑盒 ODE
对连续扰动:
diffusion ODE 通常可以整理为 semilinear form:
其中:
是由 noise schedule 决定的已知 linear term;
也是已知系数;
- 只有 neural network output 是 nonlinear term。
通用 solver 会一起离散化所有部分,没有利用这种结构。DPM-Solver 的想法是:
- 对已知 linear part 解析求解;
- 只对 nonlinear neural network term 做数值近似;
- 使用 half-log signal-to-noise ratio 作为新的时间变量。
定义:
经过 variation of constants 和变量替换,解可以写成“解析线性传播 + 对模型输出的指数加权积分”。DPM-Solver 再对这个剩余积分做低阶 Taylor approximation。
2.5.3 DPM-Solver 的阶数
- DPM-Solver-1:一阶近似,通常每步 1 NFE;
- DPM-Solver-2:利用额外模型评估近似区间内变化,达到二阶精度;
- DPM-Solver-
:对模型项使用更高阶 Taylor expansion,以更多 NFE 换取更低局部截断误差。
这里的“阶”是 numerical accuracy order,不是 diffusion timestep,也不是网络层数。
2.5.4 课程希望我们记住什么?
DPM-Solver 的价值不在于发明了新的生成模型,而在于识别并利用 diffusion ODE 的特殊结构:
Forward SDE
↓ Fokker-Planck equation
Continuity equation
↓
Probability Flow ODE
↓ 利用 semilinear structure
DPM-Solver
在相同 NFE budget 下,它通常优于没有利用 diffusion structure 的传统 solver,优势在低 NFE 区间尤其明显。它不要求重新训练已有模型,实践中约 10 至 20 次 NFE 就可能得到合理结果。
3 概念框架与核心逻辑
学习这一讲最容易出现的问题,是把模型、动力学和求解器混为一谈。可以分成三层:
| 层次 | 核心问题 | 代表对象 |
|---|---|---|
| 学习目标 | 网络要预测什么? | noise、score、 |
| 动力学 | 样本按什么方程演化? | reverse SDE、PF-ODE |
| 数值求解 | 怎样用有限次网络调用走完轨迹? | Euler-Maruyama、RK4、DPM-Solver |
同一个训练好的 score network 可以被放入不同动力学,也可以配合不同 numerical solver。更换 solver 通常不等于重新训练模型。
3.1 Score Matching 路线
核心思想:不必估计完整 normalized density,只学习局部的 log-density gradient。
3.2 采样路线
核心思想:score 提供向高密度区域移动的方向,随机项使过程成为分布采样而不是 mode optimization。
3.3 连续统一路线
核心思想:离散 Gaussian corruption 可以统一成由 drift 和 diffusion 描述的连续随机过程。
3.4 加速路线
核心思想:先把同一 marginal density evolution 写成 deterministic ODE,再利用 diffusion ODE 的特殊结构高效积分。
4 公式速查
4.1 Score function
4.2 Langevin update
4.3 Gaussian conditional score
4.4 Denoising Score Matching
4.5 Forward SDE
4.6 Reverse-time SDE
4.7 Probability Flow ODE
4.8 Noise prediction 与 score prediction
5 总结与复习
- Score 不是 probability。 它是 log probability 对输入的梯度,是向量场。
- Score 不需要知道 normalization constant。 常数在对
求导时消失。
- 沿 score 移动不等于采样。 只有 deterministic ascent 会趋向 mode;Langevin 的随机项帮助恢复整个分布。
- DSM 标签是 conditional score,最优网络学到 marginal score。 二者通过条件期望联系起来。
- 大噪声不是只负责“破坏图像”。 它会平滑分布并覆盖低密度区域,使全局 score 更容易学习。
- NCSN 不是为每个噪声尺度训练一个独立网络。 通常是同一个网络以 noise level 为条件。
- DDPM noise predictor 可以转换为 score predictor。 二者相差已知尺度因子。
- VP 与 VE 的区别在 forward process。 VP 同时衰减信号并加噪;VE 主要让噪声方差持续增大。
- Reverse SDE 的符号必须结合时间方向理解。 生成时从
积分到
。
- PF-ODE 与 SDE 的轨迹不同。 相同的是每个时刻的 marginal density。
- PF-ODE 是动力学,DPM-Solver 是数值求解器。 后者不是新的生成模型。
- NFE 不总等于 timestep 数量。 高阶 solver 一步可能调用网络多次。
5.1 一张最终知识图
Data samples
|
Why not learn density directly?
|
score = grad_x log p(x)
|
+----------------+----------------+
| |
Score estimation Score sampling
| |
SM -> DSM -> NCSN Langevin -> Annealed Langevin
| |
+----------------+----------------+
|
Continuous-time SDE
/ \
VP-SDE VE-SDE
DDPM NCSN
\ /
learned s_theta(x,t)
|
+------------+------------+
| |
Reverse-time SDE Probability Flow ODE
stochastic deterministic
|
DPM-Solver
|
low-NFE generation
5.2 最简总结
- Score function:给出 log-density 增长最快的方向,并消除 normalization constant;
- Score Matching:不估计密度本身,只估计其 score;
- DSM:通过已知 Gaussian corruption 的 conditional score 构造训练监督;
- NCSN:在多个 noise levels 上学习 score,解决覆盖范围与数据精度的矛盾;
- Annealed Langevin Dynamics:由大噪声到小噪声逐级采样;
- SDE:用连续随机动力学统一 DDPM 与 NCSN;
- Reverse-time SDE:利用 score 抵消 forward diffusion,从噪声返回数据;
- Probability Flow ODE:用确定性轨迹实现相同的 marginal density evolution;
- DPM-Solver:利用 diffusion ODE 的半线性结构,以较少 NFE 完成采样。
整堂课可以压缩成一句话:
浙公网安备 33010602011771号