Lecture 03: Score Matching and Guidance

本讲主线

Lec 1-2 主要用 flow matching 学习 marginal vector field,然后通过 ODE 从 noise 走到 data。本讲换一个等价视角:学习 score function,再用它做 SDE stochastic sampling;然后讨论如何把生成过程条件化到 prompt/class 上,特别是现代模型里非常核心的 classifier-free guidance, CFG。

0. 课前回顾:从 Flow Matching 到本讲问题

Flow matching 里已经有三层对象:conditional probability path、conditional vector field,以及 marginal 后得到的真正用于生成的 vector field。

0.1 Conditional probability path

给定一个 data point ,conditional probability path 从简单噪声分布插值到这个 data point。

最重要的例子是 Gaussian conditional probability path:

其中 schedulers 满足:

采样形式是:

直觉: 时只有 noise, 时回到 data。

0.2 Conditional vector field

Conditional vector field 是一个 ODE velocity field,使得 ODE 的边缘分布正好沿着 conditional path 走:

对于 Gaussian path,它有显式表达式:

也可以把 代进去,得到训练时最常用的 target velocity:

0.3 Marginalization trick

Conditional vector field 会把所有点推到同一个 ,本身不能直接生成新样本。真正的生成 field 是对所有 做 posterior-weighted average:

它满足:

特别地,。

0.4 Flow matching training 回顾

Flow matching 的关键是:虽然 难以直接算,但训练网络去拟合 conditional target ,最优解会等价于学到 marginal field。

一般形式:

Gaussian path 下:

本讲的转折点

Flow matching 学的是 velocity/vector field。Diffusion model 的经典表述更喜欢学 score function。本讲要说明:在 Gaussian probability path 下,学 velocity 和学 score 本质上可以互相转换。

1. Score function:log-likelihood 的梯度

对任意 density ,score function 定义为:

几何直觉: 指向 log-likelihood 上升最快的方向。也就是说,如果当前位置 在低概率区域,score 会指出“往哪里走更像数据”。

为什么不是直接学 likelihood?

在高维生成模型中, 本身的归一化常数、密度值通常很难处理;而 score 只需要知道 log-density 的局部梯度。Diffusion/score-based models 正是利用这个梯度信息来逐步把 noise 拉回 data manifold。

2. Conditional score 与 marginal score

回到 probability path:

  • conditional score:
  • marginal score:

它们之间有和 vector field 完全平行的 marginalization 关系:

这里的权重就是 posterior-like quantity:给定 noisy sample ,不同 clean data 的相对可能性。

2.1 Gaussian path 的 conditional score

对 Gaussian conditional path:

其 log-density 中与 有关的部分是:

因此:

如果写成 noisy sample ,那么:

这条公式非常重要,因为它直接导出 denoising score matching 的训练目标。

3. Velocity field 与 score function 的转换

Gaussian path 里,conditional vector field 和 conditional score 都是关于 的线性函数。因此它们可以互相重参数化。

定义:

则有:

marginal 版本也成立:

这意味着:

  • 如果学到了 marginal vector field ,就能恢复 marginal score 。
  • 如果学到了 marginal score ,也能恢复 marginal vector field。
  • 早期 diffusion models 往往直接学习 score/noise,再把它转换成 vector field 做采样。

端点附近的数值问题

上面公式里有 、 的分母。实际实现中, 或 附近常需要避开端点、clip scheduler,或换成更稳定的 parameterization。不要把这些理论公式机械地在端点代入。

3.1 Denoiser parameterization

除了 velocity 和 score,还可以学习 denoiser,即从 noisy sample 估计 clean data 的 posterior mean:

对于 Gaussian path,denoiser、score、velocity 都可以互相恢复。直觉上,denoising diffusion models 的名字来自这里:模型在 noisy input 上学习恢复干净信号或恢复噪声。

4. Score Matching:如何学习 marginal score

目标是学:

直接做 score matching 的 loss 是:

问题: 是 marginal path 的密度,通常涉及对所有 data 积分,无法直接算;所以 也不可得。

4.1 Denoising score matching

可行的替代目标是拟合 conditional score:

关键定理:

其中 与 无关,所以两者梯度相同:

这和 flow matching 的 trick 完全平行:训练时用 tractable 的 conditional target,最优时学到的是 marginal object。

4.2 Gaussian path 下的 DSM loss

由前面的 Gaussian score:

所以 DSM loss 可以写成:

这说明 score network 本质上要预测 corrupted data 中的噪声方向。

低噪声处不稳定

当 时,target 的尺度会很大,训练容易数值不稳定。这也是 slides 特别强调的 typo/实现易错点之一。

4.3 Noise predictor parameterization

实际 DDPM 风格实现常改学 noise predictor ,令:

于是训练目标变成更稳定的噪声预测:

这就是“denoising”的核心含义:训练时人为把 clean data 加噪得到 ,网络学习识别或去除这部分噪声。

4.4 Score matching 训练流程

Input: dataset samples z ~ p_data, score network s_theta or noise predictor epsilon_theta
repeat for each mini-batch:
    1. sample clean data z
    2. sample time t ~ Uniform[0,1]
    3. sample noise epsilon ~ N(0, I_d)
    4. set x_t = alpha_t z + beta_t epsilon
    5. score-target version:
       minimize ||s_theta(t, x_t) + epsilon / beta_t||^2
    6. noise-prediction version:
       minimize ||epsilon_theta(t, x_t) - epsilon||^2
end

5. 从 ODE 到 SDE:stochastic sampling

Flow matching 默认用 ODE:

Diffusion models 允许采样轨迹带随机性:

这里 是 Brownian motion, 是 diffusion coefficient。

5.1 Fokker-Planck equation

如果 SDE 为:

那么它的 marginal density 满足:

两项含义:

  • :由 vector field 搬运 probability mass,对应 ODE 的 continuity equation。
  • :由 Brownian noise 导致的扩散,对应 heat equation 的 dispersion。

5.2 SDE extension trick

如果已经有一个 ODE vector field 能让 ,那么对任意 ,下面这个 SDE 也保持相同的 marginals:

因此:

直觉: 会把点随机打散;额外的 score correction 会把分布拉回目标 marginal path。两者配平后,边缘分布仍然是 。

5.3 Gaussian path:只用 score 写采样 SDE

利用 velocity-score 转换:

SDE extension 可写为:

实际用 score network 近似:

Euler-Maruyama 离散化为:

5.4 为什么要 stochastic dynamics?

理论上,如果 score/vector field 完美、数值积分也完美,所有 都会得到同样的 marginal path,最后都采样自 。

实践中不同 会有差异,因为:

  • training error:神经网络没有完美学到 score 或 vector field。
  • simulation error:ODE/SDE 都要离散化,步数有限时会有误差; 太大时可能需要更小步长。
  • downstream needs:某些任务需要随机演化,例如 inference-time optimization、search、fine-tuning 等。

slides 的实际结论

SDE sampling 是一个可选工具,不是必须项。很多场景里 ODE sampling 反而效果最好或更高效。

5.5 Aside:Langevin dynamics

当 probability path 不随时间变,即 ,并且 时,SDE extension 退化为:

这就是 Langevin dynamics。它的 stationary distribution 是 ,也是 molecular dynamics 和许多 MCMC 方法的重要基础。

6. Guidance:从“生成任意图片”到“按 prompt 生成”

前面讨论的 mostly 是 unguided generation:

但实际更常见的是 guided generation,例如输入 prompt “a cat baking a cake”,希望:

术语区分

课程里为了避免混淆,通常把 这种“给定 clean data 的 path”叫 conditional,而把给定 prompt/class 的生成叫 guided。

7. Vanilla guidance

最直接的方法:把 prompt/class 作为网络输入。

Guided diffusion/flow model:

采样时:

Flow matching 训练目标变成:

其中 。也就是说,dataloader 需要返回 paired data,例如 image-text pair 或 image-class pair。

7.1 Vanilla guidance 的问题

理论上 vanilla guidance 应该学到 。但实践中生成样本常常“不够听话”,即 prompt adherence 不够好。

可能原因:

  • model underfit,没有真正学到 guided marginal vector field;
  • 数据集里的 image-text pair 本身有噪声;
  • 复杂 prompt 的约束很难完全由 vanilla conditioning 捕捉。

于是需要人为强化 prompt 对采样轨迹的影响,这就引出 guidance。

8. Classifier guidance

为了理解 CFG,先看 classifier guidance。

Gaussian path 下有:

由 Bayes rule:

对 求梯度:

所以:

其中 可以理解为一个 classifier 给出的“让 noisy image 更像 label/prompt ”的方向。

Classifier guidance 把这一项放大:

其中 是 guidance scale。

缺点:

  • 需要额外训练一个 classifier 。
  • 对 text prompt 这种高维条件,classifier 很难建模。
  • 需要对 求 classifier gradient,成本和稳定性都不理想。

9. Classifier-free guidance, CFG

CFG 的目标:达到 classifier guidance 类似的“放大 prompt-dependent direction”的效果,但不训练额外 classifier。

由前面的分解可以推导:

把 unguided field 写成空条件:

于是 CFG 采样时使用:

实际用同一个网络:

解释:

  • :只用 unconditional field。
  • :普通 vanilla guided field。
  • :放大 conditional 与 unconditional 之间的差异,即强化 prompt-dependent part。

CFG 是 heuristic

当 时,采样不再严格对应真实的 。它是在经验上更好地提升 prompt adherence,但可能牺牲 diversity,过大时也会导致 artifacts。

10. CFG training:drop label 学到空条件

关键技巧:训练时随机把 label/prompt 丢掉,替换成空 token 。这样同一个网络同时学会:

  • :有条件生成;
  • :无条件生成。

设 label drop probability 为 。CFG-CFM objective:

其中采样过程包含:

Gaussian path 下算法是:

Input: paired dataset (z, y), network u_theta, label-drop probability eta
repeat for each mini-batch:
    1. sample paired example (z, y)
    2. sample time t ~ Uniform[0,1]
    3. sample noise epsilon ~ N(0, I_d)
    4. set x_t = alpha_t z + beta_t epsilon
    5. with probability eta, replace y by empty token
    6. minimize ||u_theta(t, x_t, y) - (dot_alpha_t z + dot_beta_t epsilon)||^2
end

CFG inference:

Input: prompt y, guidance scale w, initial X_0 ~ p_init
for t from 0 to 1:
    u_cond   = u_theta(t, X_t, y)
    u_uncond = u_theta(t, X_t, empty_token)
    u_cfg    = (1 - w) * u_uncond + w * u_cond
    update X_t using ODE/SDE solver with u_cfg
return X_1

实践地位

Slides 强调:几乎所有你看到的高质量 AI image/video generation 都 heavily rely on CFG。Stable Diffusion 3 这类系统也会使用大于 1 的 guidance scale,slides 中给出的例子约为 。

11. Diffusion literature map:不同表述其实在讲同一件事

Lec 3 最后给了一个 diffusion literature guide,主要是帮你把不同论文的术语对齐。

11.1 Time convention

Flow matching / rectified flows / stochastic interpolants 常用:

Score-based diffusion with SDEs 常用相反方向:

DDPM/DDIM 常用 discrete time:

  • 不直接写连续 ODE/SDE,而写 Markov chain。
  • DDIM 可以理解成某种 probability flow ODE 的离散版本。

11.2 Noising procedure 的三种语言

同一 Gaussian construction 经常有三种等价说法:

第一种,probability path:

第二种,interpolant function:

第三种,forward noising process:从 data 出发逐步加噪,最后变成 Gaussian noise。

读论文时的翻译规则

如果一篇论文说 “forward diffusion/noising process”,另一篇说 “probability path/interpolant”,先检查它们是否都是 Gaussian path。很多情况下只是 time convention 和 notation 不同,本质等价。

11.3 Flow Matching 的位置

Slides 对 Flow Matching 的定位:

  • 算法表达非常简单;
  • 可以只用 flows,也可以扩展到 diffusion/SDE sampling;
  • 不局限于 Gaussian noise 到 image data,也可以从任意 initial distribution 桥接到任意 target distribution。

例子包括:

  • video without audio video with audio;
  • low-resolution image high-resolution image;
  • unperturbed cells perturbed cells。

12. 一页公式速查

12.1 Gaussian path

12.2 Conditional vector field

12.3 Conditional score

12.4 Velocity-score conversion

12.5 Denoising score matching

12.6 Noise prediction

12.7 SDE extension

12.8 CFG

13. 易错点清单

  • 写条件概率时尽量用 、,不要写成容易在表格里出问题的 x|z。
  • 是 clean data; 是加噪后的中间状态; 是加进去的 Gaussian noise。
  • 是 probability path 的 noise scheduler; 是 SDE sampling 的 diffusion coefficient。两者不是同一个东西。
  • 是 velocity/vector field network; 是 score network; 是 noise predictor。
  • Denoising score matching 里拟合 conditional score,但理论最优解是 marginal score。
  • 时, 会造成数值不稳定。
  • CFG 的 对应 vanilla guided sampling; 才是强化 prompt。过大的 可能让样本更听 prompt,但 diversity 下降、artifact 增多。
  • CFG 不是精确建模 ,而是一个经验上非常有效的 heuristic。

14. 本讲最重要的 takeaway

Takeaway

Gaussian probability path 下,velocity、score、noise prediction、denoiser 是同一个信息的不同 parameterization。Flow matching 学 velocity,score matching 学 score/noise;二者可以互相转换。SDE extension 说明加入随机噪声后,只要加上 score correction,仍能保持同一 probability path。Guidance 部分则说明,现代 text-to-image/video 模型几乎都会用 CFG,通过同时计算 conditional 与 unconditional vector field,并放大它们的差异来增强 prompt adherence。