Flow Matching 是近几年生成模型里非常重要的一条路线。它和 Diffusion Model 关系很近,但视角更直接:不再把生成过程理解成“一步步去噪”,而是学习一个连续的速度场,让噪声样本沿着这条流逐渐移动到真实数据分布。
一句话概括:
Flow Matching 学的是“数据应该怎么流动”,而不是“每一步应该去掉多少噪声”。
这类方法正在被大量图像、视频和 DiT(Diffusion Transformer)相关工作采用,也和 Rectified Flow、Continuous Normalizing Flow、Consistency Model 等方向有很深的联系。
1. 从 Diffusion 说起
经典扩散模型包含两个过程。
训练时,从真实样本
生成时,从随机噪声开始,模型一步步反向去噪,最终得到图片、音频或视频。
它的核心可以粗略理解为学习:
也就是:当前这个带噪样本,下一步应该变得稍微干净一点。
这个框架很成功,但它的理论推导通常会涉及 score function、SDE、reverse process 等概念。对于工程实现来说,扩散模型也常常需要较多采样步数,虽然 DDIM、DPM-Solver、Consistency 等方法已经大幅加速。
Flow Matching 的出发点是:能不能不绕这么多弯,直接学习从噪声到数据的“流动方向”?
2. Flow Matching 的核心思想
假设有两个端点:
:真实数据样本 :高斯噪声样本
我们希望在
Flow Matching 要学习的是一个速度场:
它表示:在时间
这个生成过程可以写成一个常微分方程(ODE):
如果把样本想象成河里的粒子,那么:
- 噪声分布是河流上游
- 数据分布是河流下游
- 模型学习的是整条河的水流方向
- 生成就是沿着速度场积分
所以,Diffusion 更像“每一步帮你擦掉一点噪声”,Flow Matching 更像“直接告诉你该往哪里走”。
3. 最常见的训练形式:Conditional Flow Matching
Flow Matching 的关键是:训练时我们需要知道中间点
最常见、也最直观的一种方式是在线性路径上训练。
给定真实样本
这是一条从数据到噪声的直线路径。它对时间求导得到:
于是训练目标就非常直接:
$$
\mathcal{L}(\theta)
= \mathbb{E}{x_0, x_1, t}
\left[
\lVert v{\theta}(x_t, t) - (x_1 - x_0) \rVert_2^2
\right]
$$
也就是说,模型输入中间状态
这也是 Flow Matching 很吸引人的地方:训练目标简单、稳定、直观。
4. 推理时怎么生成
训练完成后,我们已经得到了一个速度场
生成时通常从噪声开始:
然后解 ODE,从
最终得到的
这里要注意一个符号方向问题:如果训练路径定义为
5. 它和 Diffusion 的区别
Diffusion 和 Flow Matching 并不是完全割裂的两类模型,而是有很强的统一关系。但从建模直觉上看,它们有明显差异。
Diffusion 通常从随机过程角度出发,可以写成 SDE:
这里有随机噪声项
Flow Matching 更常用确定性 ODE 表达:
它没有显式随机项,而是通过一个确定性速度场把分布从噪声推向数据。
可以这样理解:
- Diffusion:通过加噪和反向去噪构造生成过程
- Flow Matching:通过学习分布之间的连续传输构造生成过程
- Diffusion 更偏 score / SDE 视角
- Flow Matching 更偏 velocity field / ODE 视角
不过很多现代扩散模型也可以写成 probability flow ODE,所以二者在理论上存在交汇。
6. 它和 CNF 的关系
Flow Matching 和 Continuous Normalizing Flow(CNF)关系也很深。
CNF 同样使用连续动力系统:
并通过可逆流把简单分布变成复杂数据分布。
传统 CNF 的难点在于似然计算通常需要处理 divergence 或 trace 项,训练成本较高。Flow Matching 则换了一个角度:不直接最大化精确似然,而是构造可监督的路径和速度目标,让模型直接回归速度场。
因此可以把 Flow Matching 理解为一种更实用、更易训练的连续流生成模型训练方式。
7. Rectified Flow:把路径拉直
Rectified Flow 是 Flow Matching 相关方向里非常重要的一支。
它的核心思想是:让从噪声到数据的轨迹尽可能直。
为什么“直”很重要?
- 轨迹越弯,模型越难学
- 轨迹越弯,ODE 积分越困难
- 轨迹越弯,采样通常需要更多步
- 轨迹越直,少步采样越容易
所以 Rectified Flow 会通过重新配对、重训练等方式,把原本弯曲复杂的生成路径逐渐拉直。直观地说,它不是只学习“怎么流”,还希望这条流尽可能接近最短路径。
这也是为什么很多人会把 Rectified Flow 和 Optimal Transport(最优传输)联系起来:理想情况下,我们希望噪声分布到数据分布的搬运路径既正确又高效。
8. 为什么 Flow Matching 适合 DiT
现在图像和视频生成里,Transformer 架构越来越重要,例如 DiT、视频 DiT、多模态 Transformer 等。
Flow Matching 与这类架构很契合,原因包括:
- 输入输出形式简单:模型预测速度向量,和预测噪声一样容易实现
- 连续时间建模自然:时间
可以作为 embedding 输入 Transformer - 训练目标稳定:MSE 回归速度场,工程上很友好
- 采样步数可控:ODE solver 可以灵活选择步数和精度
- 适合 latent space:可以在 VAE latent 或视频 latent 中建模连续流
在工程上,一个 Flow Matching Transformer 和一个 Diffusion Transformer 往往非常相似:都是输入 noisy latent、time embedding、condition embedding,然后输出一个与 latent 同形状的张量。差别主要在训练目标和采样方程。
9. 极简 PyTorch 伪代码
下面是一个非常简化的训练形式,用来体现核心思想:
1 | import torch |
推理时则类似:
1 |
|
这里用的是最简单的 Euler 积分。真实系统里通常会使用更好的 noise schedule、time sampling、ODE solver、classifier-free guidance,以及在 latent space 中训练。
10. Flow Matching 为什么火
它受欢迎的原因可以总结为四点。
第一,理论视角统一。它把扩散模型、连续流、最优传输等概念放到了同一个“速度场”框架里。
第二,训练目标直接。相比复杂的反向扩散推导,Flow Matching 可以直接回归目标 velocity。
第三,采样有潜力更快。因为生成过程是 ODE 积分,可以通过更好的路径设计和求解器减少步数。
第四,工程迁移成本低。对于已经有 Diffusion / DiT 系统的团队来说,把预测噪声改成预测 velocity,并调整采样器,是一条相对自然的演进路线。
11. 如何继续深入
如果想系统学习,建议按这个顺序:
- DDPM:理解扩散模型的基本训练与采样。
- Score-based Model:理解 score function 和噪声条件分数网络。
- SDE / ODE:理解随机过程与 probability flow ODE。
- CNF:理解连续可逆流和分布变换。
- Flow Matching:理解速度场监督训练。
- Rectified Flow:理解路径拉直和少步生成。
- Consistency Model:理解一步或少步生成的另一条路线。
几篇经典论文包括:
- Flow Matching for Generative Modeling
- Rectified Flow: A Marginal Preserving Approach to Optimal Transport
- Consistency Models
- Scalable Diffusion Models with Transformers
12. 总结
Flow Matching 的核心不是“去噪”,而是“流动”。
它把生成建模看成一个连续传输问题:从简单噪声分布出发,学习一个速度场,把样本沿着 ODE 推向真实数据分布。
这个视角同时继承了 Diffusion 的生成质量、CNF 的连续优雅和 ODE 的采样灵活性。因此在图像、视频、音频和 latent generative model 中,Flow Matching 很可能会继续成为主流方向之一。
如果用一句更形象的话收尾:
Diffusion 像是在雾里一点点擦出图像;Flow Matching 像是知道风往哪里吹,让噪声顺着风长成数据。