@chenxiao_yang_: 对于更长范围的任务,我们常常考虑使用长上下文模型。但框架也很重要!实际上,它们……

X AI KOLs Timeline 论文

摘要

这篇 ICML 论文介绍了递归模型,这些模型递归地调用自身在隔离上下文中解决子任务,证明它们可以在长时推理中超越上下文受限的自回归模型。在 SAT 求解和围棋博弈树搜索上的实验表明,使用较小的活动上下文能提高准确性。

对于更长范围的任务,我们常常考虑使用长上下文模型。但框架也很重要!实际上,它们在计算能力上本质不同。 我们的 ICML 论文《Recursive Models for Long-Horizon Reasoning》介绍了一种简单的递归框架,并研究了不同框架如何在资源约束下影响基础模型的表达能力。 1/n 论文:https://arxiv.org/abs/2603.02112 代码:https://github.com/chr26195/RecursiveModel…
查看原文
查看缓存全文

缓存时间: 2026/07/09 15:47

对于更长时间跨度的任务,我们通常会考虑使用长上下文模型。但「工具」本身也同样重要!实际上,它们在计算能力上存在本质差异。我们的 ICML 论文《长程推理的递归模型》介绍了一种简单的递归工具,并研究了不同工具如何影响基座模型在资源约束下的表达能力。1/n
论文:https://arxiv.org/abs/2603.02112
代码:https://github.com/chr26195/RecursiveModel…


长程推理的递归模型

来源:https://arxiv.org/html/2603.02112

摘要

现代语言模型在有界上下文内进行推理,这一固有约束构成了长程推理的根本障碍。我们指出递归是克服这一障碍的核心原则,并提出递归模型作为其最小实现,其中模型可以递归地调用自身,在隔离的上下文中求解子任务。我们证明,任何可计算问题都允许一种递归分解,其中每个子任务所需的活跃上下文仅需指数级小于标准自回归模型;这严格超越了任何局限于单一序列的上下文管理方法,例如摘要。我们进一步将框架推广到具有任意上下文处理和控制流的现代智能体系统,并证明递归模型能够在此类系统中达到最优能力。实验上,我们测试了两种设置:对预训练基座模型进行微调以进行递归 SAT 求解,以及从头开始训练一个小模型,数据来自精确博弈树搜索生成的围棋轨迹。两者都表明,在较小的活跃上下文下,长程准确性得到提升。

机器学习,ICML

1 引言

图注(a) 标准自回归模型。模型按顺序生成 token,将每个 token 追加到当前序列,直到达到上下文限制。
图注(b) 单一上下文模型。整个生成过程在单一序列内进行。作为一个代表性示例,摘要会定期将之前的推理压缩为紧凑的摘要,并丢弃原始 token。
图注(c) 递归模型。与前两种方法不同,计算跨越多个隔离的上下文。模型通过 call 委派子任务,每个子任务在新上下文中求解;return 仅传回结果,丢弃中间推理过程。这使得递归深度不受限制,同时每个上下文的长度不超过最大上下文长度。

图 1:不同上下文管理策略概览。

现代语言模型展现出非凡的通用问题求解能力(Radford 等,2018;2019;Brown 等,2020;OpenAI 等,2023)。通过扩展思维(Wei 等,2022;OpenAI,2024;DeepSeek-AI 等,2025)和智能体系统(Yao 等,2023;Shinn 等,2023;Park 等,2023),它们能够处理跨不同领域的日益复杂的任务。尽管如此,这些系统受制于物理约束:每一步,模型只能关注有界的上下文窗口,严格限制了单次前向传播可计算的内容。这推动了对有效上下文管理的日益关注。例如,摘要将冗长的推理轨迹压缩为紧凑状态,丢弃不再需要的历史以释放空间(Yang 等,2025a;Yu 等,2025;Zhou 等,2025;Yan 等,2025);记忆增强方法在外部存储中写入和检索相关信息(Packer 等,2024;Chhikara 等,2025;Suzgun 等,2025;Xu 等,2025);在智能体系统中,子任务被分配给多个智能体,每个智能体在其自身上下文中操作,同时协作实现共同目标(Hong 等,2024;Wu 等,2023;Li 等,2023)。然而,问题依然存在:这些不同系统在推理能力上如何形式化比较?作为围绕基座生成器的脚手架,哪些核心机制能使模型处理那些因上下文约束而原本不可能实现的长程任务?并且这些机制是最优的吗?尽管这些问题很重要,现有工作缺乏对这些问题的形式化以进行系统性回答。值得注意的相关工作包括 Yang 等人(2025a, b),但前者关注基于摘要的上下文管理,后者关注扩散语言模型中的自我纠正。

在这项工作中,我们将递归识别为克服上下文约束的核心原则,也是现代智能体系统天然支持的一种计算能力形式。广义上,递归是指将有限、静态的规则集应用于目标问题,动态产生潜在无限深度的行为,这些行为虽然在上下文上彼此隔离,但共同贡献于最终解。我们提出这一原则的最简单实现,称为递归模型。它由一个单一的基础 LLM 作为生成器,配备两个最小工具:callreturn。如图 1(c) 所示,模型可以调用自身:call 创建一个隔离的上下文,模型在其中独立求解子任务;完成后,return 丢弃中间推理,仅将最终答案传回父上下文。由于每个被调用的模型本身又可以发起进一步的调用,这使得深度上下文堆栈成为可能,同时每个独立上下文保持在最大上下文长度之内。类似思想已在早期和同期工作中有所探索(Lee & Kim, 2023;Prasad 等,2024;Schroeder 等,2025;Pan 等,2025;Zhang 等,2025c;Sun 等,2025;Zhang 等,2025a);详细讨论见附录 A。

一个重要观察是,递归模型自然地引入了局部空间与全局空间的分离:生成器只需关注活跃上下文,而上下文堆栈中的非活跃上下文可以被卸载到外部存储,并在返回时恢复。虽然这提高了空间效率,但似乎施加了一个强烈要求:问题必须允许模块化分解。一般计算问题是否具有这种结构?我们给出肯定答案:任何可计算问题都固有地允许递归分解,而且通过这样做,所需的上下文可以指数级减少。具体而言,我们证明,在局部空间 (S(n)) 下,递归模型可以求解任何需要最多 (\exp(\mathcal{O}(S(n)))) 计算时间的问题。相比之下,标准自回归模型需要上下文长度 (\exp(\mathcal{O}(S(n)))) 才能求解相同问题,这存在指数级差距。

然而,递归并不是上下文管理的唯一方法。考虑摘要(图 1(b)),它会定期压缩上下文并丢弃旧历史,以保持上下文窗口有界。与递归不同,摘要以及实际上大多数现有策略都将整个生成过程保持在单一序列内。我们称这些为单一上下文模型。先前工作(Yang 等,2025a)表明,在上下文长度为 (S(n)) 的情况下,摘要可以求解所有需要 (S(n)) 空间的问题。我们证明这实际上是最优的:没有任何单一上下文模型,无论其上下文管理策略如何,能够超越摘要,而摘要仍然严格弱于递归。实际上,我们表明即使是常数深度递归(即深度 1)也足以匹配所有单一上下文模型的最优性能。此外,更深层次的递归突破了这一上限,求解了任何单一上下文方法无法达到的问题。这区分了递归模型与那些浅层版本(Sun 等,2025;Zhang 等,2025a)的能力。

现代智能体系统独特之处在于它们不再局限于单一上下文:它们可以动态地生成上下文隔离的子智能体,独立地求解专门子任务,并将响应整合回来,处理后用于确定系统的下一步行为。这一独特特性使得递归在更广泛的使用场景中成为可能。尽管并非所有智能体系统都具备这种能力,我们形式化了一个称为递归智能体系统的强大家族,它为智能体系统配备了创建递归控制循环的脚手架。递归模型是该家族的最小实现。我们证明,任何递归的智能体系统都可以达到与递归模型相同的能力,从而能够突破标准方法远无法达到的上下文约束。然而,没有系统能超越递归模型,这表明递归模型尽管简单,但已经在该家族内达到了最优能力。

实验上,我们在两种设置中评估了递归模型。在 SAT 问题上,我们在递归回溯轨迹上微调了一个预训练基座模型,并与强大的提示 LLM 基线进行比较。在 (4 \times 4) 围棋博弈树评估中,我们从一个精确求解器生成的轨迹上从头训练了一个小型 decoder-only 模型,从而得到一个受控的递归搜索任务,其泛化形式是 EXPTIME-完全的,因此适合测试指数时间的递归推理。在围棋中,递归的 call/return 轨迹使模型能够评估更长的博弈树搜索,而无需将整个证明放在一个上下文中。这优于 CoT 和单一上下文基线,并展现出更强的长度外推泛化能力。

算法 1 自回归生成器,(f^\mathrm{cot})
输入:输入序列 (\mathbf{x} \in \Sigma^{}),下一 token 生成器 (\pi : \Sigma^{} \to \Sigma),停止条件 (\mathsf{stop} : \Sigma^{*} \to {0,1})。
1: while (\neg \mathsf{stop}(\mathbf{x})) do
2: 生成 (y \leftarrow \pi(\mathbf{x}))
3: 追加 (\mathbf{x} \leftarrow \mathbf{x} | y)
4: return (\mathbf{x})

算法 2 递归模型,(f^\mathrm{rm})
输入:(\mathbf{x} \in \Sigma^{});序列生成器 (f : \Sigma^{} \rightharpoonup \Sigma^{*}),其定义输出以 call 或 return 字符串结尾。
1: while true:
2: (\mathbf{y} \leftarrow f(\mathbf{x}))
3: if (\mathbf{y} = \mathbf{y}’ | \langle\texttt{return}\rangle \mathbf{a} \langle/\texttt{return}\rangle): return (\mathbf{a})
4: if (\mathbf{y} = \mathbf{y}’ | \langle\texttt{call}\rangle \mathbf{q} \langle/\texttt{call}\rangle): (\mathbf{x} \leftarrow \mathbf{y}’ | f^\mathrm{rm}(\mathbf{q}))

2 递归模型

本节定义递归模型。构造采用一个部分序列生成器 (f: \Sigma^{} \rightharpoonup \Sigma^{}),它映射一个提示(或更一般地,一个上下文)到生成的序列。我们的默认选择是 CoT 序列生成器 (f^\mathrm{cot}),通过从下一 token 生成器进行自回归展开得到。

自回归生成器。

令 (\pi: \Sigma^{} \to \Sigma) 为下一 token 生成器,(\mathsf{stop}: \Sigma^{} \to {0,1}) 为停止条件。算法 1 定义了部分序列生成器 (f^\mathrm{cot}: \Sigma^{} \rightharpoonup \Sigma^{})。从输入序列 (\mathbf{x}) 开始,展开重复追加 token (\pi(\mathbf{x})),直到 (\mathsf{stop}(\mathbf{x}) = 1),然后返回最终序列。如果 (\mathsf{stop}) 永不成立,则 (f^\mathrm{cot}(\mathbf{x})) 未定义。我们记 (\mathbf{x} | \mathbf{z}) 为序列拼接。

递归模型。

固定一个部分序列生成器 (f: \Sigma^{} \rightharpoonup \Sigma^{});默认 (f = f^\mathrm{cot})。我们将由 (f) 诱导的递归模型定义为函数 (f^\mathrm{rm}: \Sigma^{} \rightharpoonup \Sigma^{})。我们省略符号对 (f) 的依赖。其输入 (\mathbf{x}) 是完整的根提示,其输出(当定义时)是根上下文返回的答案。执行从根堆栈 (\mathbf{S}_0 = [\mathbf{x}]) 开始。对于 (t = 0, 1, \ldots),(\mathbf{S}_t) 表示 (t) 次堆栈更新后的堆栈;每次更新在完成一次完整的 (f) 调用后发生,而不是算法 1 中每个生成的 token 后。每个堆栈 (\mathbf{S}_t \in (\Sigma^{*})^{+}) 是一个非空的 token 序列列表。只有顶端序列是活跃的:它是堆栈更新 (t) 时传递给 (f) 的完整输入。下方序列 (\mathbf{S}_t[:-1]) 是挂起的父上下文,在控制返回给它们之前对 (f) 不可见。对于堆栈 (\mathbf{S}) 和序列 (\mathbf{s}_1, \ldots, \mathbf{s}_k),(\mathsf{Push}(\mathbf{S}; \mathbf{s}_1, \ldots, \mathbf{s}_k)) 按顺序将它们追加到 (\mathbf{S})。递归模型使用四个保留分隔符 token:(\langle\texttt{call}\rangle, \langle/\texttt{call}\rangle, \langle\texttt{return}\rangle, \langle/\texttt{return}\rangle \in \Sigma)。我们记 (\langle\texttt{call}\rangle \mathbf{q} \langle/\texttt{call}\rangle) 和 (\langle\texttt{return}\rangle \mathbf{a} \langle/\texttt{return}\rangle) 为带分隔符的调用和返回字符串。当使用默认选择 (f = f^\mathrm{cot}) 时,算法 1 中的停止条件被选择为只有当当前序列以这些字符串之一结尾时,(f^\mathrm{cot}) 才返回。一次调用暂停当前上下文,并为子问题启动一个新的子上下文。非根返回移除子上下文,并仅将其答案追加到父上下文;子上下文的中间 token 不被复制回来。形式上,在堆栈更新 (t) 时,在活跃上下文上运行 (f),并令 (\mathbf{y}_t := f(\mathbf{S}_t[-1]))。生成器

相似文章

面向长时程LLM推理的上下文回收

arXiv cs.CL

本文介绍了ContextForge,一种层次化内存架构,将LLM上下文窗口视为可回收工作空间,在长时程任务上实现了显著的令牌和速度改进,同时在拥有2.76亿行的企业基准上保持了准确性。

@dongxi_nlp: https://x.com/dongxi_nlp/status/2066991890348572950

X AI KOLs Following

本文是“Context Is A Projection Harness”系列的第6篇,深入探讨了coding agent中context management的核心问题,提出了将完整历史投影为模型所需的小视野的Harness方法,包括Large-Result Preview、Idle-Gap Microcompact、Old-Span Collapse和Auto-Compact Near The Limit等关键技术。