
你有没有玩过那种需要反复调整力度才能命中目标的投篮游戏?
第一次你可能用了七成力,球没进,往前弹了一点。第二次你想着"上次力度不够",于是加大到九成力,结果球又飞过了头。真正厉害的玩家不会每次都用同样的力度出手,他们会根据球上次弹回来的位置,动态调整这一次该用多大劲。
这篇来自南方科技大学和香港中文大学(深圳)团队的论文,讲的正是一个和这个投篮场景惊人相似的问题,只不过战场换成了当下最火的"循环推理模型"。
**问题出在哪:AI也在"用固定力度投篮"**
先说说什么是循环推理模型。
循环推理模型:一种让AI反复用同一套参数处理同一个问题的模型架构,通过多次"循环"来让答案逐渐变得更精确,而不是靠堆叠更多参数。
这几年,像 TRM、HRM 这样的模型开始流行起来,核心思路挺聪明:与其造一个巨大无比的神经网络一次性把问题想明白,不如造一个相对小的网络,让它反复琢磨同一个问题,每琢磨一轮就往正确答案靠近一点。这有点像你做数学题时不会一步写出答案,而是打草稿、检查、修正,反复几轮才敢下笔。
这种做法的好处很明显:不用增加参数量就能提升推理能力,也就是所谓的"测试时计算扩展"。
测试时计算扩展:不改变模型参数数量,而是通过让模型在推理阶段多想几轮来提升效果的技术路线。
但这里有一个几乎被所有人忽略的细节。模型每一轮更新时,到底应该"迈多大步子"?
标准做法是:无论第几轮,都直接把这一轮算出来的更新量原封不动地加到当前状态上,相当于力度永远是100%,不多不少。论文管这个叫"单位步长"。问题是,凭什么每一轮的最佳力度都恰好是100%?
论文作者们设计了一个简化的数学例子来证明这件事有多离谱。假设一个系统里有两种误差成分,一种需要用力度1/λ?才能纠正,另一种需要1/λ?,而λ?和λ?并不相等。如果你永远用同一个固定力度去处理,无论怎么选,总有一种误差成分收敛得特别慢,甚至在原地振荡。论文用严谨推导证明了:只有力度能随时间变化,才能把两种误差都彻底清零,任何固定力度都做不到这一点。
这就像你要同时拧紧一颗螺丝的粗牙和细牙两种螺纹,用一个固定扭矩的电动螺丝刀,粗牙拧紧了细牙就滑丝,细牙刚好细牙又没拧到位。真正需要的是能根据螺纹类型动态调整扭矩的工具。如果没有这种动态调整能力,你要么牺牲一部分精度,要么得多拧好几轮才能补救,而这恰恰对应了循环模型里"多循环几次才能达到同样精度"的现象。
**怎么知道该迈大步还是小步:进展与波动的博弈**
既然固定步长不是最优解,那该怎么动态决定每一轮的步长呢?
这篇论文的核心洞察是:你可以通过观察模型自己走过的轨迹,来判断当前该迈大步还是小步。
具体来说,研究者们先做了一个数学上的精确推导。他们证明,最终任务损失对某一轮步长的敏感度,可以被精确地拆解成两部分:一部分叫"持续性进展",一部分叫"中心化波动"。
持续性进展(Persistent Progress):指连续几轮更新方向基本一致,说明模型正在朝着同一个方向稳步前进的那部分信号。
中心化波动(Centered Fluctuation):指连续几轮更新方向来回摆动、互相抵消的那部分信号,代表的是不确定或震荡状态。
这个拆解带来一个直觉上很好理解的策略:如果最近几轮更新的方向都差不多,说明模型找到了正确的方向,这时候应该大胆一点,迈大步子加速前进;如果最近几轮更新方向来回乱跳,说明模型还没想明白,这时候应该谨慎一点,用小步子慢慢试探,免得步子迈大了扯着蛋。
这其实就是你开车在高速上和在拥堵市区里的驾驶逻辑差异。在空旷笔直的高速上,你可以稳稳地踩油门加速,因为前方路况清晰、方向确定;但在拥堵的市区路口,走走停停、方向不断变化,这时候你会本能地放慢速度、小步挪动,因为贸然加速反而容易出事故。如果你在市区也用高速的驾驶节奏,结果就是频繁急刹车甚至追尾,反而更慢更危险。循环推理模型面对的正是这样的路况切换问题,而论文要做的,就是给模型装一个能识别"高速路段"和"市区路段"的传感器。
问题是,这个"最优步长应该怎么调"的信号,理论上是需要知道最终正确答案才能算出来的,可是模型在推理时是看不到答案的。这就是这篇论文真正棘手的地方:如何在不知道答案的情况下,仅凭模型自己走过的轨迹,去逼近这个理想信号?
**TAPS:一个边走边调速的智能调度器**
论文给出的解决方案叫做 TAPS,全称是"轨迹自适应进展-波动调度器"。
TAPS(Trajectory Adaptive Progress–Fluctuation Scheduler):一种在推理阶段实时监控模型每一轮更新的进展和波动情况,并据此动态调整步长的算法,不需要重新训练模型即可使用。
TAPS 的做法借鉴了深度学习里大家很熟悉的一个工具:Adam 优化器。
Adam:一种深度学习训练中常用的优化算法,它会分别跟踪梯度的一阶矩(均值)和二阶矩(方差)来自适应调整学习率。
TAPS 用指数滑动平均的方式,持续跟踪最近几轮更新量的"平均方向"(对应持续性进展)和"方向一致性"(对应波动程度)。具体来说,它计算一个叫 Pk 的量,代表这些更新量叠加起来还剩多少能量,如果历史更新方向都一致,这个叠加后的能量会很大;再计算一个叫 Sk 的量,代表更新量围绕平均方向的离散程度,如果方向来回摆动,这个值就会很大。
然后 TAPS 把这两个量做一个归一化的比较,算出一个介于负1到正1之间的平衡分数。分数为正,说明进展占主导,步长就往上调,实现"过度松弛";分数为负,说明波动占主导,步长就往下压,实现阻尼。
这里有个细节值得多说一句:TAPS 并不是简单地说"进展大就一律加速",它还有一个两轮的预热期,在正式开始调节之前先观察一下基本走势,避免在数据不足的情况下瞎调。这就像你刚上车还没摸清楚这辆新车的油门脚感之前,不会一脚踩到底,会先轻踩试试反应。
那么这套东西靠不靠谱,有没有理论保证?论文里给出了一组条件充分的定理,证明只要观测到的进展和波动信号与真实的任务损失梯度保持"条件可比"(不需要完全精确,只需要大方向不跑偏),TAPS 选出的步长方向就有很大概率是能降低最终损失的。论文进一步证明,在这些条件满足的情况下,TAPS 能用比标准单位步长更少的循环轮数,达到同样的目标精度,这在论文里被称为"循环加速"。
**实验结果:从数独到语言模型都在受益**
理论说得再漂亮,也得看实际效果。
论文选择了两个经典的结构化推理任务作为主战场:数独(Sudoku)和迷宫(Maze)。数独任务用的是 TRM 模型,循环32轮;迷宫任务循环16轮。
结果显示,仅仅在推理阶段接入 TAPS(不需要重新训练模型),六种不同实现方式的 TAPS 都能在准确率和速度上双双超过固定步长方案。以数独任务为例,标准单位步长的准确率是89.67%,而 TAPS(BB) 版本能做到90.19%,同时达到同等目标精度所需的时间反而更短。
更有意思的是固定缩放方案的表现有多糟糕。论文测试了把步长固定调到0.8或1.2会发生什么,结果是1.2倍的固定步长(相当于一直"用力过猛")直接让数独准确率从89.67%暴跌到85.43%,而且很多情况下甚至没能在规定循环次数内达到基准性能,论文用"N/R"(未达标)标注了这种失败。这组对照恰恰印证了前面那个投篮的类比:固定力度这件事本身就是有问题的,不管你选的固定值是大是小,总有某些轮次不合适。
如果说推理阶段的即插即用已经让人意外,那么论文接下来做的"训练-推理协同设计"更进一步。研究者在训练阶段就加入一个惩罚项,专门抑制那些波动超过进展的情况,让模型学出来的循环轨迹天生就更"听话"、更容易被步长调度器掌控。这套协同设计之后,数独任务最佳配置达到91.39%准确率,同时获得1.3倍的推理速度提升;迷宫任务更是达到79.90%准确率和1.56倍的速度提升。
下面这张表格摘录了论文中最核心的对比数据:
| 方法 | 数独准确率(推理-only) | 数独加速比 | 数独准确率(协同设计) | 数独加速比 | 迷宫准确率(推理-only) | 迷宫加速比 | 迷宫准确率(协同设计) | 迷宫加速比 |
|---|---|---|---|---|---|---|---|---|
| 标准(η=1.0) | 89.67 | 1.000× | 90.60 | 1.194× | 78.80 | 1.000× | 78.80 | 1.249× |
| 固定(η=0.8) | 89.75 | 0.990× | 91.25 | 1.275× | 78.40 | 未达标 | 79.40 | 1.226× |
| 固定(η=1.2) | 85.43 | 未达标 | 85.28 | 未达标 | 77.00 | 未达标 | 77.40 | 未达标 |
| TAPS(GD) | 90.07 | 1.042× | 91.38 | **1.359×** | 79.00 | 1.132× | 79.80 | 1.508× |
| TAPS(P/S-Sign) | 89.98 | 1.007× | 91.23 | 1.302× | 79.10 | 1.171× | **79.90** | **1.561×** |
| TAPS(BB) | **90.19** | 1.039× | 91.27 | 1.263× | 78.90 | 1.465× | 79.60 | 1.465× |
除了这两个主战场,论文还做了一系列拓展实验,证明 TAPS 不是只适用于某一种特殊架构的小把戏。
在自适应退出场景里,研究者设计了一个基于 TAPS 的提前停止规则:当最近几轮的更新量变小、预测结果稳定下来之后,就让模型提前结束循环,不用浪费算力继续算下去。在数独的高难度子集上,这套方案用4.7倍更少的计算量达到了和另一种停止方法(FPRM)相当的准确率。
在语言模型层面,论文把 TAPS 用在了 Ouro-1.4B、Ouro-2.6B 和 Huginn-0125 这几个循环语言模型上,在 MMLU、ARC-C、HellaSwag、GSM8K 四个基准测试中都观察到了平均准确率的提升。就连对一个完全冻结权重、靠反复执行中间层来实现"循环"的 Qwen3-4B-Instruct 模型,TAPS 依然能挤出额外的准确率提升,而且所有六种调度器都不约而同地选择了大于1的平均步长,说明这种中间层循环天然偏好"温和的过度松弛"。
这种跨架构的普适性其实挺说明问题的。它暗示"步长该多大"这件事,并不依赖于某个特定模型的具体结构,而是循环推理这个计算范式本身自带的一个共性问题,只要你的系统是靠反复迭代来逼近答案的,就一定会面临进展和波动之间的权衡。
**写在后面**
读完这篇论文,最触动我的其实不是 TAPS 这个具体算法有多精妙,而是它提出的那个问题本身:为什么我们默认"循环步长应该是1"这件事,从来没有人认真质疑过?
这有点像很多技术领域里那种"沉默的默认值"。大家专注于设计更好的更新规则(也就是论文里说的Δθ,模型到底该往哪个方向走),专注于设计更聪明的停止规则(到底该循环多少轮),却很少有人问,每一步迈多大这件事本身是不是也该是个变量。论文把这个第三维度明确提出来,某种程度上是在提醒大家:一个系统里看似"理所当然"的默认参数,往往藏着被忽视的优化空间。
论文里那个用Barzilai-Borwein方法做步长估计的 TAPS(BB) 变体也挺有意思。BB方法本来是数值优化里一个很老的技巧,用来估计一个局部的曲率信息从而自适应调整步长,这篇论文把它从传统优化搬到了循环神经网络的推理阶段,这种"老方法新场景"的迁移思路,本身也值得留意。
还有一个细节让我印象深刻:论文做了大量关于"步长调度器该多久更新一次"的实验,发现更新频率和最终效果之间不是单调关系。调度器算得越勤快,理论上跟踪得越精细,但也意味着更多的计算开销;调得太懒,虽然省了计算量,但轨迹跟踪变粗糙,反而可能需要更多轮循环才能达到同样精度,最终把省下来的时间又还回去了。这种非单调的权衡关系,在很多"自适应"系统设计里其实都会出现,值得多想一层。
如果循环推理模型未来会成为AI架构的一条主流路线,那么"如何为每一步分配恰到好处的力度"这个问题,恐怕不会只停留在这一篇论文里。
Q&A
Q1:TAPS是什么?
A:TAPS全称轨迹自适应进展-波动调度器,是一种给循环推理模型动态调整每轮更新步长的方法,通过跟踪最近几轮更新的"持续进展"和"波动程度"来决定该迈大步还是小步,不需要重新训练模型即可在推理时直接使用。
Q2:TAPS和标准的单位步长循环相比有什么优势?
A:标准方法每轮都用固定的100%力度更新状态,而TAPS会根据轨迹自适应调整。实验显示TAPS在数独、迷宫等任务上准确率更高,且达到同等精度所需的计算时间更短,最高可实现1.56倍的推理加速。
Q3:TAPS只能用在数独这类结构化推理任务上吗?
A:不是。论文验证了TAPS在多种场景下都有效,包括循环语言模型(如Ouro、Huginn)、冻结权重的中间层循环模型(如Qwen3-4B-Instruct),以及自适应退出、并行采样等多种推理策略,适用范围比较广。
好文章,需要你的鼓励
本文介绍LT-OPD训练框架,通过让极限压缩的多模态大模型在自己生成的内容上接受满血版模型指导,并配合渐进式课程学习,在仅保留5%视觉token时把性能保留率从68.6%提升到82.3%,且不增加推理成本。
本文解读ALIGNOPSD方法,该方法针对AI智能体训练中"决策与时间戳错配"问题,通过先对齐功能相同的决策场景再打分,并按可变长度决策段分配信用,在ALFWorld、WebShop、Search-QA三大任务上相比GRPO提升5.5%至8.7%。
本文介绍自适应一致性图(ACG)方法,通过持久化执行记忆图与预算感知的上下文构建,帮助AI智能体在长任务中减少信息失联,在多项基准测试中相比ReAct等基线方法提升了任务成功率。
多智能体AI协作时重复计算KV缓存浪费严重。PReCache提出预计算低秩缓存和中性基础缓存重构两项设计,免训练实现最高3.1倍加速、2.3倍吞吐提升,且准确率仅比不共享方案低1.1个百分点。