一句话理解 Flow Matching

Flow Matching = 学一个"风场",让随机噪声顺着风飘到数据样本的位置。

扩散模型(Diffusion)是先加噪再去噪,路径弯弯绕绕;Flow Matching(流匹配)则是直接学一条把噪声"搬"到数据的直线路径。路径越直,跑完这条路需要的步数就越少,训练也就越稳。这就是它近两年在图像生成、动作生成、轨迹规划里快速取代扩散头的根本原因。

形式化地说,Flow Matching 学习的是一个速度场 $v_\theta(x,t)$,它告诉你在时刻 $t$、位置 $x$ 处,应该沿哪个方向、以多快的速度移动,才能从噪声分布 $p_0$(通常是高斯)“流"到目标数据分布 $p_1$。


🔄 从 Diffusion 说起:为什么需要 Flow Matching

要理解 Flow Matching,先得明白扩散模型"慢"在哪里。

扩散模型的两条路径:

  • 前向过程:把一张干净图像逐步加高斯噪声,最后变成纯噪声。这是一个固定的、不学习的马尔可夫链。
  • 逆向过程:训练一个网络 $v_\theta$(或预测噪声 $\epsilon_\theta$)去反转这个过程,从纯噪声一步步去噪回图像。

问题出在哪? 扩散前向过程的轨迹是弯曲的——它对应一个非线性时变的随机微分方程(SDE)。逆向去噪必须用很小的步长才能跟上这条弯路,所以经典 DDPM 要采样 1000 步,DDIM 也要 20–50 步。即便后续有 DPM-Solver、一致性模型(Consistency Model)等各种加速技巧,弯曲路径这个根因始终没消除。

Flow Matching 的洞察: 既然路径弯曲是病根,那为什么不直接构造一条直的路径?一条直线只需要学一个平滑的速度场,推理时用大步长的 ODE solver,几步甚至一步就能走完。这就是 Flow Matching 的核心动机——它不是对扩散的修补,而是从更一般的视角重新定义生成过程,扩散只是它的一个特例。


📐 数学直觉:向量场、ODE 与"流”

这一节是 Flow Matching 的数学核心,但我们会用最直白的方式讲。

什么是向量场?

想象一张地图,每个城市上空都插着一个小箭头,告诉你"如果从这里出发,该往哪个方向、以多大速度走"。这些布满空间的箭头集合,就叫向量场

在 Flow Matching 里,向量场 $v(x,t)$ 是依赖于时间 $t$ 的:同一个位置,在 $t=0$ 和 $t=0.5$ 的箭头方向可能不同。它的物理含义是——“流"在演化过程中,风向是会变的。

什么是 ODE 与"流”?

有了向量场,我们就能写出一个常微分方程(ODE),描述一个粒子如何随时间运动:

$$\frac{dx}{dt} = v_\theta(x,t), \quad x(0) \sim \mathcal{N}(0,I)$$

这条公式的意思是:“粒子在每一瞬间的速度,等于向量场在当前位置和当前时刻的取值”。从 $t=0$ 的噪声点出发,顺着这个 ODE 一路积分到 $t=1$,粒子到达的位置就构成一个样本。这个由向量场定义的、把分布从 $p_0$ 推到 $p_1$ 的演化过程,就叫流(Flow)

用最通俗的话说: 训练阶段,网络在学"风怎么吹";推理阶段,随机撒一把噪声粒子,让它们顺着风飘,飘到 $t=1$ 时聚集成的形状就是数据分布。

Flow Matching 的训练目标

核心问题是:怎么训练这个向量场 $v_\theta$? Flow Matching 的答案是——匹配。构造一个"理想的风场" $u_t(x)$(它把噪声沿直线路径推到数据),然后让网络去逼近它:

$$\mathcal{L}{FM}(\theta) = \mathbb{E}{t,,x_t}\left[,\big|,v_\theta(x_t,t) - u_t(x_t),\big|^2,\right]$$

其中:

  • $t \sim \mathcal{U}(0,1)$ 是随机采样的时刻
  • $x_t = (1-t),x_0 + t,x_1$ 是噪声 $x_0$ 和数据 $x_1$ 之间的线性插值(这就是"直线路径"的来源)
  • $u_t(x_t) = x_1 - x_0$ 是沿这条直线的恒定速度

换句话说,理想的"风向"就是"从当前插值点指向数据点"的方向,网络只要学会预测这个方向即可。这个形式简单到令人惊讶——没有马尔可夫链,没有 SDE,没有繁琐的噪声调度,就是一个回归。


🆚 Flow Matching vs Diffusion

两者都属于基于分数/速度场的生成模型,但建模哲学截然不同。

维度扩散模型(Diffusion)Flow Matching
前向路径形状弯曲(非线性噪声调度)直线(线性插值)
底层方程SDE(含随机项)ODE(确定性)
采样步数DDPM 1000 步,DDIM 20–50 步几步到十几步即可
训练目标预测噪声 $\epsilon$ 或分数 $\nabla\log p$预测速度场 $v$
路径可设计性固定的加噪过程任意可设计(条件流)
理论统一性Flow Matching 的一个特例更一般的框架
训练稳定性一般通常更稳(目标更平滑)
多模态支持✅(天然支持)

三个关键差异的深入解读:

  • 路径直 vs 弯 是最本质的差别。直线路径意味着 ODE 的曲率小,数值积分可以用大步长——这就是 Flow Matching 能用 5–10 步采样的根本原因,而 Diffusion 想做到同样质量往往要更多步。
  • 确定性 vs 随机性 也带来工程影响。Flow Matching 的推理是一条确定性 ODE,容易缓存、容易蒸馏(把多步蒸馏成一步);扩散的 SDE 有随机项,控制起来更复杂。
  • 统一视角 在理论上很优雅:当 Flow Matching 的路径取特定的非线性形式时,它就退化为扩散模型。所以学界常说"Diffusion 是 Flow Matching 的特例"。

💡 一句话记忆:Diffusion 是"弯路慢走",Flow Matching 是"直路快跑"。


🔀 主要变体:OT-CFM 等

Flow Matching 的一个强大之处是路径和边际分布可以自由设计,由此衍生出多个变体。

变体全称核心改进作用
FMFlow Matching最早的原始形式,固定边缘分布奠基
CFMConditional Flow Matching以单个数据点为条件构造直线路径让训练可计算,无需知道真实边缘分布
OT-CFMOptimal Transport CFM最优传输对 $x_0$ 和 $x_1$ 配对路径更直、训练更快更稳
Rectified Flow整流流迭代地"拉直"路径(多次 rectify)路径接近理想直线,支持一步生成
Stochastic FM随机流匹配在 ODE 里加回少量随机项兼顾稳定性和样本多样性

最常用的是 OT-CFM。 它的关键洞察是:如果噪声 $x_0$ 和数据 $x_1$ 是随机配对的,路径不一定是最优的;但如果用**最优传输(Optimal Transport)**来配对(本质是找一个最小代价的一一映射),路径会尽可能短而直。形象比喻:随机配对像是让每个人去随机一辆出租车,OT 配对像是全局调度让每个人上最近的车。后者路径短、不绕路,训练时梯度方向也更一致。

Rectified Flow(Liu et al.)走了另一条路:先用 CFM 训一个模型,把学到的轨迹"重新拉直"成更直的直线,再训一遍——反复整流几次,路径越来越直,最终可以做到一步生成。Stable Diffusion 3 就采用了 Rectified Flow 的思路。


💻 训练 vs 推理:代码层面的理解

Flow Matching 的代码结构异常简洁,这是它流行的另一个原因。

训练阶段:学向量场

一次训练迭代的伪代码(PyTorch 风格):

# x1: 一批真实数据(图像/轨迹/动作)
# x0: 一批同形状的高斯噪声
x0 = torch.randn_like(x1)              # 采样噪声
t  = torch.rand(B, 1)                  # 采样时刻 t ~ U(0,1)
xt = (1 - t) * x0 + t * x1             # 线性插值(直线路径)
u  = x1 - x0                           # 理想速度(指向数据)
v  = model(xt, t, cond)                # 网络预测速度场
loss = mse(v, u)                       # 匹配损失
loss.backward()

关键点: 训练时根本不需要真实数据分布 $p_1$ 的解析形式,只需要单个样本 $x_1$ 作为条件(这就是 CFM 的"Conditional"含义)。损失就是最朴素的 MSE,没有 KL 项、没有 ELBO,简洁到让人怀疑是不是漏了什么。

推理阶段:用 ODE solver 采样

推理时用一个ODE 求解器从 $t=0$ 积分到 $t=1$:

x = torch.randn(B, D)                  # 起点:纯噪声
dt = 1.0 / num_steps                   # 步长
for i in range(num_steps):
    t  = i * dt
    v  = model(x, t, cond)             # 查询速度场
    x  = x + v * dt                    # Euler 步(最简单的 ODE solver)
# x 即为生成结果

上面是最简单的 Euler 法;实际中常用更高阶的 solver,如 Midpoint、RK4、Dopri5,能在更少步数下达到更高精度。对比一下扩散模型的推理(要做数十到上千次神经网络前向),Flow Matching 的工程优势非常直观。

一个微妙的点: 训练时 $t$ 是连续采样的浮点数,没有"时间步"的离散概念;推理时才把 $[0,1]$ 离散成若干步。所以"采样步数"纯粹是推理时的工程选择,与训练无关——你可以训完之后自由调整步数权衡速度和质量。


🚗 自动驾驶中的应用:多模态轨迹生成

为什么轨迹规划需要多模态?

这是理解 Flow Matching 在自动驾驶价值的起点。考虑一个场景:前方有静止障碍物,左车道空、右车道也空。 此时合理的选择有至少两种——向左变道、向右变道。如果用普通的回归头输出一条"平均轨迹",结果往往是压着障碍物正中间走(mode averaging),这比任何一个合理选择都更危险。

多模态意味着输出分布有多个峰(多个合理轨迹),模型需要能表达"这两种选择都合理",而不是强行取平均。这正是生成式模型(扩散、Flow Matching)的强项——它们输出的是一个分布,采样多次能得到不同的合理轨迹。

代表工作:DiffusionDrive 与 Flow 头规划

工作团队动作头核心特点
DiffusionDrive华中科大等扩散头把规划建模成条件去噪,输出多模态轨迹分布
CTG++CMU条件扩散用代价函数引导扩散,融合规则约束
GameFormer上交等迭代预测多智能体博弈下的层次化轨迹预测
Flow-based Planner多家Flow Matching 头用直线流路径替代扩散,采样更快

为什么 Flow Matching 在规划里比 Diffusion 更有吸引力? 答案还是速度。规划在车端是高频任务(10 Hz 以上),扩散头的多步去噪常常是延迟瓶颈;Flow Matching 的几步 ODE 采样能让规划耗时压到一个量级的提升。此外,规划对多模态可控性都有强需求——前者通过采样多个初始噪声得到多条轨迹,后者通过条件注入(自车状态、地图、障碍)控制生成。

一个具体的轨迹生成例子

假设要生成未来 3 秒的轨迹(30 个时间点 × 2 维坐标,共 60 维向量):

  1. 噪声 $x_0$:从 60 维高斯分布采样
  2. 条件 $c$:当前自车状态、HDMap、周围障碍物编码成特征
  3. 训练:让模型学速度场 $v_\theta(x_t, t, c)$,目标是把噪声沿直线推到真实轨迹 $x_1$
  4. 推理:用 5 步 Euler 法积分,得到一条候选轨迹;采样多个 $x_0$ 得到多条候选轨迹,再用代价函数(碰撞、舒适度、合规)挑最优的一条下发

整个流程清晰、高效、天然多模态。


🤖 在 VLA 中的应用:作为 Action Head

在 VLA(Vision-Language-Action)模型里,Action Head 是把 LLM 的推理结果变成连续动作的关键。Flow Matching 正在成为最强 Action Head 的代名词,代表就是 π0

π0:Flow Matching 动作头的标杆

Physical Intelligence 的 π0 把 Flow Matching 用作通用机器人的动作生成头,是目前 VLA 能力的天花板之一。它的设计要点:

  • 骨干:PaLI/Gemma 风格的 VLM 做视觉-语言理解
  • 动作头:一个Flow Matching 网络,以 VLM 的隐状态为条件,从噪声生成一段动作序列(action chunk)
  • 训练:用大规模示教数据(含跨本体、跨任务)训练,损失就是上文那个简单的 MSE 流匹配损失
  • 推理:用 ODE solver 生成一段未来 N 步动作,按需执行(action chunking)

为什么 π0 选 Flow Matching 而不是 Diffusion 或回归?

  • 比回归强:机器人动作高度多模态(同一个"把杯子放到架子上"有多种抓取和放置路径),回归会 mode averaging
  • 比扩散快:机器人控制需要 10–50 Hz,Flow Matching 的少步采样对实时性更友好
  • 比扩散稳:Flow Matching 的训练目标更平滑,大规模数据上收敛更可靠

VLA Action Head 三大流派回顾

方案精度速度多模态代表
离散化 TokenRT-2、OpenVLA
连续回归早期 SFT 头
Flow Matching较快(可优化)π0、π0.5

Flow Matching 正在成为高精度 VLA 动作头的事实标准。


🔗 与 GRPO 的结合:Flow-GRPO 的思路

强化学习是 VLA 走向"安全、舒适、符合人类偏好"的必经之路,而 GRPO(Group Relative Policy Optimization) 是 DeepSeek 提出的一种高效策略优化方法(被 R1 等模型采用)。问题是:Flow Matching 是一个生成式采样过程,怎么和 RL 结合?

核心挑战:从分布到策略

GRPO 原本是给自回归语言模型设计的:采样一组回答,用组内相对奖励做优势估计,更新策略。但 Flow Matching 输出的是连续动作分布,且采样依赖 ODE 积分,没有明确的 token 概率可读。要直接套用 GRPO,必须解决两个问题:

  • 如何定义 Flow Matching 策略的"概率"? Flow Matching 的密度 $p_\theta(x_1)$ 可以通过瞬时变量替换公式从 ODE 解出(涉及向量场的散度 $\nabla\cdot v_\theta$),从而得到 $\log p_\theta$ 用于计算策略梯度。
  • 如何在 ODE 采样上做组内比较? 对同一个状态(场景+指令),并行采样一组动作(多条轨迹),用环境奖励(碰撞、舒适、目标达成)排序,组内归一化得到优势。

Flow-GRPO 的基本框架

Flow-GRPO 的思路可以概括为四个步骤:

  1. 条件采样:对同一个 $(s, \text{指令})$,用当前 Flow Matching 策略并行采样一组动作 ${a^{(1)},\dots,a^{(G)}}$(不同的初始噪声 $x_0$ 给出不同的合理动作)
  2. 环境评估:把每个动作送入环境(仿真器或世界模型)得到奖励 $r^{(i)}$
  3. 组内优势:对奖励做组内归一化得到优势 $A^{(i)} = \frac{r^{(i)}-\bar r}{\sigma_r}$(GRPO 的精髓,免去价值网络)
  4. 策略更新:用score-function 或重参数化估计 $\nabla \log p_\theta(a^{(i)})$,结合优势更新向量场网络

为什么 Flow + RL 特别契合自动驾驶?

契合点说明
多模态探索Flow 采样天然给出多条不同轨迹,正是 RL 探索所需的样本多样性
连续动作平滑ODE 生成的动作平滑连续,比离散 token 更适合车辆控制
奖励稀疏可处理GRPO 的组内比较把"绝对奖励"变"相对优势",缓解驾驶奖励极度稀疏的问题
世界模型协同可用世界模型做 rollout 评估,无需真实路测,安全且低成本

💡 一句话理解 Flow-GRPO:用 Flow Matching 做多模态动作采样器,用 GRPO 做组内偏好优化,把"模仿学习出来的策略"对齐到"安全舒适的人类偏好"。


⚖️ 什么时候该用 Flow Matching?

场景推荐度理由
多模态动作/轨迹生成⭐⭐⭐⭐⭐天然支持多峰分布
实时性要求高的生成⭐⭐⭐⭐⭐少步采样,速度远胜扩散
单模态精确回归⭐⭐杀鸡用牛刀,普通回归头更快
离散决策(如左转/右转)适合分类,不必用生成模型
大规模图像/视频生成⭐⭐⭐⭐SD3、Meta MovieGen 都在用
高频控制(机器人/车端)⭐⭐⭐⭐⭐少步采样 + action chunking 是当前最优解

✅ 小结

记住这三个要点,就能抓住 Flow Matching 的精髓:

  1. 本质 = 学习一个速度场 $v_\theta(x,t)$,通过 ODE 把噪声分布"流"到数据分布,路径是直线
  2. 优势 = 路径直 → 采样步数少;目标平滑 → 训练稳定;理论上是扩散的更一般框架。
  3. 落地 = 在自动驾驶做多模态轨迹生成(DiffusionDrive 等)、在 VLA 做连续动作头(π0)、与 GRPO 结合做偏好对齐(Flow-GRPO)。

一句话总结:Flow Matching 把生成式建模从"弯路慢走"升级为"直路快跑",正在成为连续动作生成的事实标准,也是连接"模仿学习"和"强化学习"的关键桥梁。


📚 延伸阅读

奠基论文:

  • Flow Matching for Generative Modeling(Lipman et al., ICLR 2023)—— Flow Matching 原始论文
  • Stochastic Interpolants(Albergo & Vanden-Eijnden, 2023)—— 同期独立工作,与 FM 等价
  • Flow Straight and Fast: Rectified Flow(Liu et al., ICLR 2023)—— 整流流,路径拉直
  • Optimal Transport CFM(Tong et al., 2023)—— OT-CFM 变体

应用论文:

  • π0 / π0.5(Physical Intelligence, 2024)—— Flow Matching VLA 标杆
  • Diffusion Policy(Chi et al., 2023)—— 扩散动作头奠基,理解 FM 动作头的基础
  • DiffusionDrive(华中科大等)—— 扩散头轨迹规划
  • Stable Diffusion 3(Stability AI, 2024)—— Rectified Flow 用于图像生成

博客与代码:

  • Lily Yang 的 Flow Matching for Generative Modeling 教程(直观图解)
  • torchcfm(https://github.com/atong01/conditional-flow-matching)—— 官方 CFM 实现,入门首选
  • HuggingFace Diffusers 库已原生支持 Flow Matching / Rectified Flow

💡 新手建议:先读 torchcfm 的最小示例(100 行就能跑通),再对照本篇的"训练 vs 推理"两段伪代码,半天就能建立完整工程直觉。


💡 觉得有用?这是「知识点拆解」系列的第 4 篇,后续会继续讲强化学习(GRPO)和世界模型如何与这些生成模型协同。点个关注不迷路。