Flow Matching

Flow Matching 技术概览

Flow Matching 是一种用于训练连续正向流动(Continuous Normalizing Flows, CNF) 的新型框架。它通过直接回归向量场(Vector Field)来避免扩散模型中复杂的随机微分方程(SDE)求解过程,从而实现更快的推理速度和更好的生成质量。

1. 可视化流匹配

2. 核心思想

在传统的扩散模型中,我们通常将数据转换为噪声,然后再学习如何逆转这个过程。而 Flow Matching 的核心在于:给定起始分布(噪声)和目标分布(数据),我们直接学习一个向量场,让样本沿着这个向量场定义的轨迹“流”向目标。

核心优势

  • 确定性轨迹:相比于扩散模型的随机性,FM 学习的是确定的常微分方程(ODE)。
  • 训练效率:不需要模拟整个 ODE 轨迹,通过路径采样即可进行可扩展的训练。
  • 直线轨迹(Optimal Transport):FM 可以被设计为学习直线路径,这是生成样本的最快路径。

3. 数学定义

假设我们有一个概率密度路径 pt(x)p_t(x),其中 t[0,1]t \in [0, 1]p0p_0 是噪声分布,p1p_1 是数据分布。Flow Matching 的目标是找到一个向量场 vt(x)v_t(x),使得其定义的 ODE 能够生成该密度路径。

dxdt=vt(x)\frac{dx}{dt} = v_t(x)

目标函数 (Flow Matching Objective)

我们定义一个条件概率路径 pt(xx1)p_t(x|x_1) 和对应的条件向量场 ut(xx1)u_t(x|x_1)。FM 的损失函数简化为对该向量场的回归:

LFM=Et,q(x1),pt(xx1)vt(x)ut(xx1)2\mathcal{L}_{FM} = \mathbb{E}_{t, q(x_1), p_t(x|x_1)} \| v_t(x) - u_t(x|x_1) \|^2

其中:

  • tUniform[0,1]t \sim \text{Uniform}[0, 1]
  • x1q(x1)x_1 \sim q(x_1) (真实数据)
  • xpt(xx1)x \sim p_t(x|x_1) (在 tt 时刻的插值样本)

4. 常见的 Flow 路径:最优传输 (Optimal Transport)

在实践中,最常用的形式是 Conditional Flow Matching (CFM),尤其是具有直线轨迹的路径。

高斯条件路径

如果我们取 x0N(0,I)x_0 \sim \mathcal{N}(0, I),则直线路径(Optimal Transport path)可以表示为:

  • 样本插值xt=(1t)x0+tx1x_t = (1 - t)x_0 + t x_1
  • 目标向量场ut(xx1)=x1x0u_t(x|x_1) = x_1 - x_0

这种设计使得模型学习到的位移是恒定的,样本在推理时几乎沿着直线移动。

5. 与扩散模型 (Diffusion) 的区别

特性 扩散模型 (Diffusion) Flow Matching
数学基础 随机微分方程 (SDE) 常微分方程 (ODE)
轨迹 弯曲且带噪声 可以是完美的直线 (Optimal Transport)
推理步数 通常需要较多步数 (50-100) 极少数步数即可 (甚至 1-5 步)
预测目标 噪声 (ϵ\epsilon) 或 原始数据 (x0x_0) 向量场 (Velocity/Vector Field)

6. 实现流程

  1. 采样:从数据集中采样 x1x_1,从高斯分布中采样 x0x_0
  2. 插值:选取随机时间 tt,计算 xt=(1t)x0+tx1x_t = (1-t)x_0 + t x_1
  3. 预测:将 (xt,t)(x_t, t) 输入神经网络(如 U-Net 或 DiT),预测向量场 vt(xt)v_t(x_t)
  4. 损失计算:计算预测值与真值 (x1x0)(x_1 - x_0) 之间的均方误差。
  5. 推理:使用 ODE 求解器(如 Euler 或 RK4)从 t=0t=0 积分到 t=1t=1

Flow Matching
https://huan-yin.github.io/2026/03/18/Flow-Matching/
作者
李相越
发布于
2026年3月18日
许可协议