微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 LiFT:让扩散模型学会"原地多想几步"再出手

LiFT:让扩散模型学会"原地多想几步"再出手

2026-11-03 08:07
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-11-03 08:07 • 科技行者

你有没有想过这样一个问题:一个人解题的时候,是靠脑子里塞更多知识更有用,还是靠多想几遍更有用?

这正是生成式AI领域最近在纠结的事。过去几年,图像生成模型的进步几乎全靠一个简单粗暴的办法,堆参数。模型越大,效果越好,这几乎成了行业的默认公理。但堆参数是有极限的,参数越多,存储和部署的成本就越高,尤其是在边缘设备上,内存经常是比算力更紧张的资源。

这篇来自阿姆斯特丹大学和TNO的论文,提出了一个听起来有点反直觉的方案,叫LiFT(Loop Flow Transformers,循环流变换器)。它的核心思路是,不增加参数,而是让模型在生成每一张图的每一步里,把同一组神经网络层反复用上好几遍,像是让一个人在原地多想几圈,而不是雇佣更多的人。

这篇论文最打动我的地方,不是它提出了循环这个概念,循环神经网络早就有了,而是它解决了一个一直没被妥善处理的老问题,循环模型一旦跑的步数超过训练时设定的步数,效果反而会崩。

核心问题:循环模型为什么"学不会多想"

先说清楚背景。图像生成模型里有一种主流技术叫

扩散变换器*:一种结合了扩散模型(通过逐步去噪生成图像)和Transformer架构(擅长捕捉长距离依赖)的生成模型,简称DiT,是目前图像和视频生成的主流骨架。

这类模型生成一张图,靠的是从一堆随机噪声出发,沿着一条学到的"速度场"一步步走,最终走到真实图像的分布上。这个过程有个关键机制叫

流匹配*:一种训练生成模型的方法,让模型学会预测从噪声到真实数据之间的直线路径上每一点的速度方向,不需要模拟复杂的微分方程求解过程。

要生成一张高质量图像,一般需要走很多步,这个步数在论文里叫积分步数,通常是10步到250步不等。步数越多,理论上误差越小,但有个天花板,每一步能走多准,完全取决于网络在那一步预测的速度到底准不准。如果网络本身的预测能力有上限,那无论你走多少步,质量都会在某个点附近饱和,再怎么加步数也没用。

这就引出了第二条路,循环。既然每一步的预测精度是瓶颈,那能不能在每一步内部,让网络多算几遍,把这一步的预测磨得更准?这个思路听起来很合理,业内把这种"重复用同一组参数"的架构叫

循环变换器*:不同于传统每层参数都不一样的变换器,循环变换器反复套用同一组共享的网络层,用计算深度换取参数数量的节省。

这就像请一位厨师反复试味,而不是雇十个厨师各做一遍再投票。如果厨师本身手艺够好,反复尝试调味往往比简单堆人更划算,因为每次尝试都能基于上一次的结果去修正,而不是互相独立地瞎猜。

但现实中,循环模型一直有个麻烦事。论文里提到,之前的研究发现,如果不对训练方式做特殊设计,一个循环扩散模型只有在恰好用训练时的循环次数做推理时,才能生成连贯的图像。一旦你想让它多转几圈试图进一步提升质量,它反而会出错,在ImageNet数据集上,FID指标(一种衡量生成图像质量的标准,数值越低说明生成图像越接近真实图像分布)在推理深度超过训练深度后立刻变差,在视频生成任务里,质量峰值出现在训练深度的1.5倍处,过了这个点就开始走下坡路。

为什么会这样?论文给出的解释很关键,之前的方法在训练时,不管模型转了几圈,都要求每一圈的输出都尽量逼近最终的完整答案。这就好比要求学生每做一道题的每一步演算都必须直接写出最终答案,而不是允许他们一步步推导。这样训练出来的模型,每一圈学到的东西是高度重复的,没有分工,所以一旦推理时转的圈数和训练时不一样,模型就会"懵",因为它从没学过"转到一半该是什么样子"。

还有一个更现实的打击。有研究者尝试用另一种训练方法(MeanFlow)训练了一个循环的小模型,结果发现在相同计算量下,循环模型相比直接用更大的密集模型,根本没有优势,多出来的计算量用来增加积分步数反而更划算。换句话说,循环这条路当时看起来像个死胡同,理论上美好,实践上打不过简单粗暴的堆参数和堆步数。

LiFT的解法:给每一圈一个自己的作业

LiFT的关键创新,是重新设计了训练目标,让循环的每一圈都有自己独立的、递进式的任务,而不是全都盯着同一个终点使劲。

具体怎么做的?论文引入了一个连续的

计算深度坐标*:用s表示,取值范围在0到1之间,描述的是网络在一次完整预测中"算到哪一步了",和生成时间t是两个完全独立的维度。

模型先算出一个初始的粗略预测,记作b,这个预测是在循环真正开始转之前,只经过一次前置处理得到的,相当于"第一印象"。然后,从这个初始预测b出发,到最终要拟合的流匹配目标之间,画一条直线,这条直线上的每一个点,都对应一个深度坐标s。s等于0的时候就是初始预测b本身,s等于1的时候就是最终的完整目标。

训练的时候,模型会转K圈(K是训练时设定的循环次数),每一圈都会被要求去匹配这条直线上一个特定的点,而不是直接匹配终点。打个比方,如果训练设定转4圈,那第一圈大概要完成25%的修正量,第二圈完成50%,第三圈75%,最后一圈才是100%,也就是真正的流匹配目标。

这里有个巧妙的设计,训练时这些中间坐标不是固定死的25%、50%、75%,而是每次训练都随机采样出来,排序后再用。这样模型见过的"转几圈该到哪一步"的组合千变万化,而不是只认得一种固定的节奏。

这个机制让我想起学骑自行车的过程。如果教练每次都只告诉你"到达终点"这一个目标,你永远不知道骑到一半的时候车身该倾斜多少角度才算正常。但如果教练把整个骑行过程拆成几个阶段,告诉你"骑到一半时应该是这个姿态,骑到四分之三时应该是那个姿态",你反而能更灵活地应对,哪怕后来教练让你多骑几圈,你也知道每一段大概该是什么状态,因为你学的是一种渐进式的修正节奏,不是死记硬背一个终点动作。

如果不这样拆分会怎样?论文里给出的对照很清楚,早期的循环扩散模型因为每一圈都被要求直接命中终点,导致训练出来的网络缺乏这种"渐进节奏感",一旦推理时转的圈数和训练时不同,网络就完全不知道自己此刻该处于修正过程的哪个阶段,质量自然崩溃。

值得一提的是,这条参照直线用的是最简单的

欧几里得最小作用量路径*:数学上可以证明,在给定起点和终点、且速度恒定的前提下,一条直线是让路径上每一步"用力"总和最小的唯一选择,这也是论文选择直线而非曲线作为训练目标的理论依据。

论文还从另一个角度验证了这个设计的合理性,如果把这条直线路径看作是在概率分布空间里做的一次"高斯分布搬运",那搬运过程中保持方差不变、只移动均值的最优路径,恰好也是这条直线。换句话说,这不是拍脑袋选的捷径,而是在几种不同数学框架下都能推导出的同一个答案。

架构细节:前置层、循环核心和共享读出头

LiFT把整个网络拆成三块,这个拆法借鉴了之前的

前置层-核心-输出层分解*:Prelude-Core-Coda,把网络分成只算一次的前置部分、反复共享参数的核心部分,以及负责输出预测的部分。

前置层负责把输入的图像信息转换成网络内部能处理的表示,这部分只在每一步积分里算一次。核心部分是被反复套用的共享模块,每转一圈都用同一组参数,但会被告知当前转到了第几圈,用来调整自己的行为。输出层负责把核心部分算出来的内部状态,转换成最终要输出的速度预测,这部分参数在所有圈里也是共享的。

核心部分每次接收到的"当前转到第几圈"的信息,具体是通过把深度坐标s嵌入进网络的条件机制里实现的,技术上用到了

自适应归一化*:一种让神经网络根据外部条件(比如时间步、类别标签)动态调整内部数值分布的技术,常见于扩散模型架构中。

这个三段式架构有个实用的好处,核心部分转多少圈是可以在推理阶段自由调整的,完全不需要重新训练。想多转几圈就多转几圈,想少转几圈也行,只要保证最后一圈对应的深度坐标是1,也就是对应完整的流匹配目标。

实验结果:小模型真的打赢了大模型

论文在ImageNet 256×256这个标准测试集上做了系统的对比实验,核心对比对象是没有循环结构的

密集扩散变换器*:Dense DiT,指的是传统架构的扩散变换器,每一层都有独立参数,不存在共享和循环。

最亮眼的结果出现在L和XL两个规模级别上。拿XL规模的例子来说,一个只训练了2圈的LiFT模型,训练完之后FID是17.07。但如果在推理的时候让它转16圈,也就是训练时圈数的8倍,FID直接降到9.31。这个降幅相当可观,FID数值越低说明生成质量越好,从17.07降到9.31几乎是质的变化。

更关键的是和密集模型的直接对比。论文里提到,LiFT-L/2在参数量少了大约60%、推理时的计算量少了52%、训练时的计算量少了32%的情况下,FID反而比密集的DiT-XL/2基准模型低了3.34。这意味着一个更小、更省算力的模型,靠着"多想几遍"这个策略,实打实地超过了那个参数量接近它两倍多的大模型。

不过论文也很诚实地指出了这个方法的边界。在最小的B规模上,密集模型始终占优,循环再多圈都追不上。论文给出的解释是容量不够,B规模的共享核心本身太小,再怎么反复转圈也没法弥补模型容量的先天不足。这就像让一个记忆力有限的学生反复复习同一份不完整的笔记,复习再多次,知识漏洞还是补不上,因为问题不在于复习次数,而在于笔记本身的信息量不够。

这也印证了论文里提到的另一项研究结论,循环模型里一次共享的计算,大约只值半个独立参数层的效果。所以循环不是免费的午餐,它在模型容量够用的前提下才能发挥威力,容量不够时单纯堆循环次数是没用的。

除了循环深度,生成时还有另一个可以调节的维度,就是前面提到的积分步数T。论文专门做了一组实验,系统地探索循环深度和积分步数该怎么搭配才最省算力。结果发现,这两者并不是简单的"越多越好"关系,在某些配置下,增加循环深度比增加积分步数更划算,但换一个起点,情况又会反过来。比如在25步积分、4圈循环的组合下,FID达到13.16,计算量反而比2圈循环、50步积分的默认训练配置还低,同时也比密集模型用50步积分跑出来的16.94要好。但如果盲目把循环深度加到16圈、积分步数降到10步,反而比刚才那个更优配置更贵更差。

这就像做饭时在火候和翻炒次数之间找平衡,火开得太大翻炒次数太少会糊,火开得太小翻炒次数太多也浪费燃气,真正省时又好吃的做法,往往是在中间找一个具体的搭配点,而不是一味加大某一个变量。

论文的研究者们还做了细致的机制分析,验证模型内部的预测轨迹是不是真的按照设计的那条直线在走。他们发现,即便推理时转的圈数是训练时的16倍,中间每一步预测相对于起点和终点连线的投影比例,依然和设定的深度坐标高度吻合,偏差基本在1%以内。这说明模型确实学会了一种可以泛化到更长推理过程的渐进式修正节奏,而不是单纯记住了训练时那几个固定的中间点。

从技术脉络看,这篇工作和几条研究线索有呼应关系。比如更早的

通用变换器*:Universal Transformer,最早提出用共享层反复处理输入来增加有效深度,而不增加参数数量的架构思路。

验证了循环计算在算法推理任务上能够超越训练时的固定深度泛化。再往后,有研究者专门针对循环语言模型做了规模法则分析,发现了"一次循环大约值半个独立层"这个关键结论,LiFT的实验结果和这个发现是吻合的。还有一类叫LoopDiT的工作,架构上和LiFT很接近,都用了前置层加共享核心加输出层的结构,但LoopDiT训练的是最终输出,而LiFT监督的是流匹配速度预测器的中间读出值,这是两者最核心的区别。

写在后面

读完这篇论文,最让我意外的一点,不是循环节省了多少参数,而是它揭示了一个关于"怎么教模型学会思考节奏"的思路。以前做深度学习,大家潜意识里会觉得,只要给模型正确答案当监督信号就够了,模型自己会找到达到答案的路径。但LiFT的实验恰好说明,监督信号的给法本身,会决定模型是否具备在训练范围之外继续工作的能力。只给终点答案,模型学到的是一种脆弱的、和特定计算深度绑定的技能;给出渐进的路径标记,模型学到的则是一种可以泛化的节奏感。

这让我想到人类教育里一个常被忽略的细节,很多学科的教学如果只强调最终答案对不对,学生确实能在考试范围内拿高分,但一旦题型稍微变化,就容易束手无策。而如果教学过程本身强调解题的中间步骤该是什么样子,学生反而能够应付更灵活的变化场景。LiFT某种程度上是把这个教育学的直觉,用严谨的数学方式在生成模型上实现了一次。

论文里有一个细节我反复看了几遍,它用三种完全不同的数学框架,欧几里得最小作用量、高斯概率搬运、以及费舍尔信息几何,都推导出了同一条直线路径是最优选择。三条路径汇聚到同一个答案,这种一致性本身是对这个设计选择最有力的背书,比单纯做实验调参调出来的结果更让人信服。

论文也坦然承认了自己还没解决的问题,比如这套方法目前只在不带引导采样的图像生成上验证过,视频生成、文本到图像这些更复杂的场景是否同样适用,还是未知数。另外,目前推理时该用多少循环深度,是人工预先设定的,论文也提到未来可以研究让模型自己判断"这道题需要想几遍",这听起来才是真正有意思的下一步。

Q&A

Q1:LiFT是什么,它和普通的扩散变换器有什么不同?

A:LiFT是一种循环生成模型,核心是反复套用同一组共享网络层来增加计算深度,而不增加参数数量。和传统每层参数独立的密集扩散变换器相比,LiFT用计算换参数,训练时给每一圈循环分配不同的修正目标,而不是让每一圈都直接逼近最终答案。

Q2:LiFT为什么能在推理时转比训练时更多的圈数还提升效果?

A:因为LiFT训练时用一条从初始预测到最终目标的直线路径,给每个循环深度分配渐进式的修正任务,模型学到的是一种可泛化的修正节奏,而不是只认得训练时的固定圈数。实验显示XL规模模型训练转2圈,推理转16圈后FID从17.07降到9.31。

Q3:LiFT是不是在所有模型规模上都比密集模型效果好?

A:不是。论文明确指出在最小的B规模上,密集模型始终更强,循环再多圈也追不上,原因是共享核心本身容量太小。LiFT的优势主要体现在L和XL这两个更大的规模级别上。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-