← 学习笔记

学习笔记 · 2026-10-10 · 进阶

循环 Transformer:多次运行同一层,进行更深的思考

循环 Transformer(Looped Transformer)不增加参数,而是多次重复同一个 Transformer 块来提高计算深度。不过,增加循环次数会带来训练不稳定和内存占用增大的问题。近期的研究大多集中在解决这两个问题上。

目录
要点
  • 循环 Transformer 多次复用同一个块,在保持参数量和上下文长度不变的情况下,只增加计算深度。
  • 循环次数在推理时也可以调整。因此,它起到在性能与测试时计算之间进行权衡的调节旋钮作用。
  • 增加循环次数时,残差(residual)容易失控、梯度容易波动,导致训练崩溃。为此,研究者正在研究调节残差大小的规则以及循环专用的残差连接。
  • 通常每次循环都单独使用 KV 缓存,因此内存会随循环次数成比例增长。共享或压缩缓存的研究正在减轻这一负担。
  • 已有研究报告其在长度泛化和状态追踪方面具有优势。但也有分析指出,循环越深,错误越会累积,而自我纠正的能力有限。

为什么需要:不扩大模型,而是让模型更深

通常要提升模型性能,就得扩大模型。也就是堆叠更多层、增加参数(模型学习的数值),但存储空间和训练成本也会相应增加。完全循环 Transformer 研究(paper)认为循环 Transformer 是这一公式的替代方案。它反复复用同一个 Transformer 块,在参数量和上下文长度不变的情况下,通过增加计算量来获得性能。

另一个优点是循环次数可以在推理时调整。比如难题多循环几次、简单问题少循环几次,从而在性能与测试时计算(生成答案时使用的计算量)之间进行权衡(paper)。

普通 Transformer 对每个 token 施加的深度(层数)是固定的。递归式循环 Transformer 研究(paper)指出了这一点:在每次输入到来都需要更新状态的状态追踪问题中,序列变长而深度不变,因此会出现局限。正是“能否灵活增加计算深度”这一问题,推动了循环结构的研究。

核心思想:把稿件多次交给同一批编辑

打个比方,普通 Transformer 就像由 24 位编辑依次各修改一遍稿件。每位编辑都有自己独特的技能(参数),所以人越多,人工成本(参数量)也越高。循环 Transformer 则是用几位编辑组成一个团队,让这个团队把同一份稿件反复打磨多遍。人数不变,但修改的次数,即“展开深度(unrolled depth)”增加了。

DeepLoop(paper)将其概括为“把一组压缩后的物理块应用多轮,在不增加存储参数的情况下提高展开深度”。多项研究把这视为一个新的扩展维度,称为“循环深度(recurrent depth)”。这意味着除了模型规模和数据量之外,同一个块运行多少次也成为另一个调节性能的旋钮。

不过,同一批编辑反复修改同一份稿件时,也可能把之前改好的部分又改坏。循环 Transformer 研究中相当一部分内容,关注的就是“如何在增加循环次数时不让状态崩溃”。

普通 Transformer 与循环 Transformer

普通 Transformer每层权重不同

  • 增加深度,参数也随之增加
  • 每个 token 的深度固定
  • 训练规则成熟

循环 Transformer重复同一个块

  • 参数不变,增加深度
  • 推理时可调节循环次数
  • 迭代增加会导致训练不稳定、内存增加

공통 两者都使用由注意力和残差连接构成的 Transformer 块

获得深度的方式不同。循环方式用迭代次数而不是参数来增加深度。

工作原理:让一个块通过 N 次

把工作过程分成几个步骤如下:1)把输入 token 转换为嵌入(数值向量)。2)让这个表示(Representation,模型内部的中间表示)通过由若干层组成的共享块。3)把输出结果再次送入同一个块,按设定的循环次数重复。4)用最后一次循环的表示预测下一个 token。块内的注意力和残差连接(把变化量加到输入上再传递的通道)与普通 Transformer 相同,唯一的区别是同一组权重被多次使用。

这种重复带来两方面负担。第一是训练。根据 DeepLoop(paper),在普通 Transformer 中,每一层的参数各自单独更新。而在循环结构中,一次共享的更新会汇集来自多次访问的梯度,在下一次前向传播中,这些访问又会读取同一个更新。因此,确定残差大小的规则必须有所不同。

第二是内存。代表性的循环语言模型 Ouro 在每次循环中都维护标准的 KV 缓存(存储先前 token 的键和值的内存)。MELT(paper)指出,这导致内存随推理深度线性增长。这一问题在实际部署中也显现出来。根据对 Nanbeige4.2-3B 的分析(paper),该模型让一组层通过两次,由于层的复用,其最大注意力内存实际上翻了一倍。

循环 Transformer 的处理流程输入 token → 嵌入; 嵌入 → 共享块; 共享块 → 检查循环次数; 检查循环次数 → 共享块(再来); 共享块 → KV 缓存(记录); 检查循环次数 → 预测下一个 token(结束)输入 token嵌入共享块复用相同权重检查循环次数推理时可调节KV 缓存每次循环都会增加预测下一个 token再来记录结束
循环 Transformer 的处理流程 输入按设定次数反复通过共享块后输出。虚线表示每次循环都会累积 KV 缓存所带来的内存负担。

发展脉络:稳定化、内存与原理分析

起点研究大致可分为三条路线。第一条是训练稳定化。全循环 Transformer(paper)将循环次数增加时出现的不稳定归因于梯度振荡和残差爆炸,并提出了两项不增加参数的修改:一是把循环之间的信号分摊传递到所有层的结构,二是复用现有注意力块的注意力注入。结果是在其他循环模型崩溃的 12 次循环下仍能稳定训练。即使在循环模型不会崩溃的条件下,下游任务平均性能也最多提升了 13.2%。DeepLoop(paper)将决定残差大小的 DeepNorm 规则改造得适合循环结构。在 GPT-2 small、medium 规模下,重复访问同一块时验证损失和准确率都有所改善。该研究的结论是:“稳定的迭代深度需要的规则应考虑参数被访问的次数,而不是名义上的层数。”

第二条是内存与部署。MELT(paper)不再为每层按循环次数保留多份 KV 缓存,而是每层只保留一份缓存,由各次循环共享,并用可学习的门控进行更新。它从预训练好的 Ouro 参数出发,分两个阶段训练,其中包括 Distillation(知识蒸馏)。结果是内存占用与规模相近的普通 LLM 相当,性能却更高。Nanbeige4.2-3B 分析(paper)找出了五个导致公开检查点无法在 Apple Silicon 上直接运行的 bug,还通过分块预填充将 32GiB 共享内存下可用的上下文扩大到 2.7 倍。免训练循环 Transformer(paper)只在推理时让已训练模型的一组中间层重复运行。简单地重复应用块通常会降低性能,因此该方法把一次大的更新拆成多个衰减后的小步来应用,使 Qwen3-4B-Instruct 的 MMLU-Pro 分数提高了 2.64 个百分点。

第三条是原理分析。递归循环 Transformer(paper)把层分为并行编码器和递归解码器,并将前一个 token 的解码器状态回馈给下一个 token。它最多只用 40 位训练,却能以 100% 准确率解决长达 256 位的奇偶性任务(判断 1 的个数是奇数还是偶数)。在相同条件下,普通 Transformer 只停留在随机猜测水平。长度泛化机制研究(paper)深入观察了循环模型如何解决比训练时更长的推理链,发现了一个共同原理:递归状态中不仅包含任务内容,还包含该内容“是否已可用于下一步计算”的信息。能量-熵正则化研究(paper)针对损失地形崎岖、难以训练的单头循环模型,采用把它当作物理流动来处理的训练方法。模型维度为 8 的模型解决了长度 1000 token 的 induction head 任务。

循环 Transformer 研究地图 同一列是按相同关注点归类的研究。点击方框可跳转到原文。

最近的方向:跑得更多、更便宜

近期研究的方向是“让循环次数大幅增加也能撑得住”。InfiLoop(paper)的出发点是一个观察:增加循环次数反而会降低推理准确率。原因是带噪声的状态更新会覆盖已经正确推理出的中间结果,甚至把已解出的答案改回去。为防止这一点,研究者设计了一种循环专用的残差连接,学习保留过去计算中的哪些部分、以及接受多少新的更新。只有 7M 参数的小模型在 Sudoku-Extreme 上达到 97.9% 的准确率,有效步数超过 2 万次后性能仍在持续提升。

也有研究把循环扩展到大型 MoE(混合专家)模型。据 LOOM(paper)介绍,过去增加循环次数时收益很快递减甚至变差,因此已有研究大多停留在 2 次循环。它指出了两个原因:每次迭代隐藏状态的方差都会变大;以及路由器在每次循环中都只选同样专家的“专家选择坍缩”。通过调节残差更新大小、在每次循环重新输入输入嵌入、为每次循环设置独立路由器等方法,它在 100M~1.7B 模型上稳定扩展到 9~12 次循环。

还有降低推理成本的方向。LoopCD(paper)利用了前面几次循环的预测是“计算较少的弱预测”这一点,将其与最后一次循环的预测进行对比来选择下一个 token,无需额外训练。它将 Ouro-2.6B-Thinking 的 AIME 2024 pass@1 从 61.88% 提高到 73.33%。即使把循环次数减半,性能也与全深度基线持平或更好,从而将前向传播 FLOPs 减少了 22.5~48.2%。

近期研究中的醒目数字

2 万步以上InfiLoop:迭代越多性能越高
9~12 次LOOM:MoE 稳定循环次数
22.5~48.2%LoopCD:前向传播 FLOPs 减少
每个数字分别来自正文介绍的一篇近期研究。

局限与争议

最大的争议是迭代越深越容易出现的不稳定性。虽然已有多种稳定化技术,但报告的稳定范围大体在 9~12 次循环(paper,paper)。长度泛化机制研究(paper)报告称,在两种循环设置下,深度增大后内部机制都变得难以信赖:读取状态的位置和进度信号变得模糊,状态传播的可靠性下降。自我纠错能力也有限,一旦出现局部错误就会残留并不断累积。

第二个争议是,“参数少”这一优点并不能降低全部成本。计算量随循环次数增加,KV 缓存如果不专门处理也会随之增加(paper)。Nanbeige4.2-3B 分析(paper)展示了实际部署中遇到的困难:修复 bug 和内存问题之后才得以评估智能体任务。即便如此,MCPMark 部分任务的完成率最高也只有 30%,在 BFCL 中,同时使用多个工具的测试大多未能通过。

第三,收益因任务而异。在递归循环 Transformer(paper)中,即使每四个 token 才更新一次反馈,64 位奇偶性任务的准确率仍保持在 99%;而置换追踪任务的准确率则从 100% 降到 20%。在免训练循环(paper)中,直接重复块通常也会使性能变差。“只要增加循环就会变好”这种简单的期待并不成立。

延伸学习

如果是初次接触,建议从全循环 Transformer(paper)读起。它在一篇论文中同时梳理了循环 Transformer 的优点和典型的失败原因(梯度振荡、残差爆炸)。接着读 DeepLoop(paper),可以从理论上理解共享参数时为什么要采用不同的残差大小。

如果关注内存与部署,MELT(paper)和 Nanbeige4.2-3B 分析(paper)是不错的选择。前者讨论在各次循环间共享 KV 缓存的设计,后者讨论在实际设备上遇到的问题。如果想用已有模型直接做实验,免训练循环 Transformer(paper)的门槛最低。

如果想知道循环为什么有助于推理,可以把递归循环 Transformer(paper)和长度泛化机制研究(paper)放在一起读。若想了解最新方向,按 InfiLoop(paper)、LOOM(paper)、LoopCD(paper)的顺序阅读,就能把握“更深”“更大”“更便宜”的脉络。

相关术语

Transformer 测试时计算 KV 缓存 MoE 缩放定律 CoT 推理模型 量化

参考资料

奠基论文

最新研究

由 AI 根据所列参考资料撰写并经过审核。详情请查看原始资料。