6.S184 Flow Matching 与 Diffusion Models
首页

基于 lecture_notes.pdf 整理

从噪声到数据:一张中文地图读懂 Flow Matching 与扩散模型

这份笔记的主线很干净:把图像、视频、分子或文本看成随机对象;先设计一条从简单噪声到真实数据的概率路径; 再学习让样本沿这条路径移动的动力学。连续数据用 ODE/SDE,离散文本用 CTMC。

来源:MIT 6.S184 course website, 本页为个人中文学习整理。

pinit pt pdata

训练目标不是直接记住图片,而是学会“该往哪里走”。

Roadmap

全书骨架

01

对象变成向量

图像、视频、分子结构通常可表示为 z ∈ Rd。文本是例外,后面用离散状态空间处理。

02

生成变成采样

“生成一张狗的图”变成从未知数据分布 pdata 采样。

03

设计概率路径

p0 = pinit,p1 = pdata,中间如何过渡由我们选择。

04

学习动力学

Flow 学向量场 ut,Diffusion 学 score ∇ log pt 或等价重参数化。

05

从噪声模拟到数据

训练后从高斯噪声出发,沿 ODE/SDE/CTMC 模拟,最后得到样本。

Flow

确定性轨迹:只有初始噪声随机。核心是 ODE 和向量场。

Diffusion

随机轨迹:每一步都注入 Brownian 噪声。核心是 SDE 和 score。

Discrete Diffusion

离散 token 无法“微分移动”,改用连续时间马尔可夫链的跳转率矩阵。

Section 1

生成建模 = 从数据分布采样

核心转译

生成模型不是寻找唯一“正确答案”,而是在所有可能对象上定义一个分布。 好样本在 pdata(z) 下概率高,坏样本概率低。

无条件生成 z ~ p_data
有条件生成 z ~ p_data(. | y)

数据集 z1, …, zN ~ pdata 只是对真实数据分布的有限观测。模型真正要学的是分布,而不是复制训练样本。

理解锚点

  • 图像:H × W × 3 的像素张量。
  • 视频:T × H × W × 3 的帧序列。
  • 分子:每个原子一个三维坐标,整体可看成矩阵。
  • 文本:自然是离散 token,不能直接用欧氏空间那套处理。

Section 2

用微分方程造生成器

向量场驱动空间形变的 flow 图示
Flow:向量场规定每个位置的速度,ODE 解把空间连续扭到新分布。
Ornstein-Uhlenbeck 过程示意
SDE:漂移项负责方向,扩散项持续加入随机扰动。
问题 Flow Model Diffusion Model
动力学 dX_t / dt = u^θ_t(X_t) dX_t = u^θ_t(X_t)dt + σ_t dW_t
随机性来源 只来自初始点 X_0 ~ p_init 初始点 + 每一步 Brownian 噪声
模拟方法 Euler:X_{t+h}=X_t+h u_t(X_t) Euler-Maruyama:+ σ_t √h ε
特殊关系 确定性 SDE σ_t = 0 时退化成 Flow

Section 3

Flow Matching:把训练变成回归

条件概率路径和边缘概率路径图示
条件路径把噪声推向单个数据点;边缘路径把噪声分布推向整个数据分布。

1. 条件概率路径

先固定一个训练样本 z,设计一族分布 pt(x | z):

p_0(. | z) = p_init, p_1(. | z) = δ_z

2. 边缘概率路径

再对所有可能的 z ~ pdata 混合:

p_t(x) = ∫ p_t(x | z) p_data(z) dz

3. 高斯路径

最常用路径把干净数据和噪声线性混合:

x = α_t z + β_t ε, ε ~ N(0, I)

边缘化技巧

条件向量场 utargett(x | z) 通常可解析写出, 但它只会把样本推向一个固定训练点。真正需要的是边缘向量场 utargett(x),它等于对所有可能终点的后验加权平均。

直觉

当前噪声样本 x 可能来自很多干净样本 z。模型要走的方向,是“所有可能去向”的可信度加权平均。

训练目标为什么简单

虽然边缘向量场不可直接算,但定理表明:回归到条件向量场的损失,与回归到边缘向量场的损失只差一个与参数无关的常数。

L_CFM = E || u^θ_t(x) - u^target_t(x | z) ||²

这就是 Flow Matching 的漂亮之处:训练时不用模拟 ODE,只做监督式回归。

Flow Matching 训练后路径与真实概率路径对齐图示
训练后的 flow 样本分布会跟随设计好的边缘概率路径。

CondOT 路径下的一行记忆

αt = t,βt = 1 - t 时:

x = t z + (1 - t) ε target velocity = z - ε

所以训练就是让网络看到中间点 x 和时间 t 后,预测“从噪声 ε 指向数据 z 的速度”。

Section 4

Score Matching:学习密度上升方向

概率密度示意图
左:概率密度。
score function 指向高密度方向
右:score 指向 log-likelihood 增长最快的方向。

Score 是什么

对任意分布 q(x),score 定义为 ∇ log q(x)。它不告诉你概率是多少,而告诉你往哪里移动会更像数据。

高斯路径的条件 score ∇ log p_t(x | z) = -(x - α_t z) / β_t²

与 Flow 的关系

在高斯概率路径下,向量场和 score 可相互转换。 因此很多模型可以选择预测速度、预测 score、预测噪声或预测 denoiser,本质上是在选更稳定的参数化。

扩散采样核心 dX_t = [u_t(X_t) + σ_t²/2 ∇log p_t(X_t)]dt + σ_t dW_t

Denoising Diffusion 的训练直觉

给干净样本 z 加噪得到 x = αtz + βtε。 网络学习从带噪输入里恢复“噪声方向”或“干净数据的后验信息”。这就是为什么很多扩散模型看起来像是在做去噪。

Section 5

Guidance:让模型更听提示词

不同 CFG guidance scale 下的生成结果差异
CFG scale 越大,通常越贴合条件,但多样性和自然度可能下降。

Vanilla Guidance

直接把提示词或标签 y 输入网络,训练 ut(x | y)。理论上可行,但实际中条件对齐可能不够强。

Classifier-Free Guidance

同一个模型同时学“有条件”和“无条件”:训练时以概率 η 把标签替换为 ∅。

ũ_t(x | y) = (1 - w) u_t(x | ∅) + w u_t(x | y)

w > 1 会放大“提示词带来的方向差”。这是一种经验上极有效的启发式。

Section 6

大规模图像/视频生成器如何落地

输入嵌入

时间 t 常用 Fourier features;类别标签可学 embedding;文本提示常用 CLIP、T5、UL2、ByT5 等预训练编码器。

主干网络

DiT 把图像切成 patch token,用 self-attention/cross-attention 处理;U-Net 用编码器-解码器和跳连保持局部细节。

潜空间

VAE/Autoencoder 先把高分辨率图像压缩到低维 latent,再在 latent 里训练 flow/diffusion,最后解码回像素空间。

Stable Diffusion 3

笔记中强调它采用 conditional flow matching、classifier-free guidance、预训练 autoencoder latent space,以及多种文本 embedding;最大模型约 8B 参数,采样约 50 步。

Meta Movie Gen Video

视频多了时间维 T,因此需要 temporal autoencoder 和时空 patchification;笔记中最大模型约 30B 参数。

Section 7

离散扩散:用 CTMC 生成 token

连续时间马尔可夫链轨迹图示
离散状态不能沿向量方向移动,只能在状态之间跳转。

Rate Matrix 取代向量场

在状态空间 S = Vd 中,CTMC 用 Qt(y | x) 表示从状态 x 跳到 y 的速率。它就是离散版的“动力学”。

Q_t(y | x) ≥ 0 for y ≠ x Q_t(x | x) = -Σ_{y≠x} Q_t(y | x)

训练又变简单了

对 factorized mixture path,边缘 rate matrix 等价于每个 token 位置的后验分类概率 p1|t(zj = v | x)。

L_DFM = E Σ_j -log p^θ_{1|t}(z_j | x)

连续 Flow Matching 变成回归;离散 Flow Matching 变成逐 token 分类。

t=0[MASK][MASK][MASK][MASK][MASK]
t=.25[MASK]cat[MASK][MASK].
t=.75Thecat[MASK]mat.
t=1Thecatsatmat.

Cheat Sheet

公式与算法速查

生成任务

z ~ p_data z ~ p_data(. | y)

Flow 采样

X_0 ~ p_init X_{t+h} = X_t + h u^θ_t(X_t)

Diffusion 采样

X_{t+h}=X_t+h u^θ_t(X_t)+σ_t√h ε

高斯路径

x = α_t z + β_t ε p_t(. | z)=N(α_t z, β_t² I)

Flow Matching

L_CFM = E ||u^θ_t(x)-u^target_t(x|z)||²

Score Matching

L_CSM = E ||s^θ_t(x)-∇log p_t(x|z)||²

CFG

ũ=(1-w)u(x|∅)+w u(x|y)

离散扩散

L_DFM = E Σ_j -log p^θ(z_j | x,t)

Glossary

中英术语表

data distribution数据分布,真实样本来自的未知分布。
probability path概率路径,从噪声到数据的一族中间分布。
conditional path固定终点样本 z 后的路径。
marginal path对所有 z 混合后的整体路径。
vector field向量场,告诉样本在当前位置该往哪里走。
flowODE 的解映射,把初始点推到时间 t 的位置。
score function∇log p(x),密度上升最快方向。
denoiser给定 noisy x 后对 clean z 的后验估计。
Brownian motion连续随机游走,SDE 随机性的来源。
Fokker-Planck描述 SDE 下概率密度如何随时间演化。
CFGClassifier-Free Guidance,无需单独分类器的提示词增强。
CTMCContinuous-Time Markov Chain,离散状态的连续时间跳转过程。