1. Rectified Flow:通过"拉直"构造直线路径
1.1 核心思想
扩散模型通过迭代去噪生成样本,但采样需要大量步数。Rectified Flow 的核心思想是:从一个简单的随机插值出发,学习一个保持边际分布不变 的向量场,使得粒子沿该向量场流动的轨迹尽可能是"直的",由此可以减少采样步数。
1.1.1 为什么需要"拉直"路径
在传统的扩散模型中,数据从噪声分布到目标分布的转换路径往往是非线性的。这种非线性路径导致采样时需要多步迭代才能获得高质量结果。Rectified Flow通过构造直线路径,使得采样过程可以一步到位,大大提高了效率。
1.1.2 边际分布不变的重要性
保持边际分布不变意味着在路径"拉直"过程中,每个时间点的数据分布都与原始路径相同。这确保了最终生成的数据质量不会因为路径优化而降低。
1.2 关键定义
定义 1.1(期望速度) 对于一个路径连续可微的随机过程 X={Xt:t∈[0,1]}X = \{X_t : t \in [0, 1]\}X={Xt:t∈[0,1]},其期望速度 vXv^XvX 定义为:
vX(x,t)=E[X˙t∣Xt=x],∀x∈supp(Xt). v^X(x, t) = \mathbb{E}[\dot{X}_t \mid X_t = x], \quad \forall x \in \text{supp}(X_t). vX(x,t)=E[X˙t∣Xt=x],∀x∈supp(Xt).
对于 x∉supp(Xt)x \notin \text{supp}(X_t)x∈/supp(Xt),条件期望无定义,此时可任意指定 vXv^XvX 的值(例如令 vX(x,t)=0v^X(x, t) = 0vX(x,t)=0)。
直观理解 :即使当 XtX_tXt 取某固定值 xxx 时,路径导数 X˙t\dot{X}_tX˙t 仍可能因不同样本路径而有不同的取值,因此 X˙t∣(Xt=x)\dot{X}_t \mid (X_t = x)X˙t∣(Xt=x) 一般是非退化的随机向量。期望速度 vX(x,t)v^X(x,t)vX(x,t) 给出了在位置 xxx 和时间 ttt 处的"平均运动方向"。
定义 1.2(可矫正性) 我们称 XXX 是可矫正的 (rectifiable),如果 vXv^XvX 是局部有界的,并且以下积分方程的解存在且唯一:
Zt=Z0+∫0tvX(Zs,s) ds,∀t∈[0,1],Z0=X0. Z_t = Z_0 + \int_0^t v^X(Z_s, s) , ds, \quad \forall t \in [0, 1], \quad Z_0 = X_0. Zt=Z0+∫0tvX(Zs,s)ds,∀t∈[0,1],Z0=X0.
在这种情况下,Z:={Zt:t∈[0,1]}Z := \{Z_t : t \in [0, 1]\}Z:={Zt:t∈[0,1]} 称为由 XXX 诱导出的矫正流 (Rectified Flow)。
1.2.1 可矫正性的实际意义
可矫正性确保了我们可以从原始随机过程构造出一个确定性的微分方程,这个方程描述了数据从噪声分布到目标分布的最优转换路径。在实际应用中,大多数合理的随机过程都满足可矫正性条件。
1.3 核心定理:边际分布守恒
定理 1.3 若 XXX 是可矫正的,且 ZZZ 为其诱导的矫正流,则对任意 t∈[0,1]t \in [0, 1]t∈[0,1] 有:
Law(Zt)=Law(Xt). \mathrm{Law}(Z_t) = \mathrm{Law}(X_t). Law(Zt)=Law(Xt).
定理的证明核心是XtX_tXt和ZtZ_tZt的分布满足同一个连续性方程:
π˙t+∇⋅(vX(⋅,t)πt)=0. \dot{\pi}_t + \nabla \cdot \big( v^X(\cdot, t) \pi_t \big) = 0. π˙t+∇⋅(vX(⋅,t)πt)=0.
第一步:推导 XtX_tXt 的分布演化方程
交换期望与时间导数,此外由于t↦Xt(ω)t \mapsto X_t(\omega)t↦Xt(ω)几乎处处连续可微,可利用链式法则:
ddtE[h(Xt)]=E[ddth(Xt)]=E[∇h(Xt)⊤X˙t] \frac{d}{dt} \mathbb{E}[h(X_t)] = \mathbb{E}\left[ \frac{d}{dt} h(X_t) \right]= \mathbb{E}[ \nabla h(X_t)^\top \dot{X}_t ] dtdE[h(Xt)]=E[dtdh(Xt)]=E[∇h(Xt)⊤X˙t]
由于∇h(Xt)\nabla h(Xt)是XtX_tXt的可测函数,利用全期望公式E[X]=E[E[X∣Y]]\mathbb{E}[X]=\mathbb{E}[\mathbb{E}[X|Y]]E[X]=E[E[X∣Y]],有
E[∇h(Xt)⊤X˙t]=E[E[∇h(Xt)⊤X˙t∣Xt]] \mathbb{E}[\nabla h(X_t)^\top \dot{X}_t] = \mathbb{E}[\mathbb{E}[\nabla h(X_t)^\top \dot{X}_t|X_t]] E[∇h(Xt)⊤X˙t]=E[E[∇h(Xt)⊤X˙t∣Xt]]
由于XtX_tXt已知,故∇h(Xt)⊤\nabla h(X_t)^\top∇h(Xt)⊤可以移出内层期望,即
E[E[∇h(Xt)⊤X˙t∣Xt]]=E[∇h(Xt)⊤E[X˙t∣Xt]] \mathbb{E}[\mathbb{E}[\nabla h(X_t)^\top \dot{X}_t|X_t]]= \mathbb{E}[\nabla h(X_t)^\top \mathbb{E}[\dot{X}_t|X_t]] E[E[∇h(Xt)⊤X˙t∣Xt]]=E[∇h(Xt)⊤E[X˙t∣Xt]]
由于前述定义vX(Xt,t)=E[X˙t∣Xt]v^X(X_t, t) = \mathbb{E}[\dot{X}_t | X_t]vX(Xt,t)=E[X˙t∣Xt],故
E[∇h(Xt)⊤E[X˙t∣Xt]]=E[∇h(Xt)⊤vX(Xt,t)] \mathbb{E}[\nabla h(X_t)^\top \mathbb{E}[\dot{X}_t|X_t]]= \mathbb{E}[\nabla h(X_t)^\top v^X(X_t, t)] E[∇h(Xt)⊤E[X˙t∣Xt]]=E[∇h(Xt)⊤vX(Xt,t)]
故有:
ddtE[h(Xt)]=E[∇h(Xt)⊤vX(Xt,t)] \frac{d}{dt} \mathbb{E}[h(X_t)] =\mathbb{E}[\nabla h(X_t)^\top v^X(X_t, t)] dtdE[h(Xt)]=E[∇h(Xt)⊤vX(Xt,t)]
第二步:转化为连续性方程
记 πt:=Law(Xt)\pi_t := \mathrm{Law}(X_t)πt:=Law(Xt),则ddtE[h(Xt)]=E[∇h(Xt)⊤vX(Xt,t)]\frac{d}{dt} \mathbb{E}[h(X_t)] =\mathbb{E}[\nabla h(X_t)^\top v^X(X_t, t)]dtdE[h(Xt)]=E[∇h(Xt)⊤vX(Xt,t)]等价于:
ddt∫h(x) πt(dx)=∫∇h(x)⊤vX(x,t) πt(dx). \frac{d}{dt} \int h(x) , \pi_t(dx) = \int \nabla h(x)^\top v^X(x,t) , \pi_t(dx). dtd∫h(x)πt(dx)=∫∇h(x)⊤vX(x,t)πt(dx).
利用分部积分(边界项因 hhh 紧支集而为零):
∫∇h(x)⊤vX(x,t) πt(dx)=−∫h(x) ∇⋅(vX(x,t)πt)(dx). \int \nabla h(x)^\top v^X(x,t) , \pi_t(dx) = -\int h(x) , \nabla \cdot \big( v^X(x,t) \pi_t \big)(dx). ∫∇h(x)⊤vX(x,t)πt(dx)=−∫h(x)∇⋅(vX(x,t)πt)(dx).
因此在分布意义下成立连续性方程 :
π˙t+∇⋅(vX(⋅,t)πt)=0. \dot{\pi}_t + \nabla \cdot \big( v^X(\cdot, t) \pi_t \big) = 0. π˙t+∇⋅(vX(⋅,t)πt)=0.
由于矫正流 ZtZ_tZt 满足 ODE dZtdt=vX(Zt,t)\frac{dZ_t}{dt} = v^X(Z_t, t)dtdZt=vX(Zt,t),其边际分布也满足相同的连续性方程。由解的唯一性及相同的初始条件 Z0=X0Z_0 = X_0Z0=X0,得 Law(Zt)=Law(Xt)\mathrm{Law}(Z_t) = \mathrm{Law}(X_t)Law(Zt)=Law(Xt)。
注 :证明中 E[h(Xt)]\mathbb{E}[h(X_t)]E[h(Xt)] 的两种处理方式体现了两个视角:路径视角(hhh 的输入是依赖于 ttt 的随机变量 Xt(ω)X_t(\omega)Xt(ω))与分布视角(将期望转换为对固定空间坐标 xxx 的积分,时间仅出现在分布权重 πt(dx)\pi_t(dx)πt(dx) 中)。
1.3.1 定理的实际应用
这个定理在实际应用中有重要意义,它保证了我们可以安全地"拉直"路径而不会改变数据分布。这意味着我们可以:
- 使用更简单的ODE进行采样
- 减少采样步数
- 保持生成质量不变
1.4 递归矫正:让路径越来越直
初始插值的选择 :最简单的选择是线性插值 Xt=tX1+(1−t)X0X_t = tX_1 + (1-t)X_0Xt=tX1+(1−t)X0,其中 X0∼pX_0 \sim pX0∼p(先验),X1∼qX_1 \sim qX1∼q(数据分布)。注意:该路径存在交叉 。
递归过程 :
- 第一次矫正 :X0,X1X_0, X_1X0,X1 独立采样,学习 vXv^XvX,得到矫正流 Z(1)Z^{(1)}Z(1)
- 第 kkk 次矫正:X0∼pX_0 \sim pX0∼p,X1=Z1(k−1)X_1 = Z^{(k-1)}_1X1=Z1(k−1)(由前一次 ODE 确定性生成),再次学习
每次矫正后,X1X_1X1 虽由 X0X_0X0 确定性决定,但因 X0X_0X0 随机,Xt=tX1+(1−t)X0X_t = tX_1 + (1-t)X_0Xt=tX1+(1−t)X0 仍是合法随机过程,定理 1.3 依然适用。
训练目标 (每次矫正形式相同):
θ^=argminθEt∼U[0,1],X0,X1[∥X1−X0−vθ(tX1+(1−t)X0,t)∥2]. \hat{\theta} = \arg\min_{\theta} \mathbb{E}{t \sim \mathcal{U}[0,1], X_0, X_1} \left[ |X_1 - X_0 - v\theta(tX_1 + (1-t)X_0, t)|^2 \right]. θ^=argθminEt∼U[0,1],X0,X1[∥X1−X0−vθ(tX1+(1−t)X0,t)∥2].
1.4.1 递归矫正的实际操作
在实际操作中,递归矫正通常进行3-5次就能获得很好的效果。每次矫正后,路径会变得更直,采样效率会更高。具体步骤包括:
- 初始化:选择线性插值作为初始路径
- 训练:使用当前路径训练速度场模型
- 采样:用训练好的模型生成新的样本
- 更新:用新样本构造新的路径
- 重复:回到步骤2,直到路径足够直
1.5 收敛性分析
定义直度与方差:
- 直度 (Straightness):S(Z)=∫01E[∥vX(Zt,t)−(Z1−Z0)∥2]dtS(Z) = \int_0^1 \mathbb{E}[|v^X(Z_t,t) - (Z_1-Z_0)|^2] dtS(Z)=∫01E[∥vX(Zt,t)−(Z1−Z0)∥2]dt,衡量轨迹与直线的偏离
- 方差 (Variance):V((X0,X1))=∫01E[∥X1−X0−vX(Xt,t)∥2]dtV((X_0,X_1)) = \int_0^1 \mathbb{E}[|X_1-X_0 - v^X(X_t,t)|^2] dtV((X0,X1))=∫01E[∥X1−X0−vX(Xt,t)∥2]dt,衡量插值路径的交叉程度
定理 1.4 设ZkZ^kZk为(X0,X1)(X_0, X_1)(X0,X1)的第kkk次校正流,即Zk+1=RectFlow((Z0k,Z1k))Z^{k+1} = \text{RectFlow}((Z_0^k, Z_1^k))Zk+1=RectFlow((Z0k,Z1k))且 (Z00,Z10)=(X0,X1)(Z_0^0, Z_1^0) = (X_0, X_1)(Z00,Z10)=(X0,X1)。假设每个(Z0k,Z1k)(Z_0^k, Z_1^k)(Z0k,Z1k)对于k=0,…,Kk = 0, \ldots, Kk=0,…,K都是可校正的。
那么
∑k=0KS(Zk+1)+V((Z0k,Z1k))≤E[∥X1−X0∥2]. \sum_{k=0}^K S(Z^{k+1}) + V((Z_0^k, Z_1^k)) \leq \mathbb{E}\left[ |X_1 - X_0|^2 \right]. k=0∑KS(Zk+1)+V((Z0k,Z1k))≤E[∥X1−X0∥2].
因此,如果E[∥X1−X0∥2]<+∞\mathbb{E}[|X_1 - X_0|^2] < +\inftyE[∥X1−X0∥2]<+∞,则有mink≤K(S(Zk)+V((Z0k,Z1k)))=O(1/K)\min_{k \leq K} \left( S(Z^k) + V((Z_0^k, Z_1^k)) \right) = O(1/K)mink≤K(S(Zk)+V((Z0k,Z1k)))=O(1/K)。
证明:
对于任意 t∈[0,1]t \in [0,1]t∈[0,1],在分布意义下:
E[∥X1−X0∥2∣Xt]=∥E[X1−X0∣Xt=x]∥2+E[∥X1−X0−E[X1−X0∣Xt=x]∥2∣Xt] \mathbb{E}[|X_1-X_0|^2 \mid X_t] = |\mathbb{E}[X_1-X_0 \mid X_t = x]|^2 + \mathbb{E}[|X_1-X_0 - \mathbb{E}[X_1-X_0 \mid X_t = x]|^2 \mid X_t] E[∥X1−X0∥2∣Xt]=∥E[X1−X0∣Xt=x]∥2+E[∥X1−X0−E[X1−X0∣Xt=x]∥2∣Xt]
即
E[∥X1−X0∥2∣Xt]=∥vX(Xt,t)∥2+E[∥X1−X0−vX(Xt,t)∥2∣Xt] \mathbb{E}[|X_1-X_0|^2 \mid X_t] = |v^X(X_t,t)|^2 + \mathbb{E}[|X_1-X_0 - v^X(X_t,t)|^2 \mid X_t] E[∥X1−X0∥2∣Xt]=∥vX(Xt,t)∥2+E[∥X1−X0−vX(Xt,t)∥2∣Xt]
对XtX_tXt取期望:
E[∥X1−X0∥2]=E[∥vX(Xt,t)∥2]+E[∥X1−X0−vX(Xt,t)∥2]=E[∥vX(Zt,t)∥2]+E[∥X1−X0−vX(Xt,t)∥2] \begin{aligned} \mathbb{E}[|X_1-X_0|^2 ] &= \mathbb{E}[|v^X(X_t,t)|^2] + \mathbb{E}[|X_1-X_0 - v^X(X_t,t)|^2 ] \\ &= \mathbb{E}[|v^X(Z_t,t)|^2] + \mathbb{E}[|X_1-X_0 - v^X(X_t,t)|^2 ] \end{aligned} E[∥X1−X0∥2]=E[∥vX(Xt,t)∥2]+E[∥X1−X0−vX(Xt,t)∥2]=E[∥vX(Zt,t)∥2]+E[∥X1−X0−vX(Xt,t)∥2]
由 Jensen 不等式:
E[∥Z1−Z0∥2]=E[∥∫01vX(Zt,t)dt∥2]≤E[∫01∥vX(Zt,t)∥2dt]=∫01E[∥vX(Zt,t)∥2]dt\mathbb{E}[|Z_1-Z_0|^2] = \mathbb{E}\left[\left|\int_0^1 v^X(Z_t,t)\mathrm{d}t\right|^2\right] \leq \mathbb{E}\left[\int_0^1 \left|v^X(Z_t,t)\right|^2 \mathrm{d}t \right]=\int_0^1 \mathbb{E}[|v^X(Z_t,t)|^2] \mathrm{d}tE[∥Z1−Z0∥2]=E[∫01vX(Zt,t)dt2]≤E[∫01vX(Zt,t)2dt]=∫01E[∥vX(Zt,t)∥2]dt
对于二次函数,有精确等式 加上方差项:
∫01E[∥vX(Zt,t)∥2]dt−E[∥Z1−Z0∥2]=∫01E[∥vX(Zt,t)−(Z1−Z0)∥2]dt=S(Z)\int_0^1 \mathbb{E}[|v^X(Z_t,t)|^2] \mathrm{d}t - \mathbb{E}[|Z_1-Z_0|^2] = \int_0^1 \mathbb{E}[|v^X(Z_t,t) - (Z_1-Z_0)|^2] \mathrm{d}t = S(\mathbf{Z})∫01E[∥vX(Zt,t)∥2]dt−E[∥Z1−Z0∥2]=∫01E[∥vX(Zt,t)−(Z1−Z0)∥2]dt=S(Z)
即
∫01E[∥vX(Zt,t)∥2]dt=E[∥Z1−Z0∥2]+S(Z)\int_0^1 \mathbb{E}[|v^X(Z_t,t)|^2] \mathrm{d}t = \mathbb{E}[|Z_1-Z_0|^2] + S(\mathbf{Z})∫01E[∥vX(Zt,t)∥2]dt=E[∥Z1−Z0∥2]+S(Z)
综合,有:
E[∥X1−X0∥2]=∫01E[∥X1−X0∥2]dt=E[∥Z1−Z0∥2]+S(Z)+V((X0,X1)) \mathbb{E}[|X_1-X_0|^2 ] = \int_0^1 \mathbb{E}[|X_1-X_0|^2 ] \mathrm{d}t=\mathbb{E}[|Z_1-Z_0|^2] + S(\mathbf{Z})+ V((X_0,X_1)) E[∥X1−X0∥2]=∫01E[∥X1−X0∥2]dt=E[∥Z1−Z0∥2]+S(Z)+V((X0,X1))
应用到每一步有:
E[∥Z1k−Z0k∥2]−E[∥Z1k+1−Z0k+1∥2]=S(Zk+1)+V((Z0k,Z1k)). \mathbb{E} \left[ \left| Z_1^k - Z_0^k \right|^2 \right] - \mathbb{E} \left[ \left| Z_1^{k+1} - Z_0^{k+1} \right|^2 \right] = S(Z^{k+1}) + V((Z_0^k, Z_1^k)). E[Z1k−Z0k2]−E[Z1k+1−Z0k+12]=S(Zk+1)+V((Z0k,Z1k)).
累加kkk,
∑k=0KS(Zk+1)+V((Z0k,Z1k))≤E[∥X1−X0∥2] \sum_{k=0}^K S(Z^{k+1}) + V((Z_0^k, Z_1^k)) \leq \mathbb{E} \left[ |X_1 - X_0|^2 \right] k=0∑KS(Zk+1)+V((Z0k,Z1k))≤E[∥X1−X0∥2]
由于E[∥X1−X0∥2]\mathbb{E} \left[ |X_1 - X_0|^2 \right]E[∥X1−X0∥2]是常数,故mink≤K(S(Zk)+V((Z0k,Z1k)))=O(1/K)\min_{k \leq K} \left( S(Z^k) + V((Z_0^k, Z_1^k)) \right) = O(1/K)mink≤K(S(Zk)+V((Z0k,Z1k)))=O(1/K)
这表明递归矫正使轨迹越来越直,且插值耦合越来越不相交。
1.5.1 收敛速度的实践意义
在实践中,这个收敛速度意味着:
- 初期改进明显:前几次递归矫正能显著改善路径直度
- 收益递减:随着递归次数增加,每次改进的效果会减小
- 3-5次足够:通常3-5次递归就能获得很好的效果,更多次的改进有限
2. Flow Matching:从条件向量场到边际向量场
2.1 问题设定
Flow Matching 同样建模为 ODE,但采用条件化 的构造方式。目标是学习向量场 ut(x)u_t(x)ut(x),使得从先验 p0=pp_0 = pp0=p 出发,沿该向量场演化到 p1≈qp_1 \approx qp1≈q(数据分布)。
2.1.1 Flow Matching与Rectified Flow的关系
Flow Matching和Rectified Flow是两种不同的思路,但最终可以统一。Rectified Flow从任意随机过程出发构造直线路径,而Flow Matching从条件概率路径出发构造边际向量场。当参数选择恰当时,两者的训练目标会完全一致。
2.2 条件概率路径的构造
对任意固定的 x1∼qx_1 \sim qx1∼q,构造条件概率路径:
p0(x∣x1)=p(x),p1(x∣x1)=N(x∣x1,σ2I). p_0(x|x_1) = p(x), \quad p_1(x|x_1) = \mathcal{N}(x \mid x_1, \sigma^2 I). p0(x∣x1)=p(x),p1(x∣x1)=N(x∣x1,σ2I).
任意时刻的边际分布为高斯:
pt(x∣x1)=N(x∣μt(x1),σt(x1)2I). p_t(x|x_1) = \mathcal{N}(x \mid \mu_t(x_1), \sigma_t(x_1)^2 I). pt(x∣x1)=N(x∣μt(x1),σt(x1)2I).
选择条件流 :满足该边际分布的轨迹有无穷多种,选择仿射变换:
ψt(x0)=σt(x1)x0+μt(x1),x0∼p(x). \psi_t(x_0) = \sigma_t(x_1)x_0 + \mu_t(x_1), \quad x_0 \sim p(x). ψt(x0)=σt(x1)x0+μt(x1),x0∼p(x).
对应的条件向量场为:
ut(x∣x1)=σt′(x1)σt(x1)(x−μt(x1))+μt′(x1). u_t(x|x_1) = \frac{\sigma'_t(x_1)}{\sigma_t(x_1)}(x - \mu_t(x_1)) + \mu'_t(x_1). ut(x∣x1)=σt(x1)σt′(x1)(x−μt(x1))+μt′(x1).
2.2.1 条件概率路径的选择技巧
在实践中,条件概率路径的选择对模型性能有很大影响。常见的选择包括:
- 线性插值:简单但可能不够灵活
- 高斯混合:更灵活但计算复杂度高
- 可学习路径:通过神经网络学习最优路径
2.3 边际向量场的构造
目标边际分布为条件分布的混合:
pt(x)=∫pt(x∣x1)q(x1)dx1. p_t(x) = \int p_t(x|x_1) q(x_1) dx_1. pt(x)=∫pt(x∣x1)q(x1)dx1.
当 t=0,1t=0,1t=0,1 时:
p0(x)=p(x),p1(x)=∫N(x∣x1,σ2)q(x1)dx1≈q(x). p_0(x) = p(x), \quad p_1(x) = \int \mathcal{N}(x|x_1, \sigma^2) q(x_1) dx_1 \approx q(x) . p0(x)=p(x),p1(x)=∫N(x∣x1,σ2)q(x1)dx1≈q(x).
边际向量场 通过条件期望定义:
ut(x)=∫ut(x∣x1)pt(x∣x1)q(x1)pt(x)dx1=Ept(x1∣x)[ut(x∣x1)]. u_t(x) = \int u_t(x|x_1) \frac{p_t(x|x_1)q(x_1)}{p_t(x)} dx_1 = \mathbb{E}_{p_t(x_1|x)}[u_t(x|x_1)]. ut(x)=∫ut(x∣x1)pt(x)pt(x∣x1)q(x1)dx1=Ept(x1∣x)[ut(x∣x1)].
该向量场可生成边际分布 pt(x)p_t(x)pt(x),但直接计算需要积分。
2.3.1 边际向量场的近似计算
直接计算边际向量场通常不可行,因为涉及高维积分。实践中常用的近似方法包括:
- 蒙特卡洛采样:从条件分布中采样近似期望
- 变分推断:使用变分分布近似后验
- 神经网络近似:直接学习边际向量场
2.4 可计算的损失函数
可以证明 Flow Matching 损失 LFM\mathcal{L}{\text{FM}}LFM 与 Conditional Flow Matching 损失 LCFM\mathcal{L}{\text{CFM}}LCFM 的梯度一致:
LFM(θ)=Et,pt(x)∥vθ(t,x)−ut(x)∥2,LCFM(θ)=Et,q(x1),pt(x∣x1)∥vθ(t,x)−ut(x∣x1)∥2. \begin{aligned} \mathcal{L}{\text{FM}}(\theta) &= \mathbb{E} |v_\theta(t,x) - u_t(x)|^2, \\ \mathcal{L}{\text{CFM}}(\theta) &= \mathbb{E} |v_\theta(t,x) - u_t(x|x_1)|^2. \end{aligned} LFM(θ)LCFM(θ)=Et,pt(x)∥vθ(t,x)−ut(x)∥2,=Et,q(x1),pt(x∣x1)∥vθ(t,x)−ut(x∣x1)∥2.
由于 ut(x∣x1)u_t(x|x_1)ut(x∣x1) 有解析表达式,LCFM\mathcal{L}_{\text{CFM}}LCFM 可直接计算。
2.4.1 损失函数的选择策略
在实践中,选择哪种损失函数需要考虑:
- 计算效率:LCFM通常更易计算
- 理论保证:LFM有更好的理论性质
- 实现复杂度:LCFM实现更简单
通常推荐使用LCFM,除非有特殊需求。
2.5 特例
取 σt(x1)=1−(1−σmin)t\sigma_t(x_1) = 1 - (1-\sigma_{\min})tσt(x1)=1−(1−σmin)t,μt(x1)=tx1\mu_t(x_1) = tx_1μt(x1)=tx1,则:
x=(1−(1−σmin)t)x0+tx1,ut(x∣x1)=x1−(1−σmin)x0. x = (1-(1-\sigma_{\min})t)x_0 + tx_1, \quad u_t(x|x_1) = x_1 - (1-\sigma_{\min})x_0. x=(1−(1−σmin)t)x0+tx1,ut(x∣x1)=x1−(1−σmin)x0.
当 σmin→0\sigma_{\min} \to 0σmin→0 时:
ut(x∣x1)→x1−x0,LCFM(θ)=Et,x0,x1∥vθ(t,tx1+(1−t)x0)−(x1−x0)∥2. u_t(x|x_1) \to x_1 - x_0, \quad \mathcal{L}{\text{CFM}}(\theta) = \mathbb{E} |v_\theta(t, tx_1+(1-t)x_0) - (x_1-x_0)|^2. ut(x∣x1)→x1−x0,LCFM(θ)=Et,x0,x1∥vθ(t,tx1+(1−t)x0)−(x1−x0)∥2.
这与 Rectified Flow 的训练目标完全一致。
2.5.1 特例的实践意义
这个特例表明,在某些参数设置下,Flow Matching和Rectified Flow实际上是等价的。这为两种方法提供了统一的视角,也解释了为什么它们在实践中表现相似。
3. 实践比较与选择建议
3.1 Rectified Flow vs Flow Matching
虽然两种方法最终可以统一,但在实践中还是有一些区别:
-
初始化:
- Rectified Flow通常从线性插值开始
- Flow Matching可以从更复杂的条件路径开始
-
灵活性:
- Rectified Flow更注重路径的直线性
- Flow Matching更注重条件路径的选择
-
实现难度:
- Rectified Flow实现相对简单
