Score-based SDE#
本页内容4 个部分
查看概览图
ε、score 与 SDE
是同一件事的三种写法
把 DDPM 的离散步长推到 0,加噪变成一条 SDE;反向 SDE 与它的 Probability Flow ODE 共享同一族边际分布。
永远指向密度更高的方向
DDPM 的每一步就是 SDE 的一瞬间
-
x_t = √(1−β_t)·x_{t−1} + √β_t·εDDPM 离散(每步) -
统一
dx = f(x,t)dt + g(t)dwSDE 连续(每一瞬间) -
f(x,t)dt = −(β(t)/2)·x·dt漂移项:让 x 慢慢缩小 -
g(t)dw = √β(t)·dw扩散项:加随机噪声
dx = f(x,t)dtdx = f(x,t)dt + g(t)dw反向 SDE 有随机项,每条轨迹都不同、路径抖动;PF-ODE 无随机项,同 seed 路径完全一样、光滑。但一百万条轨迹的分布都是同一个 p_t(x)——这就是确定性采样器能替代随机采样器的理论依据。
组件阅读路线 · Score Function · SDE / ODE 对偶 · 统一框架
1. Score Function 与 ε 预测#
1.1 DDPM 和 Score Matching 本来是两条独立的线#
DDPM 那条线(Ho et al., 2020):从概率建模出发——定义前向马尔可夫链,推导反向马尔可夫链,优化变分下界。
Score Matching 那条线(宋飏 et al., 更早):从另一个角度——直接学习数据分布的 score function (对数概率密度的梯度),然后用朗之万动力学(Langevin dynamics)从噪声走到数据。
2021 年宋飏(Song Yang)证明:它们本质上是同一件事,只是从不同角度描述了同一个过程。
1.2 Score Function 是什么#
Score function 是 对 的梯度。梯度的定义就是"指向函数值增大最快的方向",而 单调递增,所以 增大 = 增大 = 概率密度更高。直觉上:想象数据分布 是一座山峰(高密度区域在山顶),score function 就是每个点上"指向山顶的方向"。从噪声出发,沿着 score function 走,就会一步步爬向山顶——数据最集中的区域。
用具体例子理解 Score Function#
假设数据分布是一维高斯 ,一步一步算:
score function 就是 ——位置越偏,往回拉的力越大
三个函数的关系:p(x) → 取 log → log p(x) → 对 x 求导 → score function
代入几个具体的点:
| 位置 | score = | 含义 |
|---|---|---|
| (右侧偏远) | (向左) | 离中心太远,强烈拉回 |
| (右侧较近) | (向左) | 稍微往中心走 |
| (中心最密) | (停止) | 已经在密度最高处,不动 |
| (左侧偏远) | (向右) | 向中心拉回 |
💡 直觉:score 就是"有方向的斜率"
是一条开口向下的抛物线,最高点在 (概率密度最大处)。Score function 就是这条曲线在每个点上的斜率(切线的斜率)——不只是"斜不斜",还告诉你往哪个方向走能让 增大,也就是走向概率密度更高的地方。
从 沿 score 方向走向 0,是 log-density 的梯度上升示意。Langevin dynamics 还必须包含随机噪声项;只走梯度会趋向密度模态,并不能从目标分布正确采样。
1.3 预测和 Score Function 的关系#
score function = 噪声的负方向,缩放了一下
噪声回归的总体 MSE 最优解是条件均值,其负值再除以噪声标准差对应边际 score。噪声预测本身与 score 方向相反;后文区分条件 score 与边际 score。
这个公式是怎么推导出来的?#
只需要三步,全程只用高斯分布的定义和求导。
第一步:写出 的概率密度
前向过程告诉我们,给定 , 服从高斯分布:
代入高斯密度公式 ,写出对数密度:
常数项与 无关,对梯度没贡献
第二步:对 求梯度
分子 对 求导,结果就是 :
第三步:代入前向公式消掉
从一步到位的加噪公式 直接得到:
代入第二步的结果:
上下约分,只剩一个根号在分母
💡 三步的核心逻辑
整个推导只做了一件事:高斯分布的 log 求导。高斯的对数是一个关于 的二次函数,导数就是一次函数(线性的)。
- 分母 是高斯的方差——方差越大,score 越小,拉力越弱
- 分子 就是"当前位置偏离均值多远"——偏得越远,拉力越大
- 用前向公式替换后,"偏离均值" = ,化简得到
⚠️ 注意:这里是条件 score,不是边际 score
严格说,推导出来的是 (给定 时的 score),不是边际分布 。
边际 score 的精确表达式是:
也就是对所有可能的 取期望。网络 学的正是这个期望——这是网络在训练中隐式学到的,不需要显式计算积分。所以" 预测 = 学 score function"在期望意义下成立。
2. SDE 怎么统一#
2.1 为什么需要把它们统一?#
你可能会想:DDPM 能用,DDIM 也能用,为什么还要费劲搞一个"统一框架"?三个原因:
- 解释力:DDPM 和 DDIM 各自推导,看起来是两种独立方法。统一框架告诉你它们是同一个连续过程的两种离散化方式——理解了框架,两者的异同一目了然
- 设计新方法:后续的 DPM-Solver、EDM、Rectified Flow 等更好的采样器,都是在这个框架下设计出来的。没有框架,每个新方法都要从头推导;有了框架,你只需要在"怎么离散化"这一步做文章
- 面试价值:这是区分"用过扩散模型"和"真正理解扩散模型"的分水岭。能把 DDPM → DDIM → SDE 的关系讲清楚,面试官会认为你有扎实的理论功底
SDE 是什么#
先从 ODE 说起——你大概在物理课上见过微分方程,最简单的形式:
在向量场满足适当存在唯一性条件时,初值确定 ODE 轨迹;一般 ODE 不能无条件保证唯一性
比如一个球从山坡滚下来:给定起点,牛顿力学告诉你它每一刻的位置。没有任何随机性,跑一百次结果一模一样。这就是 ODE(常微分方程)。
现在加上随机性——如果球在滚的时候有随机阵风呢?每一瞬间都有一个不可预测的小推力。同一个起点,滚两次,轨迹不一样了。这就是 SDE(随机微分方程):
**(布朗运动的增量)到底是什么?**不需要严格数学定义,只需记住三件事:
- 随机的:每一瞬间的 是一个均值为 0 的高斯随机变量——往左推和往右推的概率一样
- 独立的:这一瞬间的推力和上一瞬间无关——"风没有记忆"
- 很小的: 的大小和 成正比——直觉上就是"每步加一点小噪声"
💡 用 for 循环理解 SDE
如果你对代码比公式更亲切,SDE 就是这个循环取步长无穷小的极限:
for t in range(T):
x = x + f(x, t) * dt # 漂移:确定性的一步
x = x + g(t) * sqrt(dt) * randn() # 扩散:加一个随机扰动
DDPM 的前向过程就是这样一个循环:每步让 缩小一点(漂移),再加一点高斯噪声(扩散)。SDE 只是把步长 从 取到无穷小。
⚠️ ODE vs SDE 的核心区别
| ODE | SDE | |
|---|---|---|
| 公式 | ||
| 轨迹 | 确定——同起点同路径 | 随机——同起点不同路径 |
| 对应 | DDIM(确定性采样) | DDPM(随机采样) |
后面你会看到:反向生成时,走 SDE 就是 DDPM,走 ODE 就是 DDIM。
DDPM 的前向加噪就是 SDE 的离散版#
把 DDPM 每步加噪公式和 SDE 对比:
| DDPM 离散(每步) | SDE 连续(每一瞬间) |
|---|---|
| (漂移:让 慢慢缩小) | 漂移项 |
| (加随机噪声) | 扩散项 |
时间步无限细分(),离散的 变成连续函数 ,DDPM 的离散加噪就"升级"成了这个 SDE。
💡 "取极限"到底意味什么?
这和微积分里"求和 → 积分"是同一个思路。DDPM 用 1000 步加噪,每步 。如果把步数增加到 10000 步、100000 步……最终每步 ,离散的递推公式就变成了连续的微分方程。
所以 SDE 不是一个新的模型,它就是 DDPM 前向过程步数取到无穷大时的数学表达。
宋飏的核心贡献:反向过程也有对应的 SDE#
数学上可以证明,任何前向 SDE 都有一个精确的反向 SDE,只需要知道 score function:
反向 SDE = 正向漂移 − score function 的校正项 + 反向布朗运动
类比理解:正向过程是"加噪声、往混乱方向走",反向就是"往数据密度高的地方走(靠 score function 指引)+ 随机抖动"。
💡 为什么知道 score function 就能反转整个过程?
这是最不直觉的一步,值得多说几句。
**正向过程(加噪)**你完全控制:你设计了噪声调度 ,你知道每一步加了多少噪声、信号缩小了多少。
**反向过程(去噪)**的难点在于:给你一张充满噪声的图 ,你不知道噪声具体长什么样(每次采样的噪声都不同),也不知道原始图像 是什么。
但 score function 提供了关键信息:在当前的噪声水平下,数据更可能在哪个方向。它不需要知道具体的 是什么,而是综合了所有可能的 给你一个"平均指引方向"。
类比:你在浓雾(噪声)中迷路了。Score function 就像一个指南针——它不知道你家具体在哪,但它知道"城市(数据密集区)在你的东南方向"。沿着指南针一步步走,你就能从荒野(纯噪声)走回城市(数据分布)。雾每走一步就淡一点(噪声水平降低),指南针的指引也越来越精确。
Probability Flow ODE:去掉随机性#
宋飏还发现:每个 SDE 都对应一个完全确定性的 ODE,和反向 SDE 有完全相同的边际分布 。
"边际分布相同":单条 SDE 轨迹每次都不同(随机抖动),但大量轨迹在每个时刻 的位置分布 是确定的。Probability Flow ODE 的单条轨迹是光滑确定的,但产生的 和 SDE 完全一样。
| 描述方式 | 单条轨迹 | 一百万条轨迹的分布 | |
|---|---|---|---|
| 反向 SDE | 有随机项 | 每次都不同,路径抖动 | |
| Probability Flow ODE | 无随机项 | 每次完全一样,路径光滑 | 也是 |
注意:不是简单地把随机项删掉
对比两个公式,区别有两处:
① 删掉了随机项 ;② score 项系数从 变成了
直觉:随机项本身对分布有"扩散"作用,去掉它之后 score 项需要多承担一半的引导工作,所以系数调整为一半。如果只删随机项而不改系数,分布就会对不上。
(背后的证明工具叫 Fokker-Planck 方程,描述概率密度随时间如何演化;工程上只需要记结论即可。)
💡 为什么这个 ODE 和 DDIM 是同一件事?
DDIM 的核心操作是"先预测 ,再按确定性公式走到目标时间步"——没有任何随机项。把这个操作的时间步无限细分,极限正好就是这个 Probability Flow ODE。DDIM 是它的离散化。
**统一的关键:两者都需要 score function,而 DDPM 训练的 就是在学 score function。**所以一个训练好的 DDPM 网络,既能用来做随机采样(反向 SDE = DDPM),也能用来做确定性快速采样(Probability Flow ODE = DDIM)——不需要重新训练,只是采样方式不同。
三者统一:
- DDPM = 反向 SDE 的离散化(随机采样,需要 1000 步)
- DDIM = Probability Flow ODE 的离散化(确定性采样,可以跳步)
- Score-based SDE = 连续时间的统一框架,DDPM 和 DDIM 都是它的特例
3. 三者关系图#
Score-based SDE(2021,统一框架)
连续时间:dx = f(x,t)·dt + g(t)·dw
│
├─── 随机分支 ──────────────────────────────────────────────────
│ 反向 SDE:dx = [f − g²·∇logp]dt + g·dw̄
│ │
│ └─ 离散化 ──→ DDPM(2020)
│ · 随机采样(每步加噪声 z)
│ · 必须 1000 步,不能跳步
│ · 马尔可夫链
│
└─── 确定性分支 ─────────────────────────────────────────────────
Probability Flow ODE:dx = [f − ½g²·∇logp]dt
│
└─ 离散化 ──→ DDIM(2020)
· 确定性采样(无随机项)
· 可跳步,50 步接近 DDPM 质量
· 非马尔可夫
─────────────────────────────────────────────────────────────────
共同点(三者完全一致):
· 前向加噪过程相同
· 使用同一个训练好的网络 ε_θ(预测噪声)
· 训练目标完全相同(MSE loss)
· 区别只在采样方式
💡 面试时一句话说清三者关系
DDPM 是离散时间的随机采样,DDIM 是离散时间的确定性采样,Score-based SDE 是把它们统一到连续时间框架下——DDPM 对应反向 SDE,DDIM 对应 Probability Flow ODE。三者训练完全一样,区别只在采样。
4. 理解检查#
面试题 01 DDPM、DDIM、Score-based SDE 的关系?
一句话:DDPM = 反向 SDE 离散化(随机)。DDIM = Probability Flow ODE 离散化(确定性)。Score-based SDE = 连续统一框架。三者训练相同,区别只在采样。
关系:训练一个 DDPM 模型后,既可以 DDPM 采样(1000 步,随机)也可以 DDIM 采样(50 步,确定性)。不需要重新训练。
面试题 02 Score Matching 和扩散模型的关系?
数学等价:。预测噪声 = 预测 score 的负方向。
历史:Score matching 更早(2019),DDPM 独立发展(2020)。2021 年宋飏用 SDE 统一。
Score-based SDE:统一框架
多模态算法面试准备系列
原始资料:Score-Based Generative Modeling through SDEs。反向 SDE 与 probability-flow ODE 的边际一致性需要精确 score 和精确积分等条件;近似网络与有限步求解会产生偏差。