新浪财经 股票

让AI像反复咀嚼一样理解图片,用循环计算打破参数堆砌的迷思

市场资讯 10.26 21:14

(来源:科技行者)

2024年之前,如果你想让一个视觉语言模型更聪明,几乎只有一条路可走:堆参数。

把模型从1B做到4B,再做到70B,训练数据从几十亿token堆到几十万亿token,这几乎是整个行业心照不宣的游戏规则。InternVL3.5-4B用了36.38万亿token的训练数据,LLaVA-OV-72B更是把参数量做到了惊人的规模。大家默认的逻辑是:模型越大,见过的数据越多,理解图片和语言的能力就越强。

但LoopVL这篇论文讲了一个完全不同的故事。它只有1B参数规模的语言骨干,训练数据只用了0.14万亿token,比起那些动辄36万亿token的对手,差了整整255倍。可就是这样一个"轻量级选手",在LogicVista逻辑推理测试上拿到了45.19分,碾压了用36万亿token训练出来的Qwen3.5-2B(30.65分),也超过了参数量大它好几倍的InternVL3.5-4B(36.91分)。

这不是靠运气,也不是靠某个取巧的训练技巧。LoopVL的秘密在于一个听起来有点反常识的设计:同一组参数,反复用。

一件事做一遍和做四遍,差别有多大

要理解LoopVL在干什么,得先想清楚一个问题:一个32层的Transformer,和一个把16层参数反复执行8次(相当于128层计算量)的模型,谁更强?

直觉上你可能觉得,真正拥有32个独立参数层的模型应该更强,毕竟它有更多"不同的脑子"在协同工作,而循环模型本质上是同一个脑子想了四遍。但LoopVL的论文里做了一个很干脆的对比实验。

论文团队做了一个32层、隐藏维度1536的标准Transformer,参数规模和LoopVL的单层配置完全对齐,取名叫Transformer-VL 1B。两者用一模一样的0.14万亿token训练。结果呢?在MMStar通用理解测试上,LoopVL拿到63.47分,Transformer-VL 1B只有55.33分。RealWorldQA测试上更夸张,LoopVL是70.98分,对手只有55.29分。ChartQA图表理解测试,LoopVL 74.52分,对手51.12分,整整差了23个百分点。

这组数据说明了一件事:不是参数越多越好,而是计算深度越深越好。但更深的计算,不一定非得靠更多独立参数来实现,用同一套参数反复计算,也能达到同样的效果。

这里就要引出LoopVL架构里最核心的一个概念了。

循环Transformer*:不像传统Transformer那样把N个不同参数的层堆叠起来算一遍,而是让少数几层参数反复被调用多次,像是同一个齿轮转了好几圈,每一圈都在加工正在变化的输入。

这就好比你让一个工匠反复打磨同一块玉石,而不是找来32个水平参差不齐的工匠各打磨一刀。工匠的手艺(参数)没变,但他对玉石的理解在每一次打磨后都更深入,因为玉石本身(隐藏状态)已经被上一轮打磨改变了。如果不让工匠反复打磨,只打磨一次就扔给下一个新工匠接手,新工匠得重新摸索这块玉石的纹理,这就是为什么同样数量的"打磨次数",32个独立新手工匠的效果反而不如一个老师傅反复打磨四遍。

两层嵌套的循环:L模块和H模块

光说"反复计算"还不够精确。LoopVL的循环结构其实是两层嵌套的,这是整篇论文设计上最讲究的地方。

论文里把这套机制叫做Module-Loop和Model-Loop的组合。

Module-Loop(模块循环)*:指同一组16层Transformer(叫L模块)被连续调用好几次,比如连续调用3次。

Model-Loop(模型循环)*:指L模块和另一组16层Transformer(叫H模块)组成的"L→L→L→H"这个完整周期,被再次重复执行。

默认配置叫H2L3,意思是2次模型循环,每次模型循环里L模块跑3遍。完整的执行顺序写出来是这样的:L→L→L→H,然后再来一遍L→L→L→H。表面上模型只存储了两组16层的参数(L和H),但一次完整的前向计算实际上执行了128次Transformer层调用。

这个设计思路其实来自对人脑的观察。人的大脑处理信息时不是所有计算都在同一个时间尺度上完成的,而是有快速的局部反应和缓慢的全局判断在同时运作。比如你看一幅画,眼睛会先快速扫视细节(这是快速、局部的),然后大脑再形成"这是一幅风景画"的整体判断(这是缓慢、全局的)。L模块负责前者,在相对稳定的高层语境下反复打磨局部的视觉语言表示;H模块负责后者,把L模块积累的细节整合成新的全局状态,供下一轮循环使用。

这种设计如果反过来会怎样?论文里专门做了对照实验。H1L3和H2L1这两个配置,执行的Transformer层调用总数是完全一样的(都是64次),但H2L1在所有测试上都明显更好。比如MMStar,H1L3是58.13分,H2L1是60.80分。这说明光是"算得多"还不够,怎么把这些计算组织起来、先做局部精修还是先做全局更新,顺序本身就会带来实打实的性能差异。这就好比你写一篇文章,同样是改三遍,是"先通读全文定调子,再逐段精修"效果好,还是"逐段精修三次,最后才通读定调子"效果好,答案显然不是无关紧要的细节问题。

视觉token也要跟着循环一起进化

LoopVL还有一个容易被忽略但其实很关键的设计:进入模型的图片信息(视觉token)不是算一次就定型了,而是会随着循环不断被重新理解和调整。

这背后的逻辑是,一张图片里到底哪些区域重要,其实是依赖于问题的。你问"这个人穿什么颜色的衣服"和"背景里有几棵树",模型应该关注的区域完全不同。更麻烦的是,这种重要性判断可能需要"回头看",第一眼看过去觉得某个角落无关紧要,但结合问题反复琢磨后,才发现那个角落其实藏着答案。

论文做了一组很有说服力的对照实验来验证这件事的必要性。他们训练了一个"只读模式"的变体版本:允许视觉状态只在第一次模型循环里更新,第二次循环里视觉token保持只读、不再变化,其他部分正常更新。结果这个只读变体在LogicVista、RealWorldQA、VMCBench-DEV、MMStar四项测试上,全部比正常版本差一截。比如RealWorldQA,正常版本是70.98分左右,只读变体掉到了接近58分。

这组实验的意义在于,它排除了"模型表现好只是因为算得多"这种解释,如果视觉信息在第二轮循环里压根不更新,哪怕非视觉的部分照样在算,模型照样会变笨。这证明了视觉token的持续进化不是摆设,而是真正承载着信息的再加工过程。

打个比方,这就像你读一本侦探小说,第一遍读完有个大致印象,然后作者揭晓真相后,你回头重新翻一遍前面的章节。如果你第二遍翻书时眼睛只是机械地扫过文字但脑子里完全不更新对情节的理解(相当于"视觉状态冻结"),那回头翻这第二遍基本等于白翻。真正有意义的"回头看",是让你对之前忽略的伏笔产生新的认识,这正是LoopVL让视觉token在循环里持续更新想要达到的效果。

视觉顿悟时刻:模型真的会"豁然开朗"

这篇论文里我觉得最有意思的发现,是所谓的"视觉顿悟时刻"(Visual Aha Moment)。

研究团队用了两个指标来衡量模型在看图片时注意力的分布状态。

空间熵*:衡量视觉注意力分布得有多分散,数值越低说明注意力越集中在少数几个区域。

基尼系数*:衡量视觉token之间注意力权重的不平等程度,数值越高说明注意力越集中。

研究团队画出了这两个指标随着计算深度变化的曲线,发现了一个很清晰的断层:就在第一次模型循环(64层)结束、进入第二次模型循环的那个瞬间,基尼系数从0.405猛地跳到0.858,几乎是直接翻倍。这意味着模型的视觉注意力在跨越这个循环边界的时候,突然从比较分散的状态变成高度集中的状态。

更有意思的是,研究团队怀疑这会不会只是因为训练时用的"选择性反向传播"(只有部分循环层参与梯度更新)造成的假象。于是他们干脆重新训练了一个模型,让梯度传遍所有循环层,结果同样的顿悟现象还是出现了。他们又试着去掉视觉锚点和门控机制重新训练,现象依然存在。这说明这个顿悟时刻不是某个训练技巧的副产品,而是这种嵌套循环架构本身带来的一个相对稳定的特性。

研究团队还做了更细致的案例分析,挑了8个具体的视觉问答例子,比如"大正方形是什么颜色""盒子里是什么代码",对比同一个H模块层在第一轮和第二轮循环结束时,到底在看图片的哪些位置。他们发现有些在第一轮里排名靠后、几乎没被关注的图像区域,排名在后50%,到了第二轮结束时冲进了注意力最高的前25%。这种"排名跃迁"的现象在颜色识别、计数、代码读取、方向判断这些不同类型的任务里都观察到了。

这个发现挺让人意外的。因为按照常理,同一套参数、同一层网络,面对看起来差不多的输入,应该给出差不多的行为模式。但LoopVL告诉我们,当这组参数接收到的不是"相同的输入"而是"经过上一轮循环改造过的输入"时,它完全可以表现出截然不同的阅读行为。这就好比同一个老师傅,第一遍粗加工时随手扫视整块木料,没太在意某个角落的纹理;但经过第一轮打磨后,木料的轮廓开始显现,老师傅第二遍上手时,目光会突然聚焦到之前被忽略的那个角落,因为现在他才看出来那里藏着一道关键的裂纹。参数没变,变的是正在被加工的材料本身。

循环深度不是越多越好

读到这里你可能会想,既然循环计算这么好用,那是不是循环次数越多,模型就该越聪明?

论文用一组实验狠狠打破了这个想法。研究团队固定住已经训练好的H2L3模型,不改变任何参数,只是在推理阶段调整循环的调度方式,看看会发生什么。

结果相当戏剧性。如果减少L模块的调用次数,比如把每轮循环里L从3次砍到1次(变成H2L1),MMStar的分数会从63.47暴跌到29.40,几乎腰斩。而如果反过来,在训练配置之外强行增加模型循环次数,比如把H从2次加到3次甚至4次(变成H3L3、H4L3),执行的层数从128次涨到192次甚至256次,结果MMStar分数不升反降,H3L3掉到58.20,H4L3更是跌到24.00。

这个结果其实挺反直觉的,多算了那么多层,花了更多的计算资源,结果反而更差了。论文的解释是,这个模型在训练阶段已经学会了"在H2L3这套固定节奏下该怎么处理信息",硬是在推理时打乱这套节奏,相当于让一个已经习惯了特定工作流程的人突然被要求按完全不同的步骤重新操作,哪怕总的工作量差不多,效率和准确性都会打折扣。

更微妙的是,论文还发现"执行层数相同"不代表"行为相同"。H2L3和H4L1都是128层的计算量,但H2L3的MMStar是63.47分,H4L1只有24.67分,差了近40分。这再次证明,计算怎么被组织、哪里该精修、哪里该整合,比单纯的"算了多少次"重要得多。这就好比两个学生花了同样多的时间复习,一个人把时间集中花在吃透三道难题上再做总结,另一个人把总结和做题来回切换了四次,总时长一样,但学习效果可能天差地别。

从哪里训练出来的:三阶段的打磨过程

LoopVL的整个训练过程分成了三大块,每一块解决不同的问题。

第一块是语言预训练,用了750亿token,其中600亿来自HRM-Text这个开源框架发布的基础数据,另外150亿是团队自己精心挑选补充的,包括数学推理、符号逻辑、教科书习题等各种类型的文本。

第二块是多模态适配,又细分成两个阶段。第一阶段叫视觉语言对齐,用LLaVA-559K这个图文配对数据集,训练量只有3.3亿token,这个阶段冻结住语言骨干和视觉编码器,只训练一个负责把图像特征转换成语言空间向量的投影器。第二阶段叫多模态中期训练,用了490亿token的OneVision-1.5数据,这时候语言骨干和投影器开始联合训练,视觉编码器依然保持冻结。

第三块是后训练,先用168.1亿token做监督微调,融合了几个不同风格的数据源,然后用视觉强化学习做最后的打磨,采用GRPO(组相对策略优化)算法,让模型针对同一个问题生成一组候选答案,根据答案是否正确给出奖励信号,逐步调优。

这个三阶段的递进逻辑其实很好理解。第一阶段先让模型学会"看懂图里有什么并能说得出来",这是最基础的对齐;第二阶段让模型学会"根据不同指令给出不同类型的回答",覆盖通用问答、图表、数学等各种任务场景;第三阶段则是精细打磨,用强化学习进一步提升复杂推理能力。整个过程很像带学徒,先教认字认图,再教按要求写不同类型的文章,最后手把手纠正细节上的错误。

表格里的硬实力对比

论文里有一张核心对比表格,把LoopVL和十几个参数规模相近的视觉语言模型放在一起比较,涵盖通用理解、幻觉检测、数学、科学四大类共16个基准测试。

挑几个有代表性的数字看看。在MMK12这个中小学数学题测试上,LoopVL拿到49.65分,而用了36.38万亿token训练的InternVL3.5-2B只有48.10分,InternVL3.5-4B是56.10分(这个确实比LoopVL高,但别忘了InternVL3.5-4B的训练数据量是LoopVL的258倍)。在逻辑推理测试LogicVista上,LoopVL的45.19分远超所有同量级对手,第二名InternVL3.5-4B只有36.91分。

当然LoopVL也不是全面领先。在VMCBench这种综合视觉选择题测试上,LoopVL的70.90分不如InternVL3.5-4B的78.10分;在ChartQA图表理解上,LoopVL的74.52分也不如InternVL3.5-4B的86.00分。这说明循环架构带来的优势,在需要大量知识覆盖面的任务上(比如见过足够多的图表样式)还是会受限于训练数据规模,循环计算能提升的是推理深度,但没法凭空补足见识广度的差距。

这种有胜有负的结果其实比全面碾压更可信,它告诉我们循环计算解决的是"计算深度不足"这个问题,而不是万能药。

状态是怎么一步步逼近最终答案的

论文后半部分用了一系列很细致的探针实验,试图搞清楚模型内部到底发生了什么变化。

其中一个实验叫logit透镜分析,简单说就是在模型还没算完的中间阶段,提前用最终输出层的"翻译器"去解读当前的中间状态,看看它和最终答案的分布差多少。研究团队测量了KL散度(一种衡量两个概率分布差异程度的指标,数值越小说明两个分布越接近)在整个计算过程中的变化曲线。结果显示,在前面大部分计算阶段,这个散度值一直维持在比较高的水平(9到12奈特之间波动),直到最后一次H模块调用时,散度值才断崖式下跌到接近0。

这说明一件很有意思的事:模型并不是从一开始就在稳步逼近答案,而是在前面绝大部分计算里都还处于"探索和积累"状态,真正的"临门一脚"是在最后一个H模块完成的。这有点像你解一道复杂的数学题,前面大部分时间都在打草稿、尝试不同思路、排除错误方向,真正把答案写整齐、确定下来往往是最后几分钟的事。

另外论文还测量了视觉token本身的状态变化幅度,发现即使进入第二轮模型循环,视觉状态依然在发生实打实的更新,更新幅度和第一轮循环里相差不大。这排除了"第二轮循环只是简单复制第一轮结果"的可能性,如果真是简单复制,那视觉状态在第二轮应该几乎不变,但数据显示并非如此。

写在后面

读完这篇论文,最触动我的其实是一个很朴素的事实:我们习惯性地认为"模型更聪明"等于"模型更大",但LoopVL用实打实的数字证明了,计算的组织方式本身就是一种可以被挖掘的资源,而且这个资源目前被严重低估了。

更让我意外的是那个视觉顿悟时刻的发现。研究团队做了三组独立的验证实验(不同反向传播路径、去掉视觉锚点机制)都复现了同一个现象:模型在跨越循环边界的那一刻,视觉注意力会突然重新洗牌。这不是训练出来的某种表演性行为,而更像是这种嵌套循环结构自带的一种"思维习惯"。这让我忍不住想,人类思考复杂问题时是不是也有类似的结构,先快速扫一遍细节形成初步印象,然后在某个瞬间突然"回过头"用新的视角重新审视之前忽略的信息。

论文里也诚实地留了很多没解决的问题。他们自己承认,目前还没有训练一个更通用的Model-Loop架构作为对照组,所以没法百分百确定这个视觉顿悟现象是不是只属于HRM-Text这套特定的层级循环框架,还是说换一种循环架构也会出现类似的现象。这个问题其实挺关键的,如果换个架构这个现象就消失了,那说明它依赖于某些特定的工程细节;如果换个架构依然存在,那可能意味着我们摸到了某种更普遍的计算规律。

一个1B参数的模型,靠着让同一组参数反复思考四遍,打败了参数量和训练数据量都是它几百倍的对手。这件事本身就值得琢磨:我们到底还有多少计算潜力,被简单粗暴的"堆参数"思路埋没了?

Q&A

Q1:LoopVL是什么?

A:LoopVL是一个视觉语言模型,核心创新是用循环Transformer架构反复调用同一组共享参数来处理图像和文本信息,而不是像传统模型那样堆叠大量独立参数层,用1B参数规模就能在多个基准测试上超越参数量和训练数据量大几百倍的对手。

Q2:LoopVL的视觉顿悟时刻是什么意思?

A:这是指模型在从第一次模型循环进入第二次模型循环的瞬间,视觉注意力分布会突然发生剧烈变化,基尼系数从0.405跳到0.858,说明模型对图片关注的区域发生了重新洗牌,这个现象在多组独立验证实验中都被复现。

Q3:LoopVL为什么能用更少参数和训练数据做到更好效果?

A:因为它用Module-Loop和Model-Loop两层嵌套循环反复调用L和H两组16层Transformer参数,把计算深度从32层提升到128层而不增加存储参数量,同时让视觉token在循环过程中持续更新重新组织,而不是只算一遍就固定不变。

加载中...