微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

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

首页 循环Transformer的隐藏财富:如何让模型自己纠正自己,还几乎不花钱

循环Transformer的隐藏财富:如何让模型自己纠正自己,还几乎不花钱

2026-10-29 08:20
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-10-29 08:20 • 科技行者

你有没有想过这样一个问题:一个模型如果要反复想同一件事,想了四遍才给出答案,那前三遍的"初步想法"去哪了?

直觉上你会说,那些想法肯定被扔掉了,模型只认最后一次的结果。确实,传统做法就是这样。但这篇论文翻出了一个几乎所有人都没在意的事实:那些被扔掉的中间想法,其实是免费的宝藏。

这事得从一种叫**循环Transformer**的架构说起。

循环Transformer*:一种不靠堆叠更多参数层来变强,而是把同一组参数反复用上好几遍的神经网络架构,每多用一遍就相当于多了一层思考深度,但模型大小完全不变。

想象你请了一个工匠,但不是雇十个不同的工匠依次加工一件家具,而是让同一个工匠反复打磨这件家具十遍。省钱是省钱了,工匠的技能没有变多,但家具的精细程度会随着打磨次数增加而提升。循环Transformer就是这个思路:同一套"大脑"参数,反复过一遍、再过一遍,每过一遍,模型对当前这句话、这个问题的理解就更深一层。

这类模型最近挺火,像Ouro、Huginn、Parcae这些架构都是这个路数。它们的卖点很简单:效果能逼近更大的模型,但存储和参数量却小得多。

但这篇论文的作者们盯上了一个被所有人忽略的细节。

**模型每循环一轮,其实都会产生一个可以直接拿去预测下一个词的"半成品答案",只是没人去看它。**

这就好比你在写作文,写了第一稿,又改了第二稿,最后交了第四稿。老师只看第四稿,但其实你的第一稿、第二稿也都是完整的句子,只是没写好而已。如果有人把你的第一稿和第四稿放在一起对比一下,是不是能看出你这篇作文"进步的方向"?如果不这样对比,这些草稿写完就直接扔进垃圾桶,一点价值都榨不出来。

这就是整篇论文的出发点。作者们把这个方法叫做**LoopCD**。

为什么这是个真问题:当时的困境

在LoopCD出现之前,循环Transformer的使用方式几乎是约定俗成的:跑满所有循环次数,拿最后一轮的输出做答案,中间的全部作废。

这套流程背后藏着一个浪费。举个具体数字:论文里测了Huginn-0125这个模型,它循环32轮之后在ARC-Challenge这个常识推理测试上准确率是37.54%,但如果只看它循环1轮的"半成品",准确率只有22.78%,差了接近15个百分点。这15个点的差距不是噪音,它是一条清晰的"进步路径":模型在这32轮里是真的越想越明白,不是原地打转。

**问题是,过去没人想到要把这条"进步路径"当成一种可以利用的信号。**

这里要提一个背景概念,叫**对比解码**。

对比解码*:一种让"更强的预测"主动远离"更弱的参照"来做出最终判断的技术,简单说就是拿一个弱答案和一个强答案做对比,往强答案进一步延伸的方向走,得到一个更极端、更自信的最终答案。

对比解码这招早就有人用过,但过去获取那个"弱参照"特别费劲:要么专门训练一个小模型当陪练,要么故意把输入搞乱一点制造一个"降智版"输出,成本都不低。LoopCD的洞察在于:循环Transformer自带这个弱参照,不用额外训练,不用额外模型,第一轮的输出本来就是个天然的、同源的"弱版本"。

这就像你本来想找一个新手来对比专家的操作,结果发现专家小时候的操作录像一直存在你电脑里,不用再去请新手了。

LoopCD到底怎么操作

方法本身不复杂,核心公式就是拿最后一轮的结果,减去第一轮的结果,算出一个"进步方向",然后顺着这个方向再往前推一段距离。

这个"往前推多远"由一个叫**guidance strength**(引导强度)的系数ω控制。ω=0就是什么都不做,维持原样;ω越大,就越往"更强"的方向推得猛。

论文给出了两种具体实现方式。

第一种叫**LoopCD-Logits**。

Logits*:模型在选词之前算出来的、还没转换成概率的原始分数,每个候选词都有一个分数,分数越高说明模型越倾向选它。

LoopCD-Logits的做法是,把第一轮的隐藏状态和最后一轮的隐藏状态,分别单独送进输出层,算出两组logits,再做减法外推。这个方案的代价是要多跑一次输出层的计算,相当于多算了一遍"翻译成最终答案"这个步骤。

第二种叫**LoopCD-Hidden**。

它的做法更省事:在送进输出层之前,先把两个隐藏状态做好加权组合,然后只过一次输出层。这样完全不增加额外的输出计算开销,代价是精度上可能打点折扣,因为两个状态混合之后,一些细微的差异会被输出层的非线性运算"磨平"一部分。

这两种方案就像炒菜时你要不要先把两种调料分开试味再混合,还是直接把两种调料倒一起炒。分开试味更准,但费工费时;直接混炒省事,但味道的细节可能没那么分明。LoopCD-Logits就是"分开试味再决定怎么调",LoopCD-Hidden就是"直接混炒一次搞定"。

论文还设计了一种**自适应强度**机制,不是对所有词都用同一个固定的ω,而是根据模型当下有多"纠结"来动态调整。

具体做法是看模型给出的前两个最高概率候选词,它们的差距有多大。如果两个候选词概率几乎打平,说明模型自己也拿不准,这时候就加大引导力度;如果有一个候选词遥遥领先,说明模型已经很确定了,这时候就把引导力度调小,别去瞎掺和。

这就好比老师批改作业,学生写得很有把握、一看就对的题,老师不去改动;学生在两个选项之间犹豫不决、模棱两可的题,老师才会多提示一句。如果不分场合地统一加码提示,结果就是把本来答对的题也给搅乱了,这正是论文里反复验证到的"过度引导会伤害已经确定的答案"这个现象。

效果有多猛:数字说话

论文在四个模型家族上做了测试,覆盖数学推理、代码生成、多项选择题三大类任务。

在数学推理上,Ouro-2.6B-Thinking模型用了自适应LoopCD-Logits之后,AIME 2024这个高难度数学竞赛题的pass@1从61.88%直接冲到73.33%,涨了11.45个百分点。

**这个涨幅意味着什么?意味着原来每做100道题能对出62道,用了LoopCD之后能对出73道,多对出11道题,相当于错误率直接砍掉了接近三成。**

代码生成方面同样亮眼。Huginn在循环32轮的设置下,用LoopCD-Hidden把HumanEval这个编程测试的pass@1,从22.56%拉到31.71%,涨了9.15个百分点,而且这个提升是"零成本"拿到的,因为LoopCD-Hidden不增加额外输出层计算。

多项选择题这块,论文测了七个基准(ARC-Challenge、ARC-Easy、SciQ、MMLU、HellaSwag、WinoGrande、PIQA),涵盖了四个模型家族,无一例外全部提升。这里有个很说明问题的细节:即便这四个模型的训练方式完全不同,Ouro是每一轮都单独监督训练的,Huginn和Parcae是训练时随机采样循环深度的,Looped-Qwen3是在一个已经训练好的非循环模型上硬改出循环结构的,LoopCD在这四种截然不同的训练哲学下都稳定起效。这说明这个方法抓住的不是某个模型的训练技巧,而是循环结构本身自带的通用性质。

省一半的计算量,效果还不打折

如果LoopCD只是让模型变强,那充其量算个优点。但论文真正厉害的地方在后面:**用LoopCD加持的"半速"模型,能打平甚至反超全速跑完所有循环的原版模型。**

具体来说,Huginn-0125原本要循环32轮才能拿到最好成绩,现在只循环16轮,配合LoopCD-Logits引导,反而比全速跑32轮的原版还高出1.02个百分点。这意味着省下的计算量全部白捡,一点性能都没舍弃。

论文给出的FLOPs(浮点运算次数,衡量计算量的标准单位)节省幅度,从22.5%到48.2%不等,具体省多少取决于模型架构里"循环部分"占整个计算流程的比例有多大。

这里有个很直观的解释。像Huginn这种"全身都在循环"的架构,循环部分占了计算总量的绝大头,所以砍掉一半循环轮次省下的计算量非常可观,接近48%。而像Looped-Qwen3这种架构,是在一个已经训练好的固定模型上硬塞进去一个小循环窗口,循环部分占比本来就不大,砍一半循环省下的计算量相对就少,只有23.6%。

这就像两种不同的旅行方式。一种是整段路程都靠走路,你把走路的距离砍掉一半,省下来的体力当然很多;另一种是大部分路程坐车,只有一小段靠走路,你把那一小段走路的距离砍一半,省下的体力自然有限。架构里循环部分占比越高,省下的计算就越多,这是物理层面的硬约束,不是算法能变出来的魔法。

为什么会有效:拆开来看看

论文花了相当大篇幅去解释这件事"为什么"有效,这部分我觉得比方法本身更有意思。

研究者发现,**模型的预测在循环早期变化剧烈,到后期几乎不再变化。**

他们用一个叫Jensen-Shannon散度(JSD,一种衡量两个概率分布差异大小的数学工具,数值越大说明两个分布差得越远)的指标来量化这个现象。Ouro-1.4B第一轮结束时和最终答案的JSD是0.71比特,第二轮降到0.13比特,第三轮只剩0.013比特,基本上已经收敛了。这说明模型大部分的"想法转变"都发生在前几轮,后面几轮基本是在反复确认而已。

这个发现直接决定了参照点该怎么选。**引导效果和"参照点跟最终答案差多远"直接挂钩,跟参照点自己对不对没有太大关系。**

论文举了个很说明问题的例子:Huginn第二轮单独拿出来评测,正确率只有22.10%,跟第一轮的22.78%差不多弱,但因为第二轮已经跟最终答案的分歧收窄了,引导效果就打了对折,只有第一轮引导效果的六成不到。而Parcae-1.3B第六轮单独评测的正确率41.04%,比最终答案的40.36%还要高一点,看起来是个"更强"的参照,但正因为它和最终答案太接近,引导效果反而只剩1个百分点。

这个结论有点反直觉。你会以为参照点选得越"弱"越好,或者越"强"越好,但真正重要的是这个参照点和终点之间的距离有多大,距离越远,这条"进步方向"的信号就越清晰、越有力。

这就跟健身时测体脂变化很像。如果你拿昨天的体检数据和今天的对比,基本看不出什么趋势,因为一天变化太小,噪音盖过了信号。但如果你拿三个月前的数据和今天对比,那条下降曲线就一目了然。LoopCD选第一轮当参照点,本质上就是在拉开这个"时间跨度",让进步的方向信号足够清晰可辨。如果非要选一个已经和终点很接近的中间轮次当参照,相当于拿昨天和今天对比,方向感会非常模糊。

论文还做了一个关键的几何分解,把"最终logits减去参照logits"这个差值向量,拆成两部分:一部分跟最终logits方向平行,起到的作用相当于调整"温度"(温度在这里指控制预测分布尖锐程度的参数,温度越低,模型越敢把概率都压到一个选项上);另一部分跟最终logits方向垂直,起到的作用是重新给候选词排序,直接决定"选哪个"这件事。

研究者发现,**真正带来准确率提升的,是那个垂直的重排序部分,而不是平行的温度调整部分。**

在HellaSwag这个常识推理测试上,如果只用垂直的重排序部分,Ouro-1.4B的提升能到1.72个百分点,比完整版本的0.76还要高。这说明温度调整那部分在某些任务上其实是在拖后腿。

这个发现也解释了为什么模型越"自信",引导反而越容易帮倒忙。论文把问题按模型对答案的"确信程度"分成五档,发现**几乎所有的提升都来自模型本来就犹豫不决的那一档,最确信的那一档几乎纹丝不动。**

ARC-Challenge这个测试上,四个模型在最不自信的那一档里,引导带来的提升在6.4到13.3个百分点之间,但在最自信的那一档,提升顶多0.4个百分点。这说明LoopCD干的事情本质上是"拉偏架",只去推那些本来就摇摆不定的决定,对已经拍定了的决定根本没兴趣去动。

这个现象放到人身上也很好理解。你去问一个对答案十拿九稳的人"你确定吗",他基本不会改口;但你去问一个正在犹豫不决、天平刚好卡在中间的人同一句话,他很可能就被这一句话推向了某一边。LoopCD做的事情跟这个场景一模一样,它不是在教模型新知识,它只是把模型内部本来就存在、但还没拍定的那个倾向给推了一把。如果不这样设计,盲目地对所有答案一视同仁地加码,结果就是把原本答对的、确信的答案也给搅乱,实验数据显示强度一旦过大,确实会把本来答对的问题重新改错。

哪些地方要特别小心

论文也诚实地指出了这个方法的边界。

多项选择题这类打分任务,对引导强度比较宽容,在ω=0到1.5这个区间内基本都是正收益,峰值大概在0.5附近。但生成类任务,比如写代码、做数学题,就娇贵得多,ω超过0.6基本就开始崩,因为生成是一个词接一个词往后写的,前面哪怕一个词被引导得偏了一点,这个偏差会在后面的词里越滚越大,就像滚雪球一样越滚越离谱。

还有一个有意思的细节是关于Huginn这个模型的。Huginn的循环状态一开始是从纯粹的高斯噪声初始化出来的,所以它第一轮的隐藏状态里混杂着大量跟任务本身无关的随机噪声。这个噪声在过logits的时候会被输出层的归一化操作自动滤掉,所以LoopCD-Logits用第一轮当参照毫无问题。但LoopCD-Hidden是在隐藏状态层面直接做运算,这个噪声没地方可以被滤掉,直接就被放大混进了最终结果,反而拖累了效果,要等到第六轮,噪声差不多消化完了,才能发挥正常水平。

这给了我们一个挺重要的提醒:同样一个"参照点选哪一轮"的问题,答案会因为模型的初始化方式不同而完全不一样,不存在放之四海而皆准的固定答案。

写在后面

读完这篇论文,最让我意外的其实不是方法本身,而是那个被浪费掉的"第一轮"居然藏着这么丰富的信息。

循环Transformer这个架构已经火了一段时间了,但大家的注意力几乎全部集中在"怎么让每一轮循环变得更有效"这个问题上,没人认真想过"循环之间的差异本身就是一种信息"。这篇论文相当于在一堆已经被扔掉的草稿纸里,翻出了一张写满了有用信息的废纸。

还有一个细节值得单独说一下。论文里提到,温度调整(平行分量)这部分的作用在不同任务上是正负两极分化的,在ARC-Challenge上帮忙,在HellaSwag上拖后腿。这意味着LoopCD-Logits和LoopCD-Hidden这两种实现方式,不存在谁绝对更好的问题,选哪个本质上取决于你的任务更吃哪种效果。这跟很多论文里"新方法全面碾压旧方法"的叙事不太一样,这里更像是两个工具各有适用场景,得看菜吃饭。

论文结尾提了一句,"用自己的中间预测来训练的模型,可能会让这种配对变得更好用",这句话我觉得特别值得深挖。如果一个模型从训练阶段开始就知道自己的中间状态会被拿出来当参照,它会不会主动把"进步轨迹"安排得更清晰、更有利用价值?这个问题论文没有展开回答,但留下的这个口子,感觉比正文里已经讲完的内容还让人惦记。

Q&A

Q1:LoopCD是什么?

A:LoopCD是一种不需要额外训练、不需要辅助模型的解码方法,专门针对循环Transformer。它利用模型早期循环轮次产生的"较弱预测"和最后一轮的"较强预测"做对比,顺着两者之间的差异方向进一步外推,从而得到更准确的最终答案。

Q2:LoopCD会增加多少计算成本?

A:分两种情况。LoopCD-Logits需要多跑一次输出层计算,带来小幅额外开销;LoopCD-Hidden在隐藏状态层面直接融合,只过一次输出层,几乎不增加计算量。而且用LoopCD之后往往可以把循环轮次砍半,整体反而能省下22.5%到48.2%的计算量。

Q3:LoopCD适用于哪些模型?

A:论文在Ouro、Huginn、Parcae、Looped-Qwen3四个循环Transformer家族上都验证了效果,覆盖数学推理、代码生成、多项选择题等多种任务,且这四个模型训练方式各不相同,说明这个方法具备较强的通用性。

分享至
0赞

好文章,需要你的鼓励

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