让同一组权重在推理时多跑几轮,是绕过"参数不够"最便宜的办法——这就是循环语言模型(looped language model)的全部动机。但 2026 年 10 月 20 日上 arXiv 的一篇论文泼了盆冷水:多跑几轮,并不等于能处理更长的题。
循环深度不等于推理能力,翻倍就崩
任务设定很朴素。论文用 swap-S5:五个盒子各放一个物体,给出一串交换操作,最后问每个盒子里装的是什么。在"单查询"设定下,作者先测了一组固定深度模型的极限:Qwen2.5 从 0.5B 到 7B,训练长度之外直接崩盘。模型只用最多 32 步的序列训练,测试时塞给 512 步序列(相当于训练长度的 16 倍),0.5B 到 7B 全线只能拿到约 20% 的准确率——差不多等于乱猜。论文摘要里还记了另一条更极端的曲线:同一骨干上做显式思维链(CoT),在 swap-S5 上只有 0.8%。论文原文
换句话说,问题不在参数量。把模型放大到 7B,仍然追不上自己的训练长度;换成让模型把中间步骤写出来,效果反而更糟。
两个病根:监督错位与状态尺度漂移
论文把"多跑几轮不管用"拆成了两个可以分离的故障。
第一是监督错位。只用最终答案做监督时,模型从来不知道"第 k 轮该推进到哪一步"——循环的迭代次数和任务进度之间没有任何绑定关系,多轮叠加只会让状态乱飘。
第二是尺度漂移。同一组权重被反复应用数百次,循环状态(recurrent state)的数值尺度会一路漂移,训练时没见过的激活幅度一进来就足以把模型带偏。
这两条恰好对应方法的两处改动,而论文用消融实验把功劳分得很清楚。
PAR:让每一轮推进恰好一步
方法本身朴素得有点反高潮。第一,第 k 轮的预测,目标是"执行完前 k 步之后的真实状态",而不是最终答案——循环轮次和任务进度被显式对齐了,一轮一步。第二,每轮结束后把循环状态重新缩放回它第一轮时的范数(norm anchoring),把尺度漂移这个变量直接钉死。
结果是:Qwen2.5-0.5B 用最多 32 步训练,在 512 步上达到 95.5% 的平均全状态准确率,正好是 16 倍长度外推。同一骨干下,此前方法 RLT 的报告值是 55.7%,显式思维链是 0.8%。作者补充的一组数据里,Qwen2.5 的 0.5B、1.5B、3B、7B 以及 Qwen3 的 0.6B 到 4B 都稳定超过固定深度基线,其中 Qwen2.5 四个尺寸的最优训练配置在 16 倍长度处达到了 100% 准确率。这篇论文当天也登上了 Hugging Face 每日论文榜首,获 118 赞。论文卡片
消融实验:两个部件谁都不能少
消融把"16 倍"这个数字拆得很干净:去掉范数锚定,外推倍数从 16 倍掉到 2.2 倍以下,基本等于没做;把"进度对齐目标"换回最终的答案监督,外推倍数降到最多 8 倍。循环状态对齐和中间预测监督必须同时上,缺一个都塌。
还有一个容易被忽略的工程细节:模型得知道什么时候停下来。论文用一个学出来的"完成读出"(completion readout)来决定何时输出答案,不需要外部给定停止深度。
没有中间标签怎么办
swap-S5 天然带中间状态,但真实任务通常只有最终答案。论文给了一个折中方案:前缀自蒸馏(prefix self-distillation)——用较短问题前缀反推,诱导出"第 k 轮对应第 k 步"这层对应关系,只靠最终答案就能训。摘要的说法是,当中间标签拿不到时,这个办法可以让增益继续存在。
真正值得看的部分
这篇论文的分量不在 95.5% 这个数字,而在于它给出了一条被受控实验反复验证的路线:把中间监督和状态尺度一起训,循环深度才真正变成可用的推理资源。
过去两年"推理时计算扩展"这条路有一个隐含假设:只要让模型多想一会儿,它就能处理更长的输入。PAR 用一组对照实验说明这个假设在序列状态跟踪上不成立——不是模型不会想,而是没人告诉它每一轮该想什么,以及想过之后内部状态该长什么样。
有意思的是,这两个缺失恰好都是训练侧的问题,不是架构问题。循环模型没有新增任何参数,论文改的只是监督信号和一层缩放。这对正在堆推理预算的团队是个提醒:把预算花在推理时的重复调用上之前,先确认每一轮迭代是否有明确的进度语义。