Lecture 10: Diffusion Models 逻辑主线
本章的核心目标是回答一个问题:
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 本质是经验性地放大条件方向,并不再严格对应真实数据分布。