概率路径

流匹配先规定一条连接噪声与数据的概率路径 (pt)0t1(p_t)_{0\le t\le1},满足

p0=pinit,p1=pdata.p_0=p_{\mathrm{init}}, \qquad p_1=p_{\mathrm{data}}.

端点只规定“从哪里来、到哪里去”,中间如何连接并不唯一。路径若弯曲剧烈,对应速度会快速变化,生成时需要更小的积分步长;路径若让不同样本在中间高度重叠,网络又更难从当前位置判断应该前往何处。因此概率路径也是一种建模选择,它会同时影响回归难度和采样成本。

数据样本可以观测,但 pdatap_{\mathrm{data}} 以及中间边缘密度 pt(x)p_t(x) 的解析式未知,无法直接从全局密度推导训练标签。可计算的做法是:对每个 zpdataz\sim p_{\mathrm{data}} 定义一条条件概率路径 pt(xz)p_t(x\mid z),使 p0(z)=pinitp_0(\cdot\mid z)=p_{\mathrm{init}}p1(z)=δzp_1(\cdot\mid z)=\delta_z。固定 zz 后,复杂的数据分布被替换成一个已知终点,条件路径可以人为设计并直接采样;所有条件路径对数据分布求平均便恢复真正需要的边缘路径

pt(x)=pt(xz)pdata(z)dz.p_t(x)=\int p_t(x\mid z)p_{\mathrm{data}}(z)\,\mathrm dz.

积分中的 pdatap_{\mathrm{data}} 虽然没有解析式,训练集却能提供它的样本。因此即使无法计算 pt(x)p_t(x),仍可先采 zpdataz\sim p_{\mathrm{data}},再采 xpt(z)x\sim p_t(\cdot\mid z),获得服从正确边缘分布的 (t,x)(t,x)。流匹配把一个不可计算的密度问题转化成了可采样的监督学习问题,后续并不需要估计 pt(x)p_t(x) 本身。

常用的条件路径是

pt(xz)=N ⁣(x;αtz,βt2Id),p_t(x\mid z)=\mathcal N\!\left(x;\alpha_tz,\beta_t^2I_d\right),

其中 αt\alpha_t 控制保留多少数据信号,βt\beta_t 控制保留多少初始噪声;端点条件 α0=0,β0=1\alpha_0=0,\beta_0=1α1=1,β1=0\alpha_1=1,\beta_1=0 分别保证起点是纯噪声、终点收缩到 zz。固定 tt 后,采样可以重参数化为

ϵN(0,Id),xt=αtz+βtϵ.\epsilon\sim\mathcal N(0,I_d), \qquad x_t=\alpha_tz+\beta_t\epsilon.

本文始终采用“t=0t=0 为噪声,t=1t=1 为数据”的时间方向。最简单的 CondOT 路径取 αt=t,βt=1t\alpha_t=t,\beta_t=1-t,因此同一对 (ϵ,z)(\epsilon,z) 的状态沿连接二者的直线匀速移动。这里的“直线”针对条件样本轨迹;不同数据点对应的轨迹混合后,边缘分布的变化仍可能十分复杂。线性插值的优势是标签简单且轨迹不额外绕行,但在数据几何复杂时,许多条件轨迹可能交叠,使后验平均后的边缘速度变得更难预测。

条件向量场

概率路径描述每个时刻应出现怎样的分布,却没有说明单个样本如何变化。训练需要一个局部速度标签,因此还要找出能够实现这条路径的向量场。对固定数据点 zz,条件流映射

ψt(x0z)=αtz+βtx0\psi_t(x_0\mid z)=\alpha_tz+\beta_tx_0

X0N(0,Id)X_0\sim\mathcal N(0,I_d) 推送成 XtN(αtz,βt2Id)X_t\sim\mathcal N(\alpha_tz,\beta_t^2I_d)。它直接把初始噪声缩放为 βtX0\beta_tX_0,再加入均值位移 αtz\alpha_tz,因而恰好得到所需高斯分布。沿轨迹求导先得到 α˙tz+β˙tx0\dot\alpha_tz+\dot\beta_tx_0,但生成时网络只能看到当前状态 xx,不能访问未知的起点 x0x_0;用 x0=(xαtz)/βtx_0=(x-\alpha_tz)/\beta_t 消去起点,可得 βt>0\beta_t>0 时的条件目标场

uttarget(xz)=(α˙tβ˙tβtαt)z+β˙tβtx.u_t^{\mathrm{target}}(x\mid z) =\left(\dot\alpha_t-\frac{\dot\beta_t}{\beta_t}\alpha_t\right)z +\frac{\dot\beta_t}{\beta_t}x.

式中乘在 zz 前的系数负责把状态拉向条件终点,乘在 xx 前的系数负责随 βt\beta_t 收缩或扩张残留噪声;二者共同保证整族粒子的均值和方差都按预定日程变化。对于 CondOT 路径,

uttarget(xz)=zx1t.u_t^{\mathrm{target}}(x\mid z)=\frac{z-x}{1-t}.

xx 确实由 x=tz+(1t)ϵx=tz+(1-t)\epsilon 采得,上式才进一步化成 zϵz-\epsilon。这与线段的导数一致,并且沿同一条条件轨迹保持不变。前一个表达式定义任意位置 xx 上的向量场,在 t1t\to1 时看似有奇异分母;后一个表达式只用于按构造采得的训练点,此时分子也按 1t1-t 缩小,标签仍为有限的 zϵz-\epsilon。这种重参数化既避免数值上的相消,也省去了在训练时求解 ODE。

向量场驱动密度时满足连续性方程

tpt(x)+div ⁣(ptut)(x)=0.\partial_t p_t(x)+\operatorname{div}\!\left(p_tu_t\right)(x)=0.

其中 ptutp_tu_t 是概率流,散度衡量一个小区域流出量超过流入量的程度,负号把净流出对应到密度下降。方程没有产生或销毁概率质量,因此只要向量场满足它,粒子运动形成的分布就会沿指定的 ptp_t 演化。

边缘向量场

条件目标场依赖训练时已知的 zz,但真正生成时只有当前状态 xx,同一个 xx 又可能由许多不同的 (z,ϵ)(z,\epsilon) 产生。网络必须把这些互相冲突的条件速度压缩成一个只依赖 (x,t)(x,t) 的速度。根据 Bayes 公式,与当前位置相容的终点分布为

p1t(zx)=pt(xz)pdata(z)pt(x).p_{1\mid t}(z\mid x) =\frac{p_t(x\mid z)p_{\mathrm{data}}(z)}{p_t(x)}.

边缘目标场是条件场在这个后验下的平均:

uttarget(x)=uttarget(xz)p1t(zx)dz.u_t^{\mathrm{target}}(x) =\int u_t^{\mathrm{target}}(x\mid z) p_{1\mid t}(z\mid x)\,\mathrm dz.

每个 zz 都规定了当前位置在该条件路径上的速度,后验则衡量这个终点产生当前 xx 的可能性。平方误差下,条件期望正是所有只依赖 (x,t)(x,t) 的预测器中误差最小的选择,因此加权平均既是形式上的边缘化,也是网络面对终点歧义时的最优单值预测。后验很集中时,边缘速度接近某条条件速度;后验很分散时,互相冲突的方向会被平均,速度可能变小,这也解释了条件路径严重交叠为何会增加学习难度。

这个平均仍会精确驱动所需的边缘路径,而不会因为合并了不同条件轨迹就偏离目标。对条件连续性方程边缘化,有

tpt(x)=tpt(xz)pdata(z)dz=div ⁣(pt(xz)uttarget(xz)pdata(z)dz)=div ⁣(pt(x)uttarget(x)).\begin{aligned} \partial_t p_t(x) &=\int \partial_t p_t(x\mid z)p_{\mathrm{data}}(z)\,\mathrm dz\\ &=-\operatorname{div}\!\left( \int p_t(x\mid z)u_t^{\mathrm{target}}(x\mid z)p_{\mathrm{data}}(z)\,\mathrm dz \right)\\ &=-\operatorname{div}\!\left(p_t(x)u_t^{\mathrm{target}}(x)\right). \end{aligned}

第二行中的积分是所有条件概率流之和;利用 Bayes 公式后,它恰好等于 pt(x)uttarget(x)p_t(x)u_t^{\mathrm{target}}(x)。因此生成模型需要复现的是各条件路径合成后的概率流,并不需要为每个噪声点预先绑定一个唯一的数据样本。

流匹配训练

理想目标是让网络 utθ(x)u_t^\theta(x) 回归不可直接计算的边缘向量场:

LFM(θ)=EtUnif[0,1]xptutθ(x)uttarget(x)2.\mathcal L_{\mathrm{FM}}(\theta) =\mathbb E_{\substack{t\sim\mathrm{Unif}[0,1]\\x\sim p_t}} \left\|u_t^\theta(x)-u_t^{\mathrm{target}}(x)\right\|^2.

这里既无法逐点求出 uttarget(x)u_t^{\mathrm{target}}(x),也无法依靠 ptp_t 的解析式直接构造训练集;前面的条件路径同时提供了状态样本和速度标签。训练于是改用可计算的条件流匹配目标:

LCFM(θ)=EtUnif[0,1], zpdataxpt(z)utθ(x)uttarget(xz)2.\mathcal L_{\mathrm{CFM}}(\theta) =\mathbb E_{\substack{t\sim\mathrm{Unif}[0,1],\ z\sim p_{\mathrm{data}}\\x\sim p_t(\cdot\mid z)}} \left\|u_t^\theta(x)-u_t^{\mathrm{target}}(x\mid z)\right\|^2.

条件标签 uzu_z 对固定 (x,t)(x,t) 来说带有随机性:不同潜在终点会给出不同速度,但其条件均值就是 uˉ\bar u。平方损失会把误差分成预测偏离条件均值的部分,以及条件标签自身无法消除的方差,因此两种目标的可训练部分相同。令 v=utθ(x)v=u_t^\theta(x)uˉ=uttarget(x)\bar u=u_t^{\mathrm{target}}(x)uz=uttarget(xz)u_z=u_t^{\mathrm{target}}(x\mid z),分别展开平方:

LFM=Ev22E[vuˉ]+Euˉ2,\mathcal L_{\mathrm{FM}} =\mathbb E\|v\|^2-2\mathbb E[v^\top\bar u]+\mathbb E\|\bar u\|^2,

LCFM=Ev22E[vuz]+Euz2.\mathcal L_{\mathrm{CFM}} =\mathbb E\|v\|^2-2\mathbb E[v^\top u_z]+\mathbb E\|u_z\|^2.

边缘采样与联合采样给出的 xx 分布相同,所以两个 Ev2\mathbb E\|v\|^2 相同;又因为 uˉ=E[uzx,t]\bar u=\mathbb E[u_z\mid x,t],塔式法则给出 E[vuz]=E[vuˉ]\mathbb E[v^\top u_z]=\mathbb E[v^\top\bar u]。最后两项都不依赖 θ\theta,其差值就是终点歧义造成、网络无法通过改变参数消除的标签方差,故

LCFM(θ)=LFM(θ)+C,θLCFM=θLFM.\mathcal L_{\mathrm{CFM}}(\theta) =\mathcal L_{\mathrm{FM}}(\theta)+C, \qquad \nabla_\theta\mathcal L_{\mathrm{CFM}} =\nabla_\theta\mathcal L_{\mathrm{FM}}.

其中 C=Euzuˉ20C=\mathbb E\|u_z-\bar u\|^2\ge0,正是给定 (x,t)(x,t) 后条件速度仍然存在的方差。这说明每次随机采到的条件速度虽然通常不等于边缘速度,却是后者的无偏监督信号,长期回归会自动学到后验平均。等价性针对总体目标及其梯度;有限批量下,条件标签的方差仍会影响优化效率,路径设计也因此不能只看端点是否正确。

CondOT 的一次训练迭代为:采样 zpdataz\sim p_{\mathrm{data}}tUnif[0,1]t\sim\mathrm{Unif}[0,1]ϵN(0,I)\epsilon\sim\mathcal N(0,I);构造 xt=tz+(1t)ϵx_t=tz+(1-t)\epsilon;用 zϵz-\epsilon 作为速度标签计算 MSE,再更新参数。任意时刻的训练样本都能由闭式公式独立构造,训练过程无需从 00 积分到 tt,不同样本和时间也可以并行处理;训练结束后才从噪声出发连续执行局部速度,因此生成仍需承担数值积分的多步成本。