Lecture 10: Diffusion Models 逻辑主线

本章的核心目标是回答一个问题:

如何从一个简单分布,例如高斯噪声,逐步生成复杂数据分布中的样本?

整章的“进化树”可以概括为:

DDPM 离散扩散
↓ 发现:采样慢,理论上可连续化
Score-based SDE
↓ 发现:反向生成只需要 score ∇ log q_t(x_t)
Denoising Score Matching
↓ 解决:真实 marginal score 不可得
Probability Flow ODE
↓ 发现:随机 SDE 可转为确定性 ODE
Flow Matching
↓ 直接学习从噪声到数据的 vector field
Accelerated Sampling
↓ 解决:1000 步采样太慢
DDIM / DPM-Solver / Distillation

Control & Classifier-Free Guidance
↓ 解决:生成结果如何服从文本条件
Text-guided diffusion / CFG

1. DDPM 回顾:离散扩散模型

重要程度:★★★★★

DDPM 的基本思想是:先定义一个固定的前向加噪过程,把真实数据逐步破坏成高斯噪声;再训练一个神经网络学习反向去噪过程,从噪声恢复数据。

1.1 Forward Process:数据到噪声

给定真实数据:

其中:

  • (x_0):原始数据样本,例如一张真实图像;
  • (q(x)):真实数据分布;
  • :扩散时间步;
  • :第 (t) 步加入的噪声强度;
  • :标准高斯噪声。

前向扩散一步为:

等价地:

整个前向链为:

联合分布为:

直觉:每一步都把图像缩小一点,同时加入一点高斯噪声。随着 (t) 增大,图像结构逐渐消失,最后 (x_T) 接近标准高斯噪声。

1.2 Reverse Process:噪声到数据

重要程度:★★★★★

生成时从高斯噪声开始:

通常设:

反向一步建模为:

其中:

  • :神经网络预测的反向均值;
  • :反向采样噪声标准差,常取
  • (z):采样时额外注入的高斯噪声。

概率形式:

完整生成链:

直觉:前向过程是固定破坏数据;反向过程是学习如何一步步修复数据。

1.3 DDPM Training:预测噪声

重要程度:★★★★★

DDPM 常用的训练目标不是直接预测 (x_0),而是预测加入到 (x_0) 中的复合噪声

利用重参数化:

其中:

  • :从 (x_0) 直接得到 (x_t) 的复合噪声。

训练目标:

其中:

  • :神经网络预测的噪声;
  • 输入是带噪图像 (x_t) 和时间步 (t);
  • 目标是让预测噪声接近真实复合噪声。

核心直觉:如果模型能准确预测噪声,就可以从 (x_t) 中减去噪声,从而逐步恢复数据。

2. 从离散扩散到连续时间 SDE

重要程度:★★★★★

DDPM 是离散时间模型。本章接下来把扩散过程看成“无限多小步”的极限,从而得到随机微分方程 SDE。

2.1 Forward Diffusion 的连续极限

离散前向一步:

令:

很小时:

因此:

,得到前向 SDE:

其中:

  • (d x_t):状态的无穷小变化;
  • x_t d t):drift term,确定性漂移项;
  • :diffusion term,随机噪声项;
  • :Wiener process,也就是布朗运动;
  • :连续时间噪声日程。

直觉:前向过程一方面把 (x_t) 往 0 拉,另一方面持续注入高斯噪声。最终分布接近标准高斯。

3. Reverse-Time SDE 与 Score Function

重要程度:★★★★★

前向 SDE 告诉我们如何从数据走向噪声。生成模型需要反过来,从噪声走回数据。

3.1 Reverse Generative SDE

前向 SDE:

对应的反向生成 SDE:

其中:

  • (q_t(x_t)):时间 (t) 时刻的边缘分布;
  • :score function;
  • :反向时间中的 Wiener process;
  • 反向过程从 开始,模拟到 (x_0)。

最关键的是:

它表示当前点 (x_t) 应该往哪个方向移动,才能更接近高概率数据区域。

3.2 Score Function

重要程度:★★★★★

Score function 定义为 log-density 对输入的梯度:

其中:

  • (q(x)):数据分布密度;
  • :log-likelihood;
  • :指向密度增长最快方向的向量场。

直觉:如果某个点在低概率区域,score 会告诉它应该往哪个方向移动,才能进入更高概率区域。

在 diffusion 中,反向生成的本质就是学习每个噪声等级下的 score:

4. Reverse-Time SDE 的推导逻辑

重要程度:★★★★☆

一般前向 SDE:

其中:

  • (f(x_t,t)):drift coefficient;
  • (g(t)):diffusion coefficient;
  • (W_t):Wiener process。

小时间步转移:

所以:

反向转移由 Bayes rule 得到:

对密度做一阶展开:

完成 Gaussian completion 后:

因此反向时间 SDE 为:

注意这里的 (d t) 是反向时间方向的微分。带入 VP-SDE 中:

得到:

5. Score Matching 与 Denoising Score Matching

重要程度:★★★★★

5.1 直接学习 score 的问题

自然想法是直接训练:

问题是:

不可计算。因为 (q_t(x_t)) 是所有数据点扩散后的边缘混合分布,真实数据分布 (q_0(x_0)) 本身也未知。

Why it fails:目标 score 是 marginal score,需要知道整个数据分布的密度,而真实图像分布无法显式写出。

5.2 Denoising Score Matching

解决方法:不直接学习不可得的 marginal score,而是学习可得的 conditional score。

条件扩散分布:

是高斯,因此可计算。

Denoising Score Matching 目标:

关键性质:

也就是说,虽然训练时用 conditional score,但期望意义下可以得到 marginal score。

5.3 DSM 与 DDPM 噪声预测的等价关系

设:

其中:

  • :信号系数;
  • :噪声标准差;
  • :标准高斯噪声。

条件分布:

其 score:

因此:

又因为:

所以:

令神经网络 score 写成:

则 DSM loss 变成:

这说明:DDPM 中预测噪声,本质上就是在学习 score。

6. Probability Flow ODE

重要程度:★★★★★

反向生成 SDE:

它在分布意义下等价于一个确定性 ODE:

这个 ODE 称为 Probability Flow ODE。

重要点:

  • SDE 的单条轨迹是随机的;
  • ODE 的单条轨迹是确定性的;
  • 但二者在每个时间 (t) 的边缘分布 (q_t(x_t)) 相同;
  • 因此可以用 ODE solver 做采样。

直觉:SDE 是“带随机扰动的去噪”;Probability Flow ODE 是“确定性地沿概率流移动”。

7. Flow Matching

重要程度:★★★★★

Flow Matching 是本章第二条主线。它不从 score 出发,而是直接学习一个从简单分布流向数据分布的向量场。

7.1 Flow Model vs Diffusion Model

| 模型 | 动态方程 | 是否随机 | 学习对象 | 采样方式 | | ————— | ————————————– | —: | ——————— | ———– | | Flow Model | (frac(d X_t, d t)=u_t^theta(X_t)) | 否 | vector field | 解 ODE | | Diffusion Model | (d X_t=u_t^theta(X_t) d t+sigma_t d W_t) | 是 | drift / score / noise | 解 SDE 或 ODE |

Flow model 的生成过程:

从 (t=0) 模拟到 (t=1),得到:

7.2 Time-dependent Vector Field

定义:

其中:

  • (x):当前位置;
  • (t):时间;
  • (u_t(x)):在时间 (t)、位置 (x) 的瞬时速度。

轨迹满足 ODE:

也就是:

直觉:vector field 给每个点一个运动方向和速度。只要沿着这个速度场走,就能把初始分布运输到目标分布。

8. Conditional Probability Path

重要程度:★★★★★

给定一个目标数据点:

定义条件概率路径:

满足:

其中:

  • :初始简单分布,例如标准高斯;
  • :集中在 (z) 的 Dirac delta;
  • :从噪声分布逐渐收缩到目标点 (z) 的路径。

课件采用高斯条件路径:

其中:

  • :控制均值从 0 移向 (z);
  • :控制方差从 1 缩小到 0;
  • (I_d):(d) 维单位矩阵。

边界条件:

所以:

以及:

所以:

9. Conditional Vector Field

重要程度:★★★★★

对于任意条件概率路径,都存在一个等价的 vector field,使得:

对于高斯路径:

条件向量场为:

其中:

  • :在给定目标点 (z) 时,把样本 (x) 推向 (z) 的速度。

推导直觉:如果样本满足:

其中 固定,则:

又因为:

代入:

整理:

这就是课件中的 conditional vector field。

10. Marginal Probability Path and Vector Field

重要程度:★★★★☆

真实生成不是只生成某一个固定 (z),而是生成整个数据分布。

令:

定义 marginal probability path:

其中:

  • (p_t(x)):时间 (t) 的边缘分布;
  • :给定目标数据点 (z) 的条件路径;
  • :真实数据分布。

对应的 marginal vector field:

注意分式部分:

实际上就是 posterior:

所以:

直觉:在位置 (x) 上,可能有很多目标数据点 (z) 可以解释这个中间状态。marginal vector field 是这些条件速度的后验平均。

Why it fails:真实 不知道,积分不可计算,所以 (u_t(x)) 无法显式写出。

How it fixes:训练神经网络 去逼近这个向量场。

11. Flow Matching Loss

重要程度:★★★★★

理想 Flow Matching loss 是:

问题是 (u_t(x)) 是 marginal vector field,包含不可计算积分。

于是改用 Conditional Flow Matching:

关键结论:最小化 等价于最小化

直觉:虽然训练时用的是条件目标 ,但是在期望意义下,网络最终学到的是 marginal vector field (u_t(x))。

这和 Denoising Score Matching 的逻辑非常像:

| 问题 | 不可直接训练的目标 | 可训练替代目标 | 最终学到 | | ——————— | ——————— | —————————– | ——————— | | Score-based diffusion | (nabla_x log q_t(x)) | (nabla_x log q_t(x mid x_0)) | marginal score | | Flow Matching | (u_t(x)) | (u_t(x mid z)) | marginal vector field |

12. Gaussian CFM Loss 的具体化

重要程度:★★★★★

对高斯路径:

采样:

条件向量场:

代入

展开:

中间两项抵消:

所以:

13. 最简单的 Optimal Transport Path

重要程度:★★★★★

课件选择:

于是:

条件路径:

采样公式:

目标速度:

因此 CFM loss 变成:

训练流程:

1. 采样数据 z ~ p_data
2. 采样时间 t ~ U(0,1)
3. 采样高斯噪声 epsilon ~ N(0,I)
4. 构造中间点 x = t z + (1-t) epsilon
5. 神经网络预测速度 u_hat_t(x)
6. 用目标速度 z - epsilon 做 MSE 监督

这是 Flow Matching 的核心公式,期末很可能考。

14. 加速采样:DDIM

重要程度:★★★★☆

DDPM 慢的根本原因:每次生成需要调用 共 (T) 次,典型 (T=1000)。

DDIM 的目标:少步采样,并允许确定性采样。

回忆:

从当前 (x_t) 估计 (x_0):

估计噪声:

DDIM 采样:

其中:

  • :由当前 (x_t) 预测的干净图像;
  • :预测噪声;
  • :控制随机性。

如果:

则 DDIM 是确定性的。

DDIM 可以只在子序列时间点采样:

更新为:

核心思想:不必走完所有 (T) 个时间步,只走 个时间步。

15. DPM-Solver

重要程度:★★★★☆

DPM-Solver 的核心思想是:不要把 diffusion ODE 当成普通黑箱 ODE,而是利用它的半线性结构。

从参数化 diffusion ODE 开始:

其中:

  • (f(t) x_t):关于 (x_t) 的线性项;
  • :非线性神经网络项;
  • :噪声尺度;
  • (g(t)):扩散系数。

利用 variation of constants formula,精确解:

将线性项写成 diffusion coefficient:

得到:

引入:

得到:

此时问题变成:计算一个带已知指数核 的积分。

DPM-Solver 对神经网络项做 Taylor 展开:

代入积分:

保留 项,就得到 (k)-th order solver。

核心直觉:DPM-Solver 不是粗暴数值积分,而是利用 diffusion ODE 的特殊结构,把线性部分精确处理,只近似神经网络非线性部分,因此可以十几步完成高质量采样。

16. Distribution Matching Distillation

重要程度:★★★☆☆

课件只简要提到 DMD:

  • Distribution Matching Distillation;
  • 目标是把多步 diffusion model 蒸馏成一步或少步生成模型;
  • 代表工作包括:

    One-step diffusion with distribution matching distillation, CVPR 2024; Improved distribution matching distillation for fast image synthesis, NeurIPS 2024。

期末若考,重点记住:DMD 属于 sampling acceleration / distillation 路线,目标是极大减少采样步数。

17. Stable Diffusion 与 Text Guidance

重要程度:★★★★☆

Stable Diffusion 是 2022 年发布的 text-to-image 模型。它的关键结构是:

text prompt y
↓ text encoder
text embedding τ(y)
↓ cross-attention
latent diffusion model / noise predictor εθ(z_t,t,y)
↓ iterative denoising
generated image

训练目标:

其中:

  • (y):文本 prompt;
  • :文本编码器输出的 text embedding;
  • (z_t):latent space 中的带噪变量;
  • :带文本条件的噪声预测器。

Text guidance 的直觉:每一步去噪时,文本 embedding 都提醒模型:“当前图像应该更像 prompt 描述的内容”。

18. Classifier Guidance 与 Classifier-Free Guidance

重要程度:★★★★★

18.1 Vanilla Guided Sampling

给定条件 (y),直接训练一个条件向量场:

采样流程:

1. 选择 prompt y,例如 "a cat baking a cake"
2. 初始化 X_0 ~ p_init
3. 模拟 d X_t = u_t^theta(X_t | y) d t,从 t=0 到 t=1

问题:vanilla guidance 可能不够强,生成图像和 prompt 对齐不好。

18.2 Classifier Guidance 的直觉

目标条件分布:

由 Bayes rule:

取 log:

对 (x) 求梯度:

所以 guidance 可以理解为:

课件图中写作:

其中:

  • :无条件生成方向;
  • :prompt-dependent part;
  • (a_t):与噪声日程相关的缩放系数。

进一步增强 prompt 对齐:

其中 (w) 是 guidance scale。(w) 越大,prompt 约束越强,但过大可能导致过饱和、失真、多样性下降。

18.3 Classifier-Free Guidance

Classifier guidance 需要额外训练 classifier ,而 CFG 不需要外部 classifier。

核心观察:

可以近似看作 prompt-dependent direction。

于是放大这个差值:

等价展开:

课件给出的 CFG 采样向量场为:

其中:

  • :空 prompt,即 unconditional prediction;
  • :有条件 prompt prediction;
  • (w):CFG scale;
  • :空文本 token。

这就是实际生成模型中最重要的控制公式之一。

18.4 CFG Training:为什么要有 empty token

训练时需要让同一个模型同时支持:

和:

所以训练过程中会随机把一部分文本条件替换为空 token 。这样模型既会有条件生成,也会无条件生成。

采样时同一个 (x_t) 跑两次模型:

conditional prediction: uθ(x_t | y)
unconditional prediction: uθ(x_t | ∅)
combine: (1-w) uθ(x_t|∅) + w uθ(x_t|y)

18.5 CFG 的本质与局限

重要程度:★★★★★

CFG 很有效,但它不是严格的数据分布建模。

当 (w=1) 时:

近似正常条件生成。

当 (w>1) 时:

这意味着模型沿 prompt-dependent direction 走得比真实条件分布更远。

所以课件强调:

CFG is a heuristic. We do not model the data distribution anymore. We go beyond it.

也就是说,CFG 牺牲严格概率建模,换取更强的 prompt adherence 和更好的视觉效果。

19. 总结对比表

| 方法 | 核心学习对象 | 主要公式 | 解决的问题 | 局限 | | | | ——————– | ————————— | ————————————————– | ————— | ——————– | ———— | ———- | | DDPM | 噪声 | | 从噪声逐步生成数据 | 采样慢 | | | | Score-based SDE | score | | 连续时间统一建模 | marginal score 不可直接得 | | | | DSM | conditional score | | 让 score 可训练 | 仍需多步采样 | | | | Probability Flow ODE | deterministic flow | | 用 ODE 替代 SDE | 需要数值求解 | | | | Flow Matching | vector field | | 直接学习噪声到数据的流 | 仍需 ODE 采样 | | | | DDIM | 少步采样路径 | 更新 | 加速 DDPM | 步数太少会降质 | | | | DPM-Solver | 高阶 ODE solver | 指数核积分近似 | 十几步高质量采样 | 数学复杂 | | | | CFG | 条件控制方向 | (1-w) u(x|nothing)+ w u(x|y) | 强化 prompt 对齐 | 不再严格建模真实分布 |

20. 期末复习优先级

最高优先级:

1. DDPM forward / reverse / training loss
2. 离散扩散到 SDE 的推导
3. reverse SDE 中 score 的作用
4. DSM 如何把不可得 marginal score 转成 conditional score
5. DSM 与噪声预测的等价性
6. Probability Flow ODE
7. Flow Matching 的 conditional path、conditional vector field、CFM loss
8. CFG 公式与直觉

中高优先级:

1. DDIM 采样公式
2. DPM-Solver 的半线性 ODE 结构
3. Stable Diffusion 中 text embedding 通过 cross-attention 注入

较低但需知道:

1. DMD 是用于 one-step / few-step diffusion distillation
2. Runge-Kutta、Heun、exponential integrator 等属于 continuous-time solver 家族

核心记忆句:

扩散模型从 DDPM 的“离散噪声预测”发展到 Score-SDE 的“连续 score 学习”,再到 Probability Flow ODE 和 Flow Matching 的“确定性向量场建模”;采样加速方法解决多步生成效率问题,而 CFG 解决文本条件控制问题,但 CFG 本质是经验性地放大条件方向,并不再严格对应真实数据分布。