定义
Score-based 生成模型(分数生成模型)直接学习数据分布对数密度的梯度——分数(score):
s(x)=∇xlogp(x)
它指向概率密度增长最快的方向,是一个向量场。模型 sθ(x) 学会这个分数场后,用 Langevin 采样从纯噪声迭代「爬山」生成样本。
SDE 视角(Song et al., 2021)则把离散的加噪过程推广为连续时间的随机微分方程,从而用一套统一框架同时描述 DDPM、Score Matching 等方法——前向是「往数据里注入噪声」的 SDE,反向是「从噪声恢复数据」的反向 SDE。
直观理解
分数 = 指向高密度区域的箭头。
想象数据点分布成一座座「山峰」,分数场就是每个位置指向最近山顶的箭头。只要沿着箭头走,就能从任意位置走到有数据的地方——这就是生成。
但有两个问题:
- 真实分数 ∇xlogp(x) 不知道。直接回归会遇到无法计算的 ∇xlogp(x)。解法是 denoising score matching:给数据加噪声后,目标分数就有了闭式解,等价于「学去噪」。
- 低密度区域分数估不准。数据稀疏的地方没有样本可供学习,箭头乱指。解法是多尺度噪声扰动:在不同噪声水平下分别学分数,从大噪声(全局结构)到小噪声(细节)层层精化。
关键洞察:DDPM 的「预测噪声」本质就是在学分数。 因为噪声 ϵ 和分数只差一个系数:
ϵθ(xt,t)≈−1−αˉtsθ(xt,t)
所以 DDPM、Score Matching、SDE 是同一个东西的三种语言——这正是理解 DDIM 和 CFG 的钥匙。
公式推导
1. Score matching:绕开 ∇xlogp(x)
直接最小化 Fisher 散度:
Ep(x)[∥sθ(x)−∇xlogp(x)∥2]
但 ∇xlogp(x) 未知。更实用的做法是 denoising score matching(Vincent, 2011):对数据加高斯噪声 qσ(x~∣x)=N(x~;x,σ2I),此时目标分数有闭式解:
∇x~logqσ(x~∣x)=σ2x−x~
网络只需学「从带噪样本还原原始样本的方向」,等价于一个去噪自编码器。
2. Langevin 采样:沿分数爬山
有了分数场后,用 Langevin dynamics 迭代采样:
xt+1=xt+ε∇xlogp(xt)+2εz,z∼N(0,I)
第一项是「爬山」,第二项是随机扰动(避免卡在局部峰)。当 ε→0、步数足够多时,采样结果服从 p(x)。实际使用 annealed Langevin:从大噪声的分数逐步切换到小噪声。
3. 与 DDPM 的等价关系
DDPM 中 xt=αˉtx0+1−αˉtϵ,由 Tweedie 公式可推得真实分数:
∇xtlogq(xt)=−1−αˉtϵ
所以 DDPM 的网络 ϵθ(xt,t) 正是分数模型(差一个负系数):
sθ(xt,t)=−1−αˉtϵθ(xt,t)
这解释了为什么 扩散模型的损失推导 里「学噪声」和「学分数」是等价的。
4. SDE 视角:离散 → 连续
把加噪步数 T→∞、步长 →0,离散马尔可夫链变成一个连续 SDE(前向):
dx=f(x,t)dt+g(t)dw
其中 f 是漂移项,g 是扩散项,w 是标准维纳过程。DDPM 的加噪公式对应 Variance Preserving (VP) SDE。
Anderson (1982) 给出了反向 SDE——从噪声恢复数据:
dx=[f(x,t)−g(t)2∇xlogpt(x)]dt+g(t)dwˉ
注意反向过程唯一未知的就是分数 ∇xlogpt(x)——整个生成问题在 SDE 框架下被归结为「学分数」这一件事。
更妙的是,每条反向 SDE 都对应一条概率流 ODE(probability flow ODE):
dx=[f(x,t)−21g(t)2∇xlogpt(x)]dt
它采样时没有随机项,可以大步长、确定性采样——这就是 DDIM 的理论来源。
相关