Score-Based Generative Modeling through Stochastic Differential Equations(泛读)
一句话定位:把「有限个噪声尺度上加噪—去噪」的 SMLD 与 DDPM 推广成「连续时间扩散 SDE + 逆向 SDE」的统一框架。训练只需要估计一个量——时间相关的 score(对数密度的梯度)——就能反演扩散过程生成样本;论文进一步证明每个扩散过程都藏着一个与它共享同一组边际分布的概率流 ODE,把随机采样变成确定性输运,从而免费获得精确似然、唯一可辨识编码与 90% 以上的采样步数削减。这篇论文是后续 flow 谱系(Flow Matching、Rectified Flow、Stochastic Interpolants)连续化思路的出发点,也就是阅读提示里说的「flow 谱系的连续化基础」。
1. 要解决什么问题
生成模型的目标,是从一个简单已知分布(标准高斯噪声)出发,造出数据分布。2020 年前后已经有两条走得通的路线。第一条是 SMLD(Song & Ermon 2019/2020):在多个离散噪声尺度上分别估计 score(概率密度对数关于数据 x 的梯度),生成时用退火 Langevin 动力学从大到小逐个尺度采样。第二条是 DDPM(Ho et al. 2020):定义一条离散加噪马尔可夫链,学一个网络反转每一步去噪。
两条路线的共同点是「用多个离散噪声尺度扰动数据」,但各自为政:噪声尺度的选取方式不同(SMLD 用几何序列 σ_1…σ_N,DDPM 用 β_1…β_N),采样算法彼此独立(annealed Langevin vs ancestral sampling),换一个模型就要重新推导采样规则,离散尺度之间的插值也缺乏理论依据。更关键的是,两者都算不出精确似然(DDPM 只有 ELBO 上下界),也没有可操作的隐编码。本文的问题可以压缩成一句:能不能把这些离散近似连成一个连续时间的统一框架,让训练、采样、似然、可控生成共享同一套理论?
2. 核心思想一:把离散噪声尺度连成连续 SDE
第一个动作是连续化。SMLD 的 N 个噪声尺度在 N→∞ 的极限下,对应的扰动过程收敛到一条连续随机微分方程(SDE);DDPM 的离散链同样如此。于是定义一条正向 SDE:
dx = f(x, t)dt + g(t)dw
这个式子回答的问题:如何用一个连续时间随机过程,把数据分布 p_0 逐步扩散成先验分布 p_T(标准高斯)?逐符号看:x(t) 是 t 时刻的扰动状态,t 从 0 到 T;f(x,t) 叫漂移系数,决定粒子每时刻的确定性移动方向;g(t) 叫扩散系数,决定注入噪声的强度;dw 是标准布朗运动(维纳过程)的增量,代表随机扰动。整条 SDE 没有可训练参数——正向加噪是固定配方。
正向加噪容易,反向去噪在信息上「缺一块」。Anderson(1982)的结论是:给定每个时刻的边际密度 p_t(x),逆向过程仍然是一条扩散过程:
dx = [f(x, t) − g(t)²·∇_x log p_t(x)]dt + g(t)dw̄
这里 ∇_x log p_t(x) 就是 score:概率密度对数关于输入 x 的梯度,指向密度上升最快的方向。w̄ 是时间倒流的布朗运动。这个式子回答的问题:从噪声往回走需要知道什么额外信息?答案只有 score——正向 SDE 的系数全已知,逆向唯一多出来的项就是 score。训练的任务因此被压缩成:估计每个时刻的 score。

3. 核心思想二:score 匹配
score 怎么学?边际密度 p_t(x) 本身不可算,但它的梯度可以用 denoising score matching 间接学。目标是:
min_θ E_t λ(t) E_{x(0), x(t)|x(0)} ‖s_θ(x(t), t) − ∇_{x(t)} log p_{0t}(x(t)|x(0))‖²
这个式子回答的问题:网络 s_θ 该回归什么目标?逐符号看:x(0) 是训练数据点,x(t)|x(0) 是把它按正向 SDE 扰动 t 时间后的样本;p_{0t}(x(t)|x(0)) 是扰动核(从 x(0) 到 x(t) 的转移分布);∇ log p_{0t} 是「已知真实数据点 x(0) 时,扰动样本的密度梯度」——因为条件分布已知,这个梯度是闭式可算的(漂移 f 仿射时扰动核是高斯)。λ(t) 是时刻权重。denoising score matching 保证:最优解 s_θ*(x,t) 几乎处处等于真实 score ∇_x log p_t(x)。
训练全程只是一个回归问题:把扰动后的样本作为输入,让网络输出「指向密度上升方向」的向量。不需要算归一化常数,也不需要显式密度,这是 score 匹配相对似然训练的根本优势。
4. 核心思想三:概率流 ODE 等价性
同一份 score 还能干一件更重要的事:把随机过程换成确定性过程。对任意扩散过程,都存在一个确定性 ODE,其轨迹在每个时刻 t 共享与 SDE 完全相同的边际密度 p_t(x):
dx = [f(x, t) − ½·g(t)²·∇_x log p_t(x)]dt
这个式子要回答的问题:采样能不能不靠随机噪声?逐符号看:与逆向 SDE 的差别只在 g(t)² 项前面多了一个系数 ½——逆向 SDE 是 f − g²·score,概率流 ODE 是 f − ½g²·score。其余符号同前。推导思路如下(附录 D.1):边际密度 p_t 随时间的变化由 Fokker-Planck(Kolmogorov 前向)方程描述;把方程里的二阶扩散项用 score 重写成散度形式(用恒等式 ∇·(GGᵀp_t) = p_t∇·(GGᵀ) + p_t GGᵀ∇log p_t,把二阶导数变成一阶),整条方程就变成了零扩散的 Liouville 方程——它恰好就是某个 ODE 的密度演化方程。于是这个 ODE 与原来的 SDE 诱导出同一族边际密度。
这里要强调一句关键限定:共享的是「边际分布」,两条路径的轨迹完全不同。SDE 的粒子路径是随机的,概率流 ODE 的粒子路径是确定性的、可逆的。这个「同分布、不同轨迹」就是「概率流 ODE 等价性」的全部内容,也是本文最该记住的结论:一个随机扩散过程,可以被一个确定性输运过程在分布层面完全替代。

等价性带来四件免费的东西。其一,精确似然:概率流 ODE 是一个 neural ODE,用瞬时换元公式 log p_0(x(0)) = log p_T(x(T)) + ∫₀ᵀ ∇·f̃_θ dt 就能算任意输入的精确对数似然,散度用 Skilling-Hutchinson 迹估计。其二,唯一可辨识编码:把输入沿 ODE 积分到 x(T) 得到隐编码,由于正向 SDE 没有可训练参数,这个编码在理想条件下由数据分布唯一决定——两个不同架构、不同随机种子独立训练的模型(NCSN++ 4 层 vs 8 层),同一输入的编码相关系数 r≈0.96(图 8)。其三,隐空间操作:插值、温度缩放这类 flow 模型的招牌操作直接可用(图 3 右、图 6)。其四,采样效率:用黑盒 ODE 求解器(RK45)配合自适应步长,容差从 1e-5 放到 1e-1,score 函数求值次数(NFE)从 548 降到 14,减少约 97%,视觉质量基本不变(图 3 左、中)。
5. 三种 SDE 实例:VE、VP、sub-VP
框架还给出了具体的 SDE 家族。SMLD 的离散扰动在极限下对应 VE SDE(Variance Exploding):dx = √(d[σ(t)²]/dt) dw,方差随时间爆炸式增长。DDPM 的离散链对应 VP SDE(Variance Preserving):dx = −½β(t)x dt + √(β(t)) dw,初始方差为 1 时任意时刻方差保持为 1。论文还提出 sub-VP SDE:dx = −½β(t)x dt + √(β(t)(1−e^(−2∫₀ᵗβ(s)ds))) dw,它的方差在任意时刻都被 VP 上界约束,似然表现最好。三条 SDE 的漂移都是仿射的,扰动核全是闭式高斯,训练目标可以直接用。
架构与 SDE 是两个解耦的旋钮:换 SDE(VP→sub-VP)把 CIFAR-10 似然从 3.16 提到 3.02 bits/dim(deep 版 2.99),换架构把 FID 从 2.38 压到 2.20。VE 系(NCSN++:FIR 抗混叠采样、BigGAN residual block、每分辨率 4 个 block、progressive growing)在采样质量上最好,VP/sub-VP 系(DDPM++)在似然上最好,没有一个 SDE 同时赢两项。
6. 采样器与关键实验
采样部分贡献了三个可复用的方法。reverse diffusion sampler:把逆向 SDE 用与正向相同的离散化方式求解,免去为每个新 SDE 单独推导 ancestral 规则,在 CIFAR-10 上略优于 ancestral(VE:FID 4.79 vs 4.98,P1000)。Predictor-Corrector(PC)采样器:每个时间步先用数值求解器预测一步,再用 score-based MCMC(annealed Langevin)修正当前边际分布;PC1000(1000 步预测 + 1000 步修正)在相同计算预算内总优于纯预测加倍步数(VE:3.24 vs P2000 的 4.88)。概率流 ODE 采样:直接解确定性 ODE,配合黑盒求解器拿到 NFE 削减。

关键数字(均带 setup):CIFAR-10 无条件生成上,NCSN++ cont.(deep, VE)+ 连续目标(0.95M iterations × batch 128)+ PC 采样器 1000 步,FID 2.20、IS 9.89,反超无条件 DDPM(3.17)、NCSN(25.32),甚至反超当时最佳条件生成模型 StyleGAN2-ADA(2.42,无条件对条件)。似然上,DDPM++ cont.(deep, sub-VP)在均匀去量化 CIFAR-10 上拿到 NLL 2.99 bits/dim(RK45、atol=rtol=1e-5、5 次采样平均),反超所有专门做最大似然的 flow 模型(Residual Flow 3.28、Flow++ 3.29、Glow 3.35),且训练目标全程没有似然项。分辨率上,改装 NCSN++ 首次从 score-based 模型产出 1024×1024 CelebA-HQ 样本(batch 8、约 2.4M iterations、PC 采样器 2000 步),此前该分辨率只有 GAN 与 VQ-VAE-2 能做到。可控生成上,单一无条件模型加时变分类器或前向过程梯度近似,完成类别条件(CIFAR-10 汽车/马)、inpainting 与 colorization(LSUN 256×256),全程无需重训。
7. 谱系定位:flow 家族的连续化地基
这篇论文处在两条技术路线的交汇点。向后看,它把 SMLD 与 DDPM 收编为两条 SDE 的离散化,DDIM 这类确定性采样在后续视角下可看作 VP 概率流 ODE 的离散化特例。向前看,概率流 ODE 等价性意味着:生成模型可以只关心「确定性概率路径 + 向量场回归」,把扩散 SDE 的随机机制整个放下——这正是 Flow Matching(Lipman et al. 2022)、Rectified Flow(Liu et al. 2022)、Stochastic Interpolants(Albergo & Vanden-Eijnden 2022)做的事:保留 ODE 视角,把路径放宽成任意插值,回归对象从 score 换成速度。因此「概率流 ODE 等价性」与 score 匹配这两点,是 flow 谱系连续化的理论起点。
8. 局限
论文自承与读出的局限至少有七条。采样仍慢于 GAN:高质量样本要数百到数千次 score 网络前向。采样器超参数多:predictor 类型、corrector 步数、信噪比、数值容差、积分下限 ϵ 都要人工调。概率流 ODE 纯 predictor 采样质量明显低于 SDE(VE 上 P1000 FID 15.41 vs PC1000 3.51),随机性对采样质量有实际价值。VE 与 VP/sub-VP 在 FID 与似然上各有胜负,没有一个 SDE 通吃。1024×1024 样本有可见的面部对称瑕疵,且只有定性展示、无该分辨率的 FID。可控生成依赖近似 ∇_x log p_t(x|y) ≈ s_θ + ∇_x log p_t(ŷ|x),严格性论证只覆盖小 t。高效训练还要求扰动核可解析,一般 SDE 的训练成本会显著上升。
把「有限个噪声尺度上加噪—去噪」的两条既有路线(SMLD、DDPM)推广成「连续时间扩散 SDE + 逆向 SDE」的统一框架:训练只需要估计时间相关的 score(对数密度的梯度 ∇_x log p_t(x)),就能反演扩散过程生成样本;论文进一步证明每个扩散过程都对应一个共享同一组边际分布的概率流 ODE,把随机采样变成确定性输运,从而免费获得精确似然、唯一可辨识编码与 90% 以上的采样步数削减,并首次用 score-based 模型生成 1024×1024 高清人脸。这篇论文是后续 flow 谱系(Flow Matching、Rectified Flow、Stochastic Interpolants)连续化思路的出发点。
阅读提示
精读深度:泛读
清单提示:原文提示:抓住「概率流 ODE 等价性」与 score 匹配;这是 flow 谱系的连续化基础。
问题
要解决什么:生成模型的目标是从一个简单已知分布(标准高斯噪声)出发造出数据分布。2020 年前有两条已成功的路线:SMLD(Song & Ermon 2019/2020)在多个离散噪声尺度上估计 score、再用退火 Langevin 动力学采样;DDPM(Sohl-Dickstein et al. 2015;Ho et al. 2020)学习反转一条离散加噪马尔可夫链。本文要解决的问题:把这两套各自独立的『离散噪声尺度 + 专属采样器』纳入一个连续时间统一框架,让训练、采样、似然、可控生成共享同一套理论。
为什么 prior work 不够:SMLD 与 DDPM 的噪声尺度(σ_1…σ_N 与 β_1…β_N)都是有限个离散值,训练目标相似但细节各异;采样算法(annealed Langevin vs ancestral sampling)彼此独立,换一个模型就要重新推导采样规则,离散尺度之间的插值缺乏理论依据。两者都算不出精确似然(DDPM 只有 ELBO 界),也做不了可操作的隐编码。GAN 采样快但训练不稳定,且没有密度。
输入 / 输出
输入
| 名称 | 类型 | 说明 |
|---|---|---|
| data sample x(0) | continuous vector (R^d) | 训练时从数据分布抽取;d = 图像像素数(3×H×W),CIFAR-10 为 3×32×32=3072 |
| time t | scalar in [0,T] | 训练时 t ~ U[0,T] 均匀采样;推理时作为 SDE/ODE 积分变量 |
| noise sample x(T) | continuous vector (R^d) | 推理起点,采样自先验 p_T:VE 用 N(0, σ_max²I),VP/sub-VP 用 N(0,I) |
| 条件信号 y(仅可控生成) | class label / masked image / grayscale image | 训练时只用于训练时变分类器或直接利用前向过程;推理时通过条件逆向 SDE 注入 |
输出
| 名称 | 类型 | 说明 |
|---|---|---|
| score 预测 s_θ(x(t), t) | continuous vector (R^d) | 训练输出,回归 ∇_x log p_{0t}(x(t)|x(0));最优解等于 ∇_x log p_t(x) |
| 生成样本 x(0) | continuous vector (R^d) | 从 x(T) 出发沿逆向 SDE 或概率流 ODE 积分到 t=0 的终点 |
| 隐编码 x(T) 与似然 log p_0(x(0)) | continuous vector / scalar | 沿概率流 ODE 编码输入得到 x(T);用瞬时换元公式算精确对数似然 |
控制频率:n/a(图像生成;采样步数自由选择,论文用 1000/2000 步 PC 或黑盒 ODE 求解器)
数据集
| 数据 | 规模 | 备注 |
|---|---|---|
| CIFAR-10 | 50K train / 10K test,32×32 | 主战场:无条件 FID 2.20 / IS 9.89(NCSN++ cont. deep VE);NLL 2.99 bits/dim(DDPM++ cont. deep sub-VP) |
| CelebA(64×64) | 公开人脸数据集 | VE SDE 架构探索用(batch 64),比较各组件对 FID 的影响 |
| CelebA-HQ(1024×1024) | 公开高清人脸数据集 | 改装 NCSN++ + VE SDE,batch 8、~2.4M iterations,首次产出 score-based 1024×1024 样本(仍有面部对称瑕疵) |
| LSUN bedroom / church outdoor(256×256) | 公开场景数据集 | Figure 3 的 NFE 实验用 256×256 CelebA-HQ(DDPM 设置);inpainting/colorization 用 256×256 LSUN |
架构(摘要)
主干与结构
backbone:NCSN++(VE SDE)/ DDPM++(VP、sub-VP SDE),均基于 Ho et al. 2020 的 U-Net 改造
参数:未公布参数总数;NCSN++ 每个分辨率 4 个 residual block,deep 版翻倍到 8 个
类型:时间相关 score 网络:U-Net 预测 s_θ(x,t) ≈ ∇_x log p_t(x),无显式生成头、无对抗目标
关键组件
- NCSN++:FIR 抗混叠上/下采样(StyleGAN-2)、skip 连接乘 1/√2、BigGAN residual block、每分辨率 4 个 block、输入侧 progressive(residual)
- DDPM++:不装 FIR 与 progressive,其余同 NCSN++
- 连续时间条件:把离散整数步条件换成随机 Fourier 特征嵌入(Tancik et al. 2020,scale=16)
- 训练:denoising score matching 连续目标 Eq(7),t~U[0,T],λ(t) 取 1/E[‖∇ log p_{0t}(x(t)|x(0))‖²]
- 采样:逆向 SDE 的 reverse diffusion / PC 采样器,或概率流 ODE 的黑盒 RK45 求解器
为什么这样设计
整篇论文把生成问题还原成一件具体的事:学会每个时空点 (x,t) 处「密度上升最快的方向」。网络只需要回归 score 这一个量,正反向采样、似然、编码全部由它驱动;架构的改动(FIR、BigGAN block、progressive)与 SDE 的选择(VE/VP/sub-VP)是解耦的两个旋钮,各自独立调优。
数值 sense
| 项 | 值 |
|---|---|
| dimension | CIFAR-10: d=3×32×32=3072;CelebA-HQ 1024²: d=3×1024×1024≈3.1M |
| 训练 | 默认 1.3M iterations × batch 128(CIFAR-10)/64(LSUN);连续目标模型 0.95M iterations;1024² 模型 batch 8、~2.4M iterations |
| sampling | PC 采样器 1000 步(CIFAR-10)或 2000 步(1024²);黑盒 ODE:scipy RK45,atol=rtol=1e-5;VE 用 ϵ=1e-5、VP 用 ϵ=1e-3 |
| sigma_min | VE SDE 的 σ_min=0.01,σ_max 按 Song & Ermon 2020 的 Technique 1 选择;积分区间 [ϵ,1] |
→ 详见 Architecture tab。
关键结果
| 指标 | 值 | 最强 baseline | setup |
|---|---|---|---|
| CIFAR-10 无条件生成 FID(越低越好)/ IS(越高越好) | FID 2.20 / IS 9.89 | 此前无条件扩散:DDPM 3.17、NCSN 25.32、NCSNv2 10.87;无条件 GAN:StyleGAN2-ADA 2.92;条件 GAN:StyleGAN2-ADA 2.42、BigGAN 14.73——论文的无条件模型 FID 2.20 反超当时最佳条件生成模型 | NCSN++ cont.(deep, VE SDE)+ 连续训练目标 Eq(7),0.95M iterations × batch 128,PC 采样器 1000 步,FID 用 50K 样本(tensorflow-gan) |
| CIFAR-10 均匀去量化负对数似然 NLL(bits/dim,越低越好) | 2.99 | 此前最佳 flow 模型:Residual Flow 3.28、Flow++ 3.29、Glow 3.35、FFJORD 3.40;同架构离散 DDPM 的 ELBO ≤3.70(离散数据) | DDPM++ cont.(deep, sub-VP SDE),RK45 黑盒 ODE 求解器 atol=rtol=1e-5、ϵ=1e-5,测试集 5 次采样平均;全程无最大似然训练目标 |
| 1024×1024 高清人脸生成 | score-based 模型首次产出该分辨率样本 | 此前该分辨率只有 GAN(StyleGAN 系)与 VQ-VAE-2 能做到 | 改装 NCSN++(input/output skip progressive)+ VE SDE 连续目标,batch 8、~2.4M iterations,PC 采样器 2000 步、每步 1 次 Langevin 修正(SNR 0.15);论文自承样本有面部对称瑕疵 |
| PC 采样 vs 纯 predictor(CIFAR-10 FID) | VE:ancestral P1000 4.98±0.06 → PC1000 3.24±0.02;probability flow predictor 15.41±0.15 → PC1000 3.51±0.04;VP:probability flow PC1000 3.06±0.03 | 纯 predictor 加倍步数 P2000(VE ancestral 4.88±0.06)仍差于 PC1000;corrector-only C2000 最差(VE probability flow 20.43±0.07) | SMLD/DDPM 离散目标训练(1000 个噪声尺度),5 次采样运行均值±std,batch 1024;『P/C1000』= 1000 步 predictor + 1000 步 corrector |
| 概率流 ODE 采样的 NFE(score 函数求值次数) | 容差 1e-5→1e-1,NFE 从 548 降到 14(减少约 97%) | 论文称减少 90% 以上且视觉质量基本不变;对照是同模型 SDE 采样需要更多步数 | DDPM(Ho et al. 2020 训练设置)在 256×256 CelebA-HQ 上,黑盒 RK45 ODE 求解器(Dormand & Prince 1980),自适应步长随精度容差变化(Figure 3) |
| sub-VP vs VP SDE 的似然(CIFAR-10 NLL) | DDPM++ cont.:3.02 vs 3.16 bits/dim;deep 版:2.99 vs 3.13 | VP SDE 是 DDPM 离散链的连续极限;sub-VP 的方差在任意时刻被 VP 上界约束(附录 B 证明) | 同架构、同 0.95M iterations 训练,只换 SDE;RK45 atol=rtol=1e-5,报告最后一个 checkpoint |
Insights
- 把离散噪声尺度连成连续时间轴后,训练只需要学一个量:score = ∇_x log p_t(x)。逆向 SDE 与概率流 ODE 的系数都从它导出,差一个 ½ 系数(Eq 6 vs Eq 13),整篇论文的生成能力全部挂在这一个量上。
- SDE 与概率流 ODE 共享每一时刻的边际密度,但轨迹完全不同:随机性对采样质量有用(VE 上纯 ODE predictor 的 FID 15.41,配 corrector 后 3.51),确定性对似然与编码有用——同一份 score 可以同时供给两条路。
- 训练目标全程不碰似然,但学到的 score 能把似然算到 2.99 bits/dim,反超所有专门做最大似然的 flow 模型(Residual Flow 3.28)。
- 架构与 SDE 是两个解耦的旋钮:换一个 SDE(VP→sub-VP)就能把似然从 3.16 提到 3.02(deep 版 2.99),换架构(NCSN++ 4→8 blocks)把 FID 从 2.38 压到 2.20。
- 条件分数可分解为无条件 score + 条件项梯度,单一无条件模型就能完成类别条件、inpainting、colorization,训练阶段完全不需要条件信号。
vs 同类工作
- vs SMLD / DDPM(Song & Ermon 2019/2020;Ho et al. 2020):把两套离散噪声目标统一为 VE / VP 两条 SDE 的连续化;DDPM 的 ancestral sampling 被证明只是逆向 VP SDE 的一种离散化(附录 E),并给出通用 reverse diffusion 与 PC 采样器。
- vs 归一化流 / neural ODE(Glow、FFJORD、Residual Flow):flow 靠显式可逆网络结构算似然;本文的似然来自扩散过程的概率流 ODE + 瞬时换元,且编码唯一可辨识(两个不同架构独立训练,同一输入的编码相关系数 r≈0.96,图 8),NLL 2.99 反超 Residual Flow 3.28。
- vs DDIM(Song et al. 2020,同期工作):DDIM 从离散去噪链出发给出确定性采样;本文从连续 SDE 出发给出一般概率流 ODE,后续视角下 DDIM 可看作 VP SDE 概率流 ODE 的离散化特例(论文正文未讨论,属后续解读)。
- vs GAN(BigGAN、StyleGAN2-ADA):训练稳定、无对抗目标、无条件 FID 2.20 反超条件 StyleGAN2-ADA 2.42;代价是采样仍需数百次网络前向,慢于 GAN。
- → flow 谱系(Flow Matching 2022、Rectified Flow 2022、Stochastic Interpolants 2022):后续工作保留『确定性概率路径 + 速度/向量场回归』的 ODE 视角,把起点从扩散 SDE 放宽成任意插值路径,回归对象从 score 换成速度;score-SDE 的概率流 ODE 等价性与连续化框架是这条谱系的理论地基。
局限
- 采样速度仍慢于 GAN(论文自承):高质量样本要数百到数千次 score 网络前向(P1000/PC1000 量级步数),与对抗生成模型相比仍是短板。
- 采样器超参数多:predictor 类型、corrector 步数、Langevin 信噪比 r、数值容差、积分下限 ϵ 都要人工选择,论文没有给出自动调参方法。
- 概率流 ODE 的纯 predictor 采样质量明显低于 SDE(VE 上 P1000 FID 15.41 vs PC1000 3.51),丢掉随机性有实际代价,确定性采样不能无条件白拿。
- VE(FID 最好)与 VP/sub-VP(似然最好)存在权衡:同一框架里没有一个 SDE 同时赢两项指标,实践者要按任务换 SDE,论文自己也提示需针对域与架构实验。
- 1024×1024 样本有可见瑕疵(面部不对称),且该实验只有定性展示、无该分辨率的 FID;『首次』是里程碑式表述,离该任务的 SOTA 仍有距离。
- 可控生成的逆问题推导依赖近似:∇_x log p_t(x|y) ≈ s_θ(x,t) + ∇_x log p_t(ŷ|x),严格性论证只覆盖小 t,大 t 靠『误差对最终样本影响小』的启发式理由,heuristic 成分较重。
- 高效训练要求扰动核 p_{0t}(x(t)|x(0)) 可解析(affine drift 下才是高斯);一般 SDE 需要解 Kolmogorov 前向方程或模拟采样,训练成本会显著上升。
可复现性
- code:https://github.com/yang-song/score_sde(开源,论文称 code 与 checkpoints 均开源)
- weights:开源 checkpoints
- sim_benchmark:n/a(图像生成;CIFAR-10 / CelebA / CelebA-HQ / LSUN 均为公开数据集)
主干与结构
backbone:NCSN++(VE SDE)/ DDPM++(VP、sub-VP SDE),均基于 Ho et al. 2020 的 U-Net 改造
参数:未公布参数总数;NCSN++ 每个分辨率 4 个 residual block,deep 版翻倍到 8 个
类型:时间相关 score 网络:U-Net 预测 s_θ(x,t) ≈ ∇_x log p_t(x),无显式生成头、无对抗目标
关键组件
- NCSN++:FIR 抗混叠上/下采样(StyleGAN-2)、skip 连接乘 1/√2、BigGAN residual block、每分辨率 4 个 block、输入侧 progressive(residual)
- DDPM++:不装 FIR 与 progressive,其余同 NCSN++
- 连续时间条件:把离散整数步条件换成随机 Fourier 特征嵌入(Tancik et al. 2020,scale=16)
- 训练:denoising score matching 连续目标 Eq(7),t~U[0,T],λ(t) 取 1/E[‖∇ log p_{0t}(x(t)|x(0))‖²]
- 采样:逆向 SDE 的 reverse diffusion / PC 采样器,或概率流 ODE 的黑盒 RK45 求解器
为什么这样设计
整篇论文把生成问题还原成一件具体的事:学会每个时空点 (x,t) 处「密度上升最快的方向」。网络只需要回归 score 这一个量,正反向采样、似然、编码全部由它驱动;架构的改动(FIR、BigGAN block、progressive)与 SDE 的选择(VE/VP/sub-VP)是解耦的两个旋钮,各自独立调优。
数值 sense
| 项 | 值 |
|---|---|
| dimension | CIFAR-10: d=3×32×32=3072;CelebA-HQ 1024²: d=3×1024×1024≈3.1M |
| 训练 | 默认 1.3M iterations × batch 128(CIFAR-10)/64(LSUN);连续目标模型 0.95M iterations;1024² 模型 batch 8、~2.4M iterations |
| sampling | PC 采样器 1000 步(CIFAR-10)或 2000 步(1024²);黑盒 ODE:scipy RK45,atol=rtol=1e-5;VE 用 ϵ=1e-5、VP 用 ϵ=1e-3 |
| sigma_min | VE SDE 的 σ_min=0.01,σ_max 按 Song & Ermon 2020 的 Technique 1 选择;积分区间 [ϵ,1] |
正向 SDE 把数据扩散成噪声,逆向 SDE 依赖 score 把噪声还原成数据
原文 caption:Solving a reverse-time SDE yields a score-based generative model. Transforming data to a simple noise distribution can be accomplished with a continuous-time SDE. This SDE can be reversed if we know the score of the distribution at each intermediate time step, ∇x log pt(x).
框架概念图:上半是正向过程(Data → Noise,SDE 逐步加噪,无可学参数),下半是逆向过程(Noise → Data,逆向 SDE 逐步去噪),中间标出关键量 score = ∇_x log p_t(x)。读法:正向只由漂移/扩散系数决定,逆向唯一多出来的项就是 score,所以全部学习任务都集中在这一个量上。这张图是全文的锚点,对应『score 匹配是逆向采样唯一需要的东西』这个论断。
框架总览:同一个 score 同时给出逆向 SDE 与概率流 ODE
原文 caption:Overview of score-based generative modeling through SDEs. We can map data to a noise distribution (the prior) with an SDE (Section 3.1), and reverse this SDE for generative modeling (Section 3.2). We can also reverse the associated probability flow ODE (Section 4.3), which yields a deterministic process that samples from the same distribution as the SDE. Both the reverse-time SDE and probability flow ODE can be obtained by estimating the score ∇x log pt(x) (Section 3.3).
左右两个轨迹/热力图:左边 Forward SDE 的箭头从 Data 指向 Prior,右边 Reverse SDE 从 Prior 指向 Data,图中同时标注了 Probability Flow ODE。读法:重点在『两个反向对象共用同一个 score』——逆向 SDE 的漂移是 f − g²·score,概率流 ODE 的漂移是 f − ½g²·score,差的只是一个系数 ½,都从 score 一步导出。这张图直接支撑『概率流 ODE 等价性』考点,是全文的结构图。
概率流 ODE:放宽容差把 NFE 从 548 降到 14,并给出可插值的隐编码
原文 caption:Probability flow ODE enables fast sampling with adaptive stepsizes as the numerical precision is varied (left), and reduces the number of score function evaluations (NFE) without harming quality (middle). The invertible mapping from latents to images allows for interpolations (right).
三连图:左图横轴是 Evaluation number、纵轴是 Evaluation timepoint,比较数值精度容差 1e-1 / 1e-3 / 1e-5 下黑盒 ODE 求解器的自适应求值点分布(容差越大求值越稀疏);中图是同一模型在不同 NFE(14 / 86 / 548)下生成的人脸,视觉质量基本一致;右图是 latent 插值,两张人脸之间平滑过渡。读法:三格分别对应『效率—质量—可操作性』,是概率流 ODE 实用价值的直接证据:容差从 1e-5 放到 1e-1,score 函数求值次数从 548 降到 14(减少约 97%)且画质不掉。
🎧 音频版
时长 24:53 · Edge TTS
Score-Based Generative Modeling through Stochastic Differential Equations(对话版·泛读)
开场:这篇论文解决什么问题,为什么值得专门做一期
小播:老播,今天这篇题目就很长,叫什么「基于随机微分方程的分数生成建模」。先告诉我,它解决什么问题,值不值得我们专门做一期?
老播:值得,而且这一期可能是整个「扩散与 flow 谱系」里最该先听的一期。一句话背景:2020 年前后,生成模型界有两套已经能用的方法,一套叫 SMLD,一套叫 DDPM,都是「往数据里加噪声,再学一个网络把噪声去掉」的路数,但两套各自为政、互不通用。这篇论文(Yang Song、Jascha Sohl-Dickstein、Diederik Kingma 等,Stanford 和 Google Brain 合作,arXiv 2011.13456,ICLR 2021)做的事是:把两套方法统一成一个连续时间的随机微分方程框架,并且指出,训练只需要学一个量——叫 score,也就是概率密度对数关于数据的梯度。学会这个量,就能从噪声反向生成数据。一句话结论:这篇给出了两条等价的生成路线——随机逆向 SDE,和确定性的概率流 ODE,两条路线共享同一组分布;后面 Flow Matching、Rectified Flow 这些 flow 家族的工作,连续化思路都从这里出发。
小播:先说明一下,这期面向什么听众?
老播:假定你懂基础的机器学习——知道什么是分布、什么是梯度、什么是回归——但可以完全没做过生成模型。每个术语第一次出现我都会给定义,所有数字都带设置和对照,你可以放心跟着走。
小播:所以这篇的主要价值在框架上,刷榜只是顺带的结果?
老播:对,但它也刷榜。它在 CIFAR-10 上把无条件生成 FID 做到了 2.20,把精确似然做到了 2.99 bits/dim,还首次用这类模型生成了 1024×1024 的高清人脸。我们今天四步走:先补背景,讲清楚 SMLD 和 DDPM 各自怎么工作、卡在哪;然后进核心思想,拆成三刀——连续 SDE、score 匹配、概率流 ODE 等价性;再看实验数字;最后把它放进谱系,讲它为什么是 flow 家族的连续化地基,以及它的局限。
背景:两条老路 SMLD 和 DDPM,卡在哪
老播:先立一个定义。生成模型的目标是从一个简单已知的分布出发造出数据分布,简单分布一般取标准高斯噪声。2020 年之前,两条最成功的路线都靠「多步加噪再学去噪」。第一条是 SMLD,全称 Denoising Score Matching with Langevin Dynamics,2019 年 Song 和 Ermon 提出。它的做法是:准备一组从小到大排列的离散噪声尺度,把数据逐个尺度地加噪;在每个尺度上,训练一个网络去估计 score。score 这个词第一次出现,给个定义:score 就是概率密度对数关于输入 x 的梯度,一个向量,指向密度上升最快的方向。生成的时候,用 Langevin 动力学采样:沿着 score 的方向走一小步,再加一点高斯噪声,反复迭代,从最大噪声尺度一路走到最小噪声尺度。
小播:Langevin 动力学这个名字听着吓人,具体是什么?
老播:它就是一种随机游走的采样规则:当前位置加上 score 的若干倍,作为移动方向,然后叠加一个随机扰动,让采样不会卡在某个局部。只要 score 估计得准,采样最终会收敛到目标分布。第二条路线是 DDPM,2020 年 Ho 等人的工作:定义一条离散的马尔可夫加噪链,逐步把数据变成噪声,再训练一个网络学反转每一步去噪,生成时从噪声出发一步步反着走。DDPM 的每个去噪步骤,隐含地也在估计每个噪声尺度下的 score。
小播:两条路都能用,那共同的问题在哪?
老播:问题在「离散」和「各自为政」。SMLD 用几何排列的噪声尺度,DDPM 用自己一套 β 序列,训练目标长得像但细节不同;各自的采样算法——退火 Langevin 和 ancestral sampling——彼此独立,换一个模型就要重新推导采样规则,离散尺度之间怎么插值也没有理论依据。更实际的短板是:两套方法都算不出精确的似然,DDPM 只能给一个叫 ELBO 的上下界;也做不了 flow 模型那种可操作的隐编码。这篇论文的切口就是:把这些离散的噪声尺度,连成一条连续的随机过程,让一切在连续时间里统一起来。
小播:精确似然有什么实际用处,值得专门拿出来说?
老播:两个用途。一是模型评估:给定一张真实图片,能算出模型认为它出现的概率,bits/dim 这个指标直接可比,DDPM 的 ELBO 只是下界,评估时要打折,两套方法没法公平比。二是隐空间操作:插值、编辑这类操作要靠可逆的编码解码,离散去噪链没有这个能力。这两条短板,都在这篇里被连续框架补上了。
核心思想:连续 SDE、score 匹配、概率流 ODE 等价性
老播:第一刀是连续化。把 SMLD 的噪声尺度个数取到无穷大,它的离散扰动链会收敛到一条连续随机过程;DDPM 的离散链也一样。这条连续过程用一个随机微分方程描述,缩写 SDE,写成:
dx = f(x, t)dt + g(t)dw
先给预期:这个式子回答的问题是「怎么用一个连续随机过程,把数据分布逐步扩散成纯噪声」。逐符号看:x(t) 是 t 时刻被扰动的样本,t 从 0 走到 T;f(x,t) 叫漂移系数,决定粒子每时刻确定性移动的方向;g(t) 叫扩散系数,决定每时刻注入噪声的强度;dw 是标准布朗运动的增量,就是随机扰动本身。注意整条 SDE 没有可学习参数,正向加噪是固定配方。小播:为什么正向过程要刻意不放参数?
老播:两个理由。第一,score 匹配要求扰动核能解析算出来,参数一旦进正向过程,扰动核就失去闭式形式,训练目标没法算。第二,没有参数的加噪配方保证每个时刻的分布完全由数据分布和时间决定,这正是后面『编码唯一可辨识』的前提——编码不依赖模型怎么随机初始化。SMLD 在极限下对应一条方差爆炸的 SDE,论文叫 VE;DDPM 对应一条方差守恒的 SDE,叫 VP;论文还顺手续了一条新的 sub-VP,dx = −½β(t)x dt + √(β(t)(1−e^(−2∫₀ᵗβ(s)ds))) dw,它的方差在任意时刻都被 VP 上界约束,似然表现最好。三条 SDE 的漂移都是仿射的,扰动核全是闭式高斯,训练目标直接可用,不用解复杂的方程。离散方法在连续极限下变成了具体的 SDE,这是统一的第一层含义。
小播:正向加噪是固定配方,那反向去噪怎么学?
老播:这就要第二刀,也是全篇唯一要学的东西。Anderson 在 1982 年证明了一个结论:给定每个时刻的边际分布 p_t(x),一条正向扩散过程的反向,仍然是一条扩散过程,写成:
dx = [f(x, t) − g(t)²·∇_x log p_t(x)]dt + g(t)dw̄
这个式子回答的问题:从噪声往回走,除了已知的正向系数,还需要知道什么?答案只有一项:∇_x log p_t(x),也就是每个时刻的 score,对数密度梯度。w̄ 是时间倒流的布朗运动。正向系数 f、g 全已知,逆向唯一多出来的项就是 score,所以训练被压缩成:估计每个时刻的 score。
小播:score 怎么估计?边际分布本身算不出来啊。
老播:用 score 匹配,具体叫 denoising score matching。训练目标长这样:对随机时刻 t,从数据里抽一个 x(0),按正向 SDE 把它扰动到 x(t),然后让网络 s_θ(x(t), t) 去回归「已知真实数据点 x(0) 时,扰动样本 x(t) 的密度梯度」。这个目标的关键点在于:因为条件分布已知——漂移 f 是仿射时,扰动核是闭式高斯分布——所以回归目标可以直接算出来。数学结论保证:训练到最优时,网络输出几乎处处等于真实的边际 score。这里有个对比值得讲透:老派的能量模型也想学密度,但它要估计一个归一化常数,高维下算不动;score 是密度对数求导后的结果,归一化常数在求导里直接消掉,所以 score 匹配绕开了这个死结。整个训练就是一个普通的最小二乘回归,没有对抗训练,也不碰似然。这就是 score 匹配这一刀的全部内容:生成模型的训练,退化成了「学会密度上升最快的方向」这一个回归问题。
小播:好,score 学会之后,逆向 SDE 就能用了。那概率流 ODE 是怎么回事?你开场说的第二条路线。
老播:这是第三刀,也是全篇最核心的结论,阅读提示里说的「概率流 ODE 等价性」。对任意扩散过程,都存在一个确定性 ODE,它和 SDE 共享每个时刻完全相同的边际分布 p_t(x),写成:
dx = [f(x, t) − ½·g(t)²·∇_x log p_t(x)]dt
先给预期:这个式子回答的问题是「采样能不能完全去掉随机性」。逐符号看:和逆向 SDE 长得几乎一样,唯一的差别在 g(t)² 前面多了一个系数 ½——逆向 SDE 是 f 减 g² 乘 score,概率流 ODE 是 f 减二分之一 g² 乘 score。同一个 score,两个方向都靠它。推导思路(附录 D.1)是这样的:边际密度 p_t 随时间的演化由 Fokker-Planck 方程描述,方程里有个二阶导数项;用一条恒等式,把这一项改写成散度形式,二阶导数就消失了,整个方程变成零扩散的 Liouville 方程;而 Liouville 方程恰好就是一个普通 ODE 的密度演化方程。所以这个 ODE 诱导出的边际密度,和 SDE 逐时刻相同。
小播:这个 ½ 系数是哪里来的?我总担心是拍脑袋配出来的。
老播:它来自 Fokker-Planck 重写那一步的代数:把二阶扩散项改写成散度项时,恒等式里自然出现二分之一,然后它把原本属于随机噪声的那部分贡献,并进了确定性漂移。它拍不了脑袋,是推导的产物。附带一个实际含义:SDE 的数值求解每一步都要抽随机数,而 ODE 的每一步是纯确定的,所以概率流 ODE 能直接用现成的自适应黑盒求解器,这也是后面 NFE 大幅削减的原因。
小播:等一下,我复述一遍确认理解:SDE 和这个 ODE,每一时刻的分布完全一样,但粒子走的轨迹不一样?
老播:完全正确。这句话值得再强调一遍:概率流 ODE 等价性说的是「同分布、不同轨迹」。SDE 的粒子路径带随机性,概率流 ODE 的粒子路径是确定性的、可逆的。分布层面可以互相替代,轨迹层面完全是两回事。这个等价性带来四件免费的东西。第一,精确似然:概率流 ODE 是一个神经网络 ODE,用瞬时换元公式 log p_0(x(0)) = log p_T(x(T)) + ∫₀ᵀ 散度 dt,就能算任意输入的对数似然,散度用 Hutchinson 迹估计,这是 DDPM 只有 ELBO 界做不到的。第二,唯一可辨识编码:把输入沿 ODE 积分到 x(T) 得到隐编码,因为正向 SDE 没有可学参数,这个编码在理想条件下由数据分布唯一决定。第三,隐空间操作:插值、温度缩放这类 flow 模型的招牌操作直接可用。第四,采样效率:用自适应步长的黑盒 ODE 求解器,在 256×256 CelebA-HQ 上,容差从 1e-5 放到 1e-1,score 函数求值次数从 548 次降到 14 次,减少约 97%,视觉质量基本不变。对比一下,DDPM 原文采样要走 1000 步。
老播:等价性还附带第五件礼物,可控生成。条件 score 可以拆成无条件 score 加条件项的梯度,所以单一无条件模型,推理时注入类别、掩码或者灰度信息,就能做类别条件生成、图像补全、上色,全程不用重训。这条留到实验部分给数字。
小播:那是不是说,以后采样直接用这个 ODE 就行,不需要随机 SDE 了?
老播:这里有个实验上非常诚实的反例,先卖个关子,实验部分详细讲:纯概率流 ODE 采样在 VE SDE 上质量会明显变差,配上论文提出的 Predictor-Corrector 采样器——先用数值求解器预测一步,再用 Langevin 修正一步——才能把质量救回来。说明随机性对采样质量是有实际价值的,确定性主要换来似然、编码和效率。这也是「同分布、不同轨迹」的深层含义。
看实验:FID、似然、采样效率各赢在哪
小播:好,数字说话。先看最直接的生成质量数字。
老播:CIFAR-10 无条件生成。setup:模型叫 NCSN++ 的连续版本,用 VE SDE,训练 0.95M iterations,batch 128,PC 采样器 1000 步。结果 FID 2.20、Inception score 9.89。对照:2020 年的扩散模型 DDPM 是 FID 3.17,更早的 SMLD 是 25.32;GAN 那边,无条件 StyleGAN2-ADA 是 2.92,连当时最佳的条件生成模型 StyleGAN2-ADA 条件版也只有 2.42。也就是说,这篇的无条件模型 FID 2.20 反超了当时最佳的条件模型,而且全程没用任何标签。FID 和 Inception score 都是衡量生成图像质量与多样性的标准指标,数值越低越好(FID),这里两个方向同时刷新。
小播:似然那个 2.99 bits/dim 呢?这个数字怎么读?
老播:bits/dim 是图像负对数似然的单位,数值越低表示模型给数据的概率越高。setup:模型叫 DDPM++ 连续版加深,用 sub-VP SDE,在均匀去量化的 CIFAR-10 上评估,用黑盒 RK45 求解器,容差 1e-5,测试集 5 次采样取平均。结果 2.99 bits/dim。对照全是专门做最大似然的 flow 模型:Residual Flow 3.28、Flow++ 3.29、Glow 3.35、FFJORD 3.40。注意这篇的训练目标里根本没有似然项,只是学 score,却把似然做到了所有最大似然模型之上,这个对照在 2021 年相当出乎意料,值得记住。
小播:采样效率那块,PC 采样器和 NFE 的数字再给一遍?
老播:给两组。第一组是 CIFAR-10 上的采样器对比,全部 1000 步、5 次采样取均值:VE SDE 上用 ancestral 预测器,FID 4.98;换成 PC 采样器(1000 步预测加 1000 步修正),FID 降到 3.24,计算量翻倍但质量明显更好;而同样计算量的纯预测器加步数到 2000 步,只有 4.88。纯概率流 ODE 预测器在 VE 上最差,FID 15.41,但配上修正器能回到 3.51。第二组是采样步数:256×256 CelebA-HQ 上,概率流 ODE 配合自适应求解器,容差放 100 倍,NFE 从 548 降到 14,减少约 97%。这两个数字都对应同一个结论:确定性 ODE 加对采样器,可以既快又不掉质量。
小播:PC 采样器为什么有效,能不能说得再具体一点?
老播:修正器的作用对象是分布,步长的作用对象是轨迹。数值求解器每走一步都有离散误差,误差会让当前这批样本的分布偏离目标边际 p_t;Langevin 修正做的事情,就是把样本分布往 p_t 拉回去。这解释了为什么纯预测器把步数加倍(P2000)反而比不过加修正器(PC1000):加步数只减小局部误差,修正器直接对着分布说话。同架构下换 SDE 的对照也值得记一笔:DDPM++ 连续版用 sub-VP 是 3.02 bits/dim,用 VP 是 3.16,加深后分别是 2.99 和 3.13——只换 SDE 就换来了更低的 bits/dim,这是「架构与 SDE 是两个独立旋钮」最干净的证据。
小播:还有 1024×1024 高清人脸,这个里程碑怎么讲?
老播:改装版 NCSN++ 配 VE SDE,batch 8、约 2.4M iterations,PC 采样器 2000 步,首次从这类 score-based 模型产出 1024×1024 的 CelebA-HQ 人脸。对照:此前这个分辨率只有 GAN 和 VQ-VAE-2 能到。论文自己的话是「不完美,比如面部对称性有可见瑕疵」,所以这是一块里程碑,但离该分辨率的最优质量还有距离。整页图 Figure 3 值得停下来读:左图横轴是求解器求值次数、纵轴是时间点,三种精度的自适应步长分布;中图是同一模型在 NFE 14、86、548 下生成的人脸,画质基本一致;右图是两张人脸之间的隐编码插值,过渡平滑——这三格分别对应效率、质量、可操作性三个卖点。
小播:可控生成和隐编码那块,有没有能落到地上的验证?
老播:有两组。第一组是唯一可辨识编码:两个不同架构、不同随机种子的模型——NCSN++ 每个分辨率 4 层和 8 层——独立训练后,对同一张 CIFAR-10 测试图编码,得到的隐编码逐维度接近,相关系数 r≈0.96,对照是打乱顺序后的编码相关性明显下降。这个实验支撑「正向 SDE 没有可学参数,编码由数据分布唯一决定」的论断。第二组是可控生成:类别条件生成在 32×32 CIFAR-10 上做,汽车和马各四行样本;图像补全和上色在 256×256 LSUN 上做,每行第一列是原图、第二列是掩码图或灰度图、后面几列是模型补出来的结果——这些都是单一无条件模型推理时注条件得到的,训练阶段完全没见过条件信号。
它在谱系里的位置:flow 家族的连续化地基
老播:把它放进谱系,一句话就能说清它的分量。向后看,它把 SMLD 和 DDPM 收编成两条 SDE 的离散化,DDIM 这类确定性采样在后续视角下可看作 VP 概率流 ODE 的离散化特例;向前看,Flow Matching、Rectified Flow、Stochastic Interpolants 这几篇 2022 年的工作,做的都是同一件事:保留「确定性概率路径加向量场回归」这个 ODE 视角,把起点从扩散 SDE 放宽成任意插值路径,回归对象从 score 换成速度。具体讲,Flow Matching 把回归目标从 score 换成速度场,路径从扩散 SDE 放宽成任意插值——比如最简单的线性插值;Rectified Flow 用重排耦合把轨迹拉直;Stochastic Interpolants 把起点终点都设计成任意分布。它们共同的做法,是把 score-SDE 里的随机扩散机制整个放下,只留概率流 ODE 那条确定性主干。所以「概率流 ODE 等价性」加「score 匹配」这两点,就是 flow 谱系连续化的理论地基,这也是阅读提示要我们抓住的地方。
也要说局限:哪些地方它没解决
小播:最后说局限。论文自己承认了哪些?
老播:第一条,采样仍然慢于 GAN:高质量样本要几百到几千次 score 网络前向,而 GAN 一次前向就出图,论文明确说「remain slower at sampling than GANs」。第二条,采样器超参数特别多:预测器类型、修正器步数、Langevin 信噪比、数值容差、积分下限,都要人工调,论文没有给出自动选择方法。第三条,概率流 ODE 纯预测器采样质量明显低于 SDE——就是前面 VE 上 FID 15.41 那个反例——说明随机性有实际价值,确定性采样不能无条件白拿。第四条,VE 和 VP/sub-VP 各赢一头:VE 的 FID 最好,VP/sub-VP 的似然最好,没有一个 SDE 同时赢两项,实践者要按任务换配置。第五条,1024×1024 只有定性展示、没有该分辨率的 FID 指标,样本还有面部对称瑕疵。第六条,可控生成那条逆问题路线依赖一个近似——把条件 score 拆成无条件 score 加条件项梯度——严格论证只覆盖小时刻,大时刻靠的是启发式理由。我们读下来觉得,最值得留意的还是第一条和第三条:这篇证明了框架的丰富性,但采样效率和随机性的角色,留给后面很多年去解决。
小播:这些局限里,哪一条最影响它后来被实际采用?
老播:超参数多那条最实际。社区后来花了好几年,才把采样器收敛成少数几个标准配方,比如 DDIM、DPM-Solver,以及后面 flow 家族更简单的欧拉采样;这些工作要解决的,正是这篇留下的『采样器太多、怎么选』这个问题。
收尾:记住这三件事
小播:好,收尾。我这期记住的三件事:第一,生成模型的训练可以压缩成一个量——score,也就是对数密度梯度,学会它,逆向 SDE 和概率流 ODE 两个方向都能生成。第二,概率流 ODE 等价性:同一个扩散过程,存在一条确定性 ODE 与它共享每个时刻的分布,但轨迹不同;确定性换来精确似然、唯一编码和 97% 的步数削减,随机性则换来采样质量。第三,这篇是 flow 谱系的连续化地基,后面的 Flow Matching、Rectified Flow 都站在概率流 ODE 这条主干上。
老播:补一句展望:这篇论文之后,「先定义一条概率路径、再回归它的向量场」成了生成模型的标准范式,Stable Diffusion 3、Sora 这一代模型的采样 ODE 都能追溯到这里的概率流 ODE。不过它也给我们留了一道思考题:当采样步数被压到个位数时,概率流 ODE 的直线化程度,直接决定误差,而这正是下一期 rectified flow 要解决的问题。今天先到这里。