好,第四讲:Score SDE。
这一讲是 diffusion 数学的”加冕时刻”——把第一讲(变分线)和第二讲(score 线)正式统一在一个连续时间的随机微分方程框架下。Song et al. 2021 的论文 “Score-Based Generative Modeling through Stochastic Differential Equations” 是这条线的集大成者。
我会按这个顺序展开:
- 为什么需要连续时间视角
- SDE 的基础(Itô 微积分最小集)
- 前向 SDE:DDPM 和 NCSN 都是它的特例
- Anderson 反向 SDE:这一讲的”心脏”
- Probability Flow ODE:确定性视角
- 训练:连续时间的 score matching
- 统一图景
一、动机:从离散到连续
回顾我们走过的路:
- DDPM:离散链 $x_0 \to x_1 \to \cdots \to x_T$,$T = 1000$
- NCSN:离散噪声尺度 $\sigma_1 > \cdots > \sigma_L$
每个都是”离散时间”的过程。但思考一下:
- $T$ 是任意选的——为什么是 1000?500 行不行?2000 呢?
- $\beta_t$ 是个离散 schedule,它是某种连续函数的”采样”
- DDPM 和 NCSN 看起来是不同的过程,但最终训练目标几乎相同($\epsilon$-预测 vs score-预测,差一个标量)
这强烈暗示:它们是同一个连续过程的两种离散化。让 $T \to \infty$、$\Delta t \to 0$,会得到一个连续时间的 SDE,所有特例都能从它推出来。
这就是 Score SDE 的核心思想——连续时间是 diffusion 的”自然语言”,离散都是它的近似。
二、SDE 基础(最小必备)
我假设你只接触过 ODE,我们快速过 SDE 的核心概念。
2.1 什么是 SDE?
ODE:$\frac{dx}{dt} = f(x, t)$,确定性演化。
SDE:加上随机扰动:
- $f(x, t)$:漂移(drift)——确定性的”流向”
- $g(t)$:扩散系数——随机扰动的强度
- $dw$:布朗运动的增量——核心的”随机种子”
2.2 布朗运动(Wiener 过程)
$w_t$ 是布朗运动,意思是:
- $w_0 = 0$
- 增量 $w_{t+\Delta t} - w_t \sim \mathcal{N}(0, \Delta t)$,且与过去独立
- 路径连续但处处不可微(这是关键技术点)
直观:$dw$ 是”无穷小的高斯增量”,标准差 $\sqrt{dt}$。
2.3 Euler-Maruyama 离散化
把 SDE 离散化到步长 $\Delta t$:
注意:漂移项是 $\Delta t$,扩散项是 $\sqrt{\Delta t}$ ——这是 SDE 和 ODE 的关键区别。$\Delta t$ 小时,$\sqrt{\Delta t} \gg \Delta t$,随机扰动主导短时行为。
2.4 Fokker-Planck 方程
我们关心的不是某条具体路径,而是分布 $p_t(x)$ 怎么演化。Fokker-Planck 方程给出答案:
这是个偏微分方程(PDE),描述密度的时间演化:
- 第一项:漂移导致的输运
- 第二项:扩散导致的”模糊化”(就是热方程里的拉普拉斯算子)
我们用不到这个 PDE 的解析解,但要知道它的存在——它是反向 SDE 推导的关键。
三、前向 SDE:DDPM 和 NCSN 是特例
3.1 一般前向 SDE
定义前向 SDE($t \in [0, T]$):
我们要选 $f, g$ 使得:
- $t = 0$:$x_0 \sim p_{\text{data}}$
- $t = T$:$x_T$ 接近某个简单分布(高斯)
3.2 VP-SDE(对应 DDPM)
Variance Preserving SDE:
让我们验证它对应 DDPM。Euler-Maruyama 离散化($\Delta t = 1$,$\beta_t = \beta(t)$):
而 $\sqrt{1 - \beta_t} \approx 1 - \frac{1}{2}\beta_t$(泰勒展开,$\beta_t$ 小)。所以这正是 DDPM 的离散公式:
VP-SDE 就是 DDPM 的连续时间极限——精确到一阶,但 $\sqrt{1-\beta_t}$ 用了精确形式而非泰勒近似(这保证了方差严格守恒)。
VP-SDE 的边际分布也是闭式:
其中 $\bar\alpha(t) = \exp\left(-\int_0^t \beta(s)\, ds\right)$ ——离散版的 $\bar\alpha_t$ 的连续推广。
3.3 VE-SDE(对应 NCSN)
Variance Exploding SDE:
(没有漂移项)边际分布:
——直接给 $x_0$ 加方差为 $\sigma^2(t)$ 的高斯。这正是 NCSN 的多尺度噪声,只是从离散尺度 $\sigma_l$ 变成连续函数 $\sigma(t)$。
3.4 统一视角
DDPM 和 NCSN 都是前向 SDE 的特例——它们看起来是不同的过程,但在 SDE 框架下只是参数化的差异:
| $f(x, t)$ | $g(t)$ | $x_T$ 分布 | |
|---|---|---|---|
| VP (DDPM) | $-\frac{1}{2}\beta(t) x$ | $\sqrt{\beta(t)}$ | $\mathcal{N}(0, I)$ |
| VE (NCSN) | $0$ | $\sqrt{d\sigma^2/dt}$ | $\mathcal{N}(0, \sigma^2(T) I)$ |
第一个统一:前向过程不是问题,关键是怎么逆向。
四、Anderson 反向 SDE:这一讲的心脏
这是 Score SDE 论文最关键的引用——Anderson (1982) 的一个经典定理。
4.1 定理陈述
给定前向 SDE:
它有一个对应的反向 SDE:
时间从 $T$ 走到 $0$,$d\bar w$ 是反向时间的布朗运动。
关键点:只要知道每个时刻的 score $\nabla_x \log p_t(x)$,就能精确反向运行 SDE,从 $p_T$ 采样回 $p_0$。
4.2 这是什么意思?
让我们消化这个公式的威力:
- 前向 SDE:把数据加噪到高斯——已知,简单
- 反向 SDE:从高斯回到数据——只需要 score!
- score 怎么得到:用 score matching 训练 → 连续版的 DSM
这就是 score-based generative modeling 的完整框架:
- 选一个前向 SDE(VP/VE/任意)
- 用 score matching 学 $s_\theta(x, t) \approx \nabla_x \log p_t(x)$
- 把 $s_\theta$ 代入反向 SDE,从 $\mathcal{N}(0, I)$ 数值求解到 $t = 0$
4.3 反向 SDE 的简单证明思路
让我给你一个非严谨但直观的推导,看清楚 score 为什么会出现。
考虑前向 SDE 的 Fokker-Planck 方程:
我们想找一个反向 SDE,它的 FPE 给出同样的 $p_t$(只是时间倒着走)。
技巧:把 $\nabla^2 p_t = \nabla \cdot (\nabla p_t)$,而 $\nabla p_t = p_t \nabla \log p_t$(对数导数公式!)。所以:
代回 FPE:
注意我们做了一个代数恒等变形:把 $\frac{1}{2} g^2 \nabla \cdot (p_t \nabla \log p_t)$ 拆成两份,一份移到第一项里(变成 $-g^2 \nabla \log p_t$ 加进漂移),另一份留在原位置。
这个新的 FPE 形式对应的 SDE:
这就是反向 SDE 的形式(细节上时间方向需要正式处理,但核心逻辑就是这个对数导数变换)。
4.4 关键技术工具:对数导数公式
注意整个推导的核心又是:
——同一个公式,在 score matching 推导里用过,在分部积分里用过,在 DSM 等价性证明里用过。
这是 score 视角下反复出现的”瑞士军刀”。
4.5 一个直觉解释
反向 SDE 的形式是:
直觉:
- 保留扩散项 $g\, d\bar w$:反向也加噪声(对应 DDPM 采样里的 $\sigma_t z$)
- 漂移项变了:原本是 $f$,现在是 $f - g^2 \nabla \log p_t$
- $- g^2 \nabla \log p_t$ 把粒子推向高密度区域——score 指向数据密度,这一项是”反向的拉力”
物理图景:前向是”扩散+漂移”,反向是”反扩散(沿 score 方向走)+ 同样的漂移修正 + 噪声”。score 是反向过程的”导航星”。
五、Probability Flow ODE:确定性视角
Anderson 反向 SDE 是 score-based 生成的”标准答案”,但 Score SDE 论文还做了一件神奇的事:给出对应的确定性 ODE。
5.1 神奇的事实
可以构造一个ODE(没有随机项):
它的解 $x(t)$ 与反向 SDE 有相同的边际分布 $p_t$。
注意系数:从反向 SDE 的 $g^2$ 变成 $\frac{1}{2}g^2$,扩散项消失。
5.2 这意味着什么?
两件事:
(1) 采样可以是确定性的
不需要任何随机性,只要数值求解 ODE。给定 $x_T \sim \mathcal{N}(0, I)$,确定性地走到 $x_0$ ——同一个 $x_T$ 永远给同一个 $x_0$。这是 DDIM 的连续版本(DDIM 其实就是这个 ODE 的特定离散化)。
(2) 可以精确算似然
ODE 是可逆变换,通过瞬时变量替换公式(continuous normalizing flows 的核心):
(其中 $\tilde f$ 是 ODE 的右端)
这给出 $p_0(x_0)$ 的精确对数似然——对比 ELBO 只是下界。这让 diffusion 成为真正的概率模型,能做密度估计、anomaly detection 等。
5.3 SDE vs ODE 的对比
| 反向 SDE | Probability Flow ODE | |
|---|---|---|
| 形式 | $dx = (f - g^2 s)\,dt + g\, d\bar w$ | $dx = (f - \frac{1}{2}g^2 s)\, dt$ |
| 随机性 | 有 | 无 |
| 同一起点 | 不同采样得不同结果 | 唯一解 |
| 边际分布 | 等于真实 $p_t$ | 等于真实 $p_t$ |
| 似然计算 | ELBO 下界 | 精确似然 |
| 采样多样性 | 高(随机性贡献) | 低(完全由 $x_T$ 决定) |
| 数值求解 | Euler-Maruyama 等 | RK4 等高阶 ODE solver |
两者的边际分布相同——但路径不同。ODE 给了一条”最短路径”,SDE 给了一族”加噪路径”。
5.4 为什么会有这个 ODE?
简单的直觉:Fokker-Planck 方程
可以重写为输运方程(连续性方程)的形式:
其中 $\tilde f = f - \frac{1}{2}g^2 \nabla \log p_t$。
输运方程对应的就是 ODE $dx/dt = \tilde f(x, t)$ ——粒子按这个速度场运动,密度自动满足 FPE。
所以 SDE 和 ODE 是”边际分布等价”的两个版本——一个有随机性,一个没有,但它们描述的概率密度演化完全一样。
六、训练:连续时间的 score matching
我们要学 $s_\theta(x, t) \approx \nabla_x \log p_t(x)$ 对所有 $t \in [0, T]$ 同时成立。
6.1 连续 score matching 损失
其中 $\lambda(t)$ 是个权重函数(比如 $\lambda(t) = g(t)^2$,这选择对应 ELBO 优化)。
但 $\nabla \log p_t(x)$ 还是不知道。用 DSM 的连续版:
对 VP-SDE,$p_t(x_t \mid x_0) = \mathcal{N}(\sqrt{\bar\alpha(t)} x_0, (1-\bar\alpha(t)) I)$,条件 score 是 $-\epsilon/\sqrt{1-\bar\alpha(t)}$,所以:
定义 $\epsilon_\theta := -\sqrt{1-\bar\alpha(t)}\, s_\theta$,选 $\lambda(t) = (1-\bar\alpha(t))$:
正是 DDPM 的 $L_{\text{simple}}$!
第二个统一:DDPM 的训练目标是连续 score matching 的特定离散化 + 特定权重选择。
七、统一图景:把所有线索串起来
现在我们终于可以画出 diffusion 数学的完整地图。
7.1 三条线索的对照
| 视角 | 来源 | 核心数学对象 |
|---|---|---|
| 变分 | Sohl-Dickstein 2015, DDPM 2020 | 离散马尔可夫链 + ELBO |
| Score | Hyvärinen 2005, NCSN 2019 | score $\nabla \log p$ + Langevin |
| SDE | Song 2021 | 连续 SDE + 反向 SDE + ODE |
7.2 它们如何统一
前向:
- DDPM 的离散链 = VP-SDE 的 Euler-Maruyama 离散化
- NCSN 的多尺度噪声 = VE-SDE 的 Euler-Maruyama 离散化
训练:
- DDPM 的 $L_{\text{simple}}$ = 连续 DSM 的离散化(特定 $\lambda$)
- NCSN 的加权 DSM = 同样的连续 DSM(不同 $\lambda$)
- $\epsilon_\theta = -\sqrt{1-\bar\alpha(t)}\, s_\theta$ —— 一个简单标量变换
采样:
- DDPM 的 ancestral sampling = 反向 SDE 的特定离散化
- DDIM = Probability Flow ODE 的特定离散化
- NCSN 的 annealed Langevin = 反向 SDE 的另一种离散化
7.3 SDE 视角带来的新东西
不只是统一,SDE 视角还带来新工具:
- 更好的采样器:能用高阶 ODE/SDE 数值求解器(RK4、predictor-corrector)
- 精确似然:Probability Flow ODE 给出精确 $\log p_0$
- 可控生成:Conditional reverse SDE 提供框架,classifier guidance、CFG 都从这里推
- 任意路径:启发了 Flow Matching、Rectified Flow 等用任意概率路径的方法
- 在流形上:可以推广到 Riemannian SDE,用于分子、机器人
八、一个总览图
让我把整个框架画一遍:
1 | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ |
九、一个深刻的反思
走到这里,值得停下来问:这一切为什么如此优雅?
我的理解是:diffusion 的”连续时间本质”反映了一个深刻的物理事实——数据流形在欧氏空间中的”加噪/去噪”过程,本质就是一个被 score 引导的随机过程。
- 前向(扩散) = 自然的热力学第二定律,信息丢失,趋向平衡分布
- 反向(去噪) = 用 score 这个”信息梯度”逆转扩散,从平衡回到结构
- $T \to \infty$、$\Delta t \to 0$ 是这个过程的”自然单位”——离散步数只是数值近似的产物
所以 diffusion 不是一个被设计出来的算法——它是一个被发现的物理过程,不同的研究者从不同入口(变分、score、SDE)进入同一个数学结构。
这种”被多个独立路径同时发现”是数学和科学里很罕见的——通常只发生在你触到了真正的 deep structure。
十、要点回顾
- 连续时间 SDE 是 diffusion 的自然语言,DDPM 和 NCSN 是它的离散化
- Anderson 反向 SDE:只要有 score,就能反向运行任何前向 SDE
- Probability Flow ODE:同样的边际分布,确定性版本,系数从 $g^2$ 变 $\frac{1}{2}g^2$
- 训练用连续 DSM,等价于 DDPM 的 $L_{\text{simple}}$(差一个时间权重)
- 采样:反向 SDE 离散化(DDPM,Langevin)或 ODE 离散化(DDIM,DPM-Solver)
- ODE 视角带来精确似然
- 三条线在 SDE 框架下完全统一——DDPM 是 VP-SDE 的 Euler 步,NCSN 是 VE-SDE 的 Langevin 离散
- score $\nabla \log p$ 是 diffusion 的”灵魂”——所有视角最终都依赖它