论文讲稿——mean-flow
本文最后更新于 2026年7月8日 20:35:51
一、概述
论文提出了单步生成模型的一种严谨有效的新方法,即mean flow。它的核心思想是使用平均速度(average velocity)来刻画流场(flow fields),而非flow matching 方法中的瞬时速度(instantaneous velocity)。Mean flow独立性强,自成一体,无需预训练、蒸馏或课程学习。
二、背景知识
1、Diffusion & Flow Matching:
diffusion模型设计前向加噪和反向去噪两个过程。其中,前向过程会逐步向图片中加入噪声,反向过程则训练一个神经网络从噪声中逐步恢复数据。
flow matching在diffusion理论的基础上更进一步,直接让神经网络建模速度场,从而得到连续的时间演化路径( continuous-time Normalizing Flows)。这种方法不需要估计对数概率密度的梯度(即 score function),从而降低了计算难度;也不需要多次去噪,生图效率更高。**
2、现有的少步生成模型:
Diffusion和Flow Matching模型在生成图片时都需要逐步采样,而出于实际应用和理论研究的角度,减少采样步数是很重要的发展方向。早期的方法主要是蒸馏学习,将预训练好的多步扩散模型蒸馏成few-step模型。与此同时,一致性模型(Consistency Model)通过引入一致性约束,迫使模型在相同采样路径上的不同时间步都能输出清晰的图像。随着研究不断深入,建立在两个时间变量上的方法,如Flow Map, Shortcut Models和Inductive Moment Matching也被发明出来。
三、核心思想
1、Mean Flow
①平均速度
\[ u(z_t, r, t) \triangleq \frac{1}{t-r} \int_r^t v(z_{\tau}, \tau) d\tau \]
其定义是两个时间步之间的位移除以经过的时间,用\(u\)来指代,受到\(z_t\),\(r\),\(t\)(位置,初始时间,结束时间)三个量控制。当初始和结束的时间节点不同时,\(u\)也不同。
这种定义方式使得\(u\)天然具有边界条件(\(\lim_{r \to t} u = v\))和一致性(积分的可加性)。
模型的训练目标便是使用神经网络来模拟平均速度。Mean Flow有一个显著的优点。相较于瞬时速度\(v\)只取决于单个时间点,需要多步才能生成图像,平均速度\(u\)受到初始时间点和结束时间点两个量控制,设置好这两个时间节点便可以直接得到这一段时间的推理结果。那么将初始设为0,结束设为1,就可以实现一步生图的目的。
然而,定义式中需要在高维空间中积分进行积分计算,难度很大,复杂度也高,不利于模型训练。不过,单个时间点的瞬时速度\(v\)倒是容易得到的。因此接下来需要进一步调整公式,降低训练难度。
②Mean Flow恒等式
将定义式左右两边同时乘以\((t-r)\),再运用链式求导法对\(t\)求导,整理后便可得Mean Flow恒等式:
\[ \underbrace{u(z_t, r, t)}_{\text{average vel.}} = \underbrace{v(z_t, t)}_{\text{instant. vel.}} - \underbrace{(t-r) \frac{d}{dt}u(z_t, r, t)}_{\text{time derivative}} \]
这样一来,训练时就不再需要计算复杂的积分。然而,等式右侧仍然带有\(u\)对\(t\)的导数,需要进一步处理。
\[ \frac{d}{dt}u(z_t, r, t) = v(z_t, t)\partial_z u + \partial_t u, \]
用全微分公式,即可得到上式。这个式子说明\(u\)关于\(t\)的导数是一个JVP(雅各比矩阵与方向向量的乘积)。在pytorch中,这个乘积可以很高效地计算出来。
③训练
\[ \mathcal{L}(\theta) = \mathbb{E}\left\|u_{\theta}(z_t, r, t) - \text{sg}(u_{\text{tgt}})\right\|_2^2 \\ \text{where} \quad u_{\text{tgt}} = v(z_t, t) - (t-r)\left(v(z_t, t)\partial_z u_{\theta} + \partial_t u_{\theta}\right), \]
到目前为止的恒等变换都不涉及神经网络。而在这一步,我们设定loss function来计算网络的预测值与真实值之间的差距。图中\(u_{tgt}\)并非真正的ground truth(真正的ground truth需要通过积分,难以算出),而是使用神经网络计算出的\(\partial_z u_{\theta}\)和\(\partial_t u_{\theta}\)来近似得到。那么到这一步,平均速度的训练已经摆脱了积分操作,并且仅使用瞬时速度\(v\)来进行矫正。
在这里,\(u_{tgt}\)前面加上了\(sg()\),这个操作是stop-gradient操作的简写。因为更新loss的时候会根据链式求导法则,每一个涉及到神经网络的参数都会被考虑进去。而\(u_{\theta}\)本身已经包含了\(u\)对\(t\)的导数。如果我们根据\(u_{tgt}\)的表达式更新\(u\)对\(t\)的导数,也就是更新了两边神经网络的参数。然而,这里的\(u_{tgt}\)被视作训练目标。如果计算两次\(\frac{du}{dt}\)的参数更新,很有可能导致训练不稳定。因此当我们计算loss的时候,将\(u_{tgt}\)整体视作常数。这不代表不更新\(u_{tgt}\)的值,因为当我们根据loss更新\(u\)对\(t\)的导数时会同步更新\(u_{tgt}\),只是这种更新只进行一遍。
而通过\(sg\)操作,也避免了计算jvp时涉及到高阶导数,从而减少了计算量。
使用conditional velocity替换上面\(u_{tgt}\)表达式中的marginal velocity,可以得到:
\[ u_{\text{tgt}} = v_t - (t - r) \left( v_t \partial_z u_\theta + \partial_t u_\theta \right). \]
这种替换被证明是一种有效的优化方式,同时,使用条件速度不用额外进行一次困难的求期望操作,从而简化了计算。
伪代码:
④采样
只需要设定两个时间点,便可以得到推理结果。伪代码:
除了单步生成之外,多步生成也是可行的。
⑤与前人工作的关系
过往的做法往往需要人为额外设计不同step之间的约束,而Mean Flow最大的特点就是利用瞬时速度和平均速度之间的关系(MeanFlow Identity),使得瞬时速度天然被自身性质限制住了。相对地,Consistency Model从data side出发,起始时间\(r\)只能取0,而Mean Flow的起始时间可以自由指定。shortcut模型和imm模型都支持设置两个时间点,但是引入了额外的双重限制。这些模型在性能上都不如Mean Flow。
2、带有CFG的Mean Flow
Mean Flow天然支持CFG(classifier-free guidance)这一方法。它通过在推理时,结合有条件和无条件(无类别或无文本提示)的输出,来增强生成结果对条件的依赖性。但是在传统的guidance推理中,一次生成需要推理两遍,导致NFE次数翻倍。而在Mean Flow中,将CFG作为ground truth的一部分,使得模型天然具有CFG的属性,从而实现1-NFE(单次网络函数评估)。
①ground-truth field
\[ v^{\text{cfg}}(z_t, t \mid c) \triangleq \omega v(z_t, t \mid c) + (1 - \omega) v(z_t, t) \]
要做到1-NFE,首先要做的就是调整学习目标。我们仍然从marginal velocity开始推理,应用CFG的线性插值理念得到上式。这里带有\(c\)的就是带有条件的样本,被定义为在给定位置\(z_t\)和条件\(c\)的情况下\(v_t\)的期望。不带条件的样本则被定义为了所有条件\(c\)下条件速度场的期望。
贯彻meanflow的理念,定义\(u_{cfg}\):
\[ u^{\text{cfg}}(z_t, r, t \mid c) = v^{\text{cfg}}(z_t, t \mid c) - (t-r)\frac{d}{dt}u^{\text{cfg}}(z_t, r, t \mid c) \]
并可以从MeanFlow Identity推导出(同时给定条件\(c\)):
\[ v^{\text{cfg}}(z_t, t \mid c) = \omega v(z_t, t \mid c) + (1-\omega)u^{\text{cfg}}(z_t, t, t) \]
再利用变换:
\[ v^{\text{cfg}}(z_t, t) \triangleq \mathbb{E}_{\mathbf{c}}[v^{\text{cfg}}(z_t, t \mid \mathbf{c})] = \omega \mathbb{E}_{\mathbf{c}}[v(z_t, t \mid \mathbf{c})] + (1-\omega)v(z_t, t) = v(z_t, t). \]
可以得到:
\[ v^{\text{cfg}}(z_t, t \mid \mathbf{c}) = \omega v(z_t, t \mid \mathbf{c}) + (1-\omega) u^{\text{cfg}}(z_t, t, t) \]
在这一步,我们得到了CFG情况下\(u_{cfg}\)和\(v_{cfg}\)的直接关系。
②training with guidance
\[ \begin{align*}\mathcal{L}(\theta) &= \mathbb{E}\big\|u^{\text{cfg}}_{\theta}(z_t, r, t \mid c) - \text{sg}(u_{\text{tgt}})\big\|_2^2, \\\text{where} \quad u_{\text{tgt}} &= \tilde{v}_t - (t-r)(\tilde{v}_t\partial_z u^{\text{cfg}}_{\theta} + \partial_t u^{\text{cfg}}_{\theta}).\end{align*} \]
同无CFG时的情况一样,我们需要构造对应的loss
\[ \tilde{v}_t \triangleq \omega v_t + (1 - \omega) u^{\text{cfg}}_{\theta}(z_t, t, t) \]
不同之处在于这里的\(v_t\)是线性插值得到的。取\(\omega\)=1时,这个式子退化为无guidance时的式子。
作者补充说明:为了适应无条件输入,在训练时有10%的概率丢掉\(c\)。同样地,对于学习目标中的\(u_{cfg}\)也应该考虑到\(c\)的影响。因此在Appendix B.1中作者引入了额外的系数\(\kappa\)用于控制带有条件的cfg。利用\(u_{cfg}\)和\(v_{cfg}\)的转换(相等关系),将\(u_{cfg}\)提到左边,可以解出新的\(\omega\)系数,用于修正loss。实验表明引入\(\kappa\)使得模型表现提升。
zz
由于这里的\(u_{cfg}\) 由\(v_{cfg}\)得到,而\(v_{cfg}\)在定义中天然具有线性插值,因此模型可以单步生成图像。
④loss function选择:自适应损失权重
在普通的平方均值误差的基准上,先引入了超参数\(\gamma\),用于调控模型对异常值的敏感程度,再引入了自适应加权\(\lambda\),其随着自回归误差增大而增大,从而帮助模型更好地学习误差较大的样本,并缓解模型过度拟合到误差较小的样本上。这里的\(\omega\)用于控制一个样本对loss的影响,让误差较大的样本造成的loss更小,使得loss更加平滑,进而网络更新更加稳定。
⑤时间点的采样方式
作者采取了两种时间点采样方法:Ⅰ均匀分布(平均,简单)Ⅱ对数正态分布(先从正态分布(通过控制正态分布来得到偏好(某个区间内的值更容易被采样)中采样,再用sigmoid映射到0,1之间),接着将大值赋给\(t\),小值给\(r\)。同时,作者也设置了一系列\(r=t\)的情况,为了测试模型在极限情况下的表现。
⑥调整时间变量\(r,t\)的引入方式
尽管直接使用\((r,t)\)作为条件信息十分直接,但这并不是必要的。作者尝试了不同的引入方式,得到了不同的结果。
四、具体实验
①样本中\(r\neq t\)的比率
作者进行了一系列消融实验,证明了
论文继承了Flow Matching的思路,可以被视作训练目标不同的Flow Matching,也就是以一段时间的表现为训练目的。区别二者的核心就是\(r\)是否等于\(t\)。实验表明,样本中只要\(r\)不等于\(t\)的占比大于0,都得到了有意义的实验结果,证明了Mean Flow的有效性。
②计算JVP
这是计算\(u\)的核心步骤,一旦错误就得不到合理的实验结果,证明了jvp的重要性。
③位置编码
实验证明了后者的表现更好,但是前者的表现也不差。
④时间步的采样方式
从前人工作可以看出,时间的采样方法会对结果有影响,编者猜测这是因为在整个生图的过程中,不同的阶段对最终结果的贡献是不同的。而相较于uniform采样,lognorm采样更加能够凸显某一特定时间段的影响。实验证明lognorm表现更好。
⑤loss metrics
实验表明\(p=1\)的时候表现最好。可以看到附录的B2部分,这里的\(p\)是自适应参数,数值越大说明误差值越大的样本对loss的影响越小。从数据中可以看出,误差值大的样本的影响确实应该被控制在一个合理的比率内。
⑥CFG幅度
这里的\(\omega\)指的是控制conditional样本的系数,其值越大,conditional样本的影响越大。可以看出,在训练中使用guidance相比不使用有显著的提升。
⑦可扩展性
实验证明,随着模型底层架构的参数增多,Mena Flow的表现也在不断变好,展现好的扩展性。
3、与前人工作的比较
在实验中,Mean Flow模型最好达到了3.43的FID,在1-NFE(也就是只调用一遍神经网络)的情况下相比sota模型提升了70%,而与使用多步推理的diffusion和flow模型之间的差距也在逐渐变小。可以看出,单步生成在保证了生成速度的同时也可以具有很高的生成质量,并且可以不需要任何预训练、蒸馏或者是课程学习。在cifar-10上,Mean Flow仍然得到了理想的结果。
五、总结:
Mean Flow的思路来自于物理中的多尺度模拟问题,受到算力的影响,只能在粗粒度级别上对于物理状态进行模拟。mean flow则为这种级别下的问题找到了描述底层量的方法,从而使得计算机可以不用像普通的diffusion模型那样一步步十分笨重地推演过程,而是从宏观上找到了一定的规律,使得推理速度和质量都得到了有效提升。