想象桌面上有一团墨水。你希望它最终形成一个复杂图案,但不能逐粒指定每个墨水分子的终点;你只能在空间的每个位置设置一个流速,让经过这里的粒子朝某个方向运动。只要这套局部规则设计得当,整团墨水就会从简单形态逐渐变成目标形态。
Flow Matching 把这种物理图景搬进生成模型。空间不再是现实中的二维或三维,而是图像或视频 latent 所在的高维空间;粒子不再是水分子,而是随机样本;质量密度则变成概率密度。
速度场、轨迹和 Flow 是三件不同的事
单个物体的速度是一个向量。速度场则为空间中的每个位置、每个时刻分配一个向量:
给定初始点 x(0)=x₀,粒子服从常微分方程:
求解这条 ODE 得到一个粒子的轨迹 x(t)。如果对所有可能的初始点一起求解,就得到流映射 φₜ:
在视频模型里,“速度”没有米/秒的物理单位。若视频 latent 为 x∈R^(C×T×H×W),网络输出同形状的张量,表示每个 latent 坐标对生成时间的变化率。
从粒子运动到概率分布运动
若初始粒子来自简单分布 p₀,例如标准高斯噪声,那么应用 Flow 后,所有粒子在时刻 t 形成新分布 pₜ:
概率密度如何随速度场变化,由连续性方程描述:
这正是流体力学中的质量守恒形式。区别只在于:物理流体的密度是物质密度,而生成模型中的 pₜ 是概率密度;物理时间是真实时间,生成模型的 t∈[0,1] 是人为定义的生成进度。
Flow Matching:直接学习速度场
Flow Matching 原论文将生成问题表述为学习一个速度场,使其从 t=0 开始把噪声分布 p₀ 输运到 t=1 的数据分布 p₁。
如果理想边缘速度场 uₜ(x) 已知,只需让神经网络的输出去匹配它:
这里匹配的不是最终图片、视频或概率密度,而是路径中间每一点的瞬时速度。训练时也不需要先完整求解 ODE;只要随机抽取时间和中间状态,进行普通的监督回归即可。这也是 Flow Matching 被称为“simulation-free training”的原因。
pₜ 和边缘速度场 uₜ 通常无法直接写出或采样。因此还需要 Conditional Flow Matching,把难以获得的分布级监督变成容易构造的样本级监督。Conditional Flow Matching:先为具体样本构造路径
从两个端点分布中抽取一对样本:
针对这对端点,人为设计一条条件概率路径 xₜ=ψₜ(x₀,x₁)。只要这条路径可以采样并求导,它的条件速度就已知:
于是可以训练:
单个样本提供的是“这条具体条件路径在此处应向哪里走”的监督。对大量样本最小化 MSE 后,最优预测是这些条件速度在给定位置的条件平均:
相关理论保证:在合适条件下,这个边缘化后的速度场会产生与所选概率路径相同的边缘分布演化。因此我们可以用易计算的条件速度监督,间接学到难以直接计算的分布级速度场。
这里的 “Conditional” 是文本条件生成吗?
不是。CFM 中的 conditional 首先指“条件于某个数据端点或端点配对”来构造路径。文本 prompt、首帧或参考图是另一层生成条件,通常写成 c,模型可以进一步写作 vθ(xₜ,t,c)。两种 condition 可以同时存在,但含义不同。
Rectified Flow:选择最简单的直线路径
Rectified Flow 原论文选择让每对噪声和数据样本沿直线连接。本文统一采用 t=0 为噪声、t=1 为数据的约定:
对时间求导:
所以最基本的 Rectified Flow 损失只是速度回归:
(xₜ,t) 时,会在路径交叉区域学习平均速度。因此推理时由边缘速度场产生的轨迹仍可能弯曲。“Rectified”强调让输运轨迹更直、更容易用少量 ODE 步近似,但直线路径本身不保证网络学到的所有生成轨迹都完全笔直。端点配对方式、模型容量和训练误差都会影响最终场的弯曲程度。
训练视频究竟如何计算成 loss?
大型视频生成模型通常不在 RGB 像素空间直接训练 Flow Transformer,而是先用冻结的 Video VAE 将视频压缩成连续时空 latent。以 Meta Movie Gen 为例,其公开论文描述了时空自动编码器、Flow Matching 训练目标和 Transformer 主干;下文流程是这类 latent 视频系统的通用化说明,而非对所有实现细节的断言。
抽帧、裁剪、缩放并归一化,得到 V∈R^(T×H×W×3)。
z=E(V),在时间与空间维压缩视频。
采样 ε 和 t,计算 xₜ=(1−t)ε+tz。
DiT 接收 xₜ、t 和文本等条件,输出 v̂。
将 v̂ 与目标速度 z−ε 比较,并反向传播。
第一步:视频变成 latent
一段训练视频可写为:
例如 81 帧、768×1280 的视频,经时间和空间压缩后可能成为几十个通道、约二十个时间位置的小型 latent 张量。具体尺寸取决于 VAE。后续 loss 一般在这个 latent 上计算。
第二步:为整段 latent 采样噪声和时间
q(t) 可以是均匀分布,也可以是 logit-normal 等非均匀采样策略,用来重新分配不同噪声区间的训练频率。
第三步:构造网络输入和监督标签
target = z − ε
网络同时看到带噪视频 latent、生成时间和条件信息:
第四步:对有效视频 token 求均方误差
索引 i 遍历通道、时间和空间位置。mᵢ 是有效 token mask,用来排除批处理中补齐的帧或不参与生成的已知区域;w(t) 是可选时间权重。最基础实现则直接对所有 latent 元素取平均。
with torch.no_grad():
z = video_vae.encode(video) # [B, C, T', H', W']
noise = torch.randn_like(z)
t = sample_t(batch_size)
t5 = t[:, None, None, None, None]
x_t = (1 - t5) * noise + t5 * z
target_velocity = z - noise
pred_velocity = dit(x_t, t, text_condition)
loss = masked_mse(pred_velocity, target_velocity, token_mask)
loss.backward()
首帧、编辑与音视频联合生成
首帧生视频时,首帧可作为干净条件,目标区域参与 flow loss;视频编辑时,通过 mask 只对待编辑区域计算损失;联合音视频模型则分别构造视频 latent 与音频 latent 的流,并以加权和训练:
共享 Transformer 允许视频和音频 token 在预测速度时相互注意,从而学习口型、动作与声音事件之间的时间关系。
推理时没有真实终点,为什么还能生成?
训练阶段知道真实数据端点 x₁,它只用于构造中间状态和速度标签。推理时没有真实终点,从一个新的随机噪声开始:
数值求解器从 t=0 积分到 t=1。最简单的 Euler 更新为:
最终 latent 经 Video VAE decoder 还原为视频。不同随机起点沿同一条件速度场到达不同终点,因此能生成多个符合 prompt 的样本。
Reflow 为什么能减少采样步数
第一版模型形成的实际输运可能仍然弯曲。Reflow 使用模型产生的新噪声—样本配对,再次以直线目标训练,使配对更符合模型本身的输运关系。轨迹越直,低阶 ODE 求解器用少量大步近似时的误差通常越小。
但工程文章中的 “Rectified Flow” 有时只是指采用直线插值的 flow-matching objective,并不必然表示模型做过多轮 reflow。判断具体系统时应查看其训练说明。
与扩散模型、光流和 Normalizing Flow 的关系
| 概念 | 它描述什么 | 训练或求解对象 | 不要混淆之处 |
|---|---|---|---|
| Rectified Flow | 噪声与数据之间的连续概率输运 | 确定性 ODE 的速度场 | “速度”是高维 latent 的变化率 |
| 扩散 / Score model | 加噪过程及其逆向恢复 | score、噪声或其他等价参数化 | 很多扩散概率路径也可用 Flow Matching 训练 |
| Optical Flow | 相邻视频帧中像素或物体的二维位移 | 画面内运动对应关系 | 不是概率分布从噪声到视频的 Flow |
| Continuous Normalizing Flow | ODE 定义的可逆分布变换 | 连续流映射及密度变化 | Flow Matching 是训练这类速度场的一种方法 |
Flow Matching 是一个比 Rectified Flow 更一般的框架。它可以使用直线 Optimal Transport 路径,也可以采用与扩散过程类似的高斯概率路径、方差保持路径或其他几何路径。因此“Flow Matching 替代了扩散”并不总是严谨:二者在概率路径和参数化层面存在重叠。
可以用下面的层次建立记忆:
四个最常见的误区
1. “直线路径”意味着生成轨迹一定是直线
不一定。每个条件配对的监督路径是直线;路径交叉后,网络学习的是平均速度场,其积分轨迹可能弯曲。
2. 网络是在预测最终视频
基础 Rectified Flow 网络预测的是当前状态的瞬时速度。最终视频由速度场经过多步 ODE 积分产生。
3. CFM 中的 conditional 就是 prompt
CFM 的条件首先是用于构造监督的端点或端点配对。prompt 是可额外输入的语义条件。
4. 视频 loss 是生成 RGB 后逐像素比较
主流 latent 视频模型通常冻结 VAE,在压缩 latent 上构造中间状态,并计算速度预测 MSE。只有 VAE 训练阶段才直接承担重建像素与感知细节的任务。
x₁−x₀。视频模型只是把这里的点换成经过 VAE 压缩的整段视频 latent。参考资料
- Liu, Gong, Liu. Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow.
- Lipman et al. Flow Matching for Generative Modeling.
- Lipman et al. Flow Matching Guide and Code;配套 官方代码库.
- Meta Movie Gen Team. Movie Gen: A Cast of Media Foundation Models.
- OpenAI. Video generation models as world simulators.