提升大型语言模型(LLM)的推理能力已成为2025年最热门的话题之一,这合情合理。更强的推理能力使LLM能够解决更复杂的问题,从而在用户关心的广泛任务中展现出更强的能力。
在过去几周里,研究人员分享了大量提升推理能力的新策略,包括扩展推理时计算、强化学习、监督微调和知识蒸馏。许多方法将这些技术结合起来,以取得更好的效果。
本文探讨了近期在推理优化型LLM方面的研究进展,特别关注自DeepSeek R1发布以来出现的推理时计算扩展方法。

由于大多数读者可能已经熟悉LLM推理模型,我将简要定义:基于LLM的推理模型是一种旨在通过生成中间步骤或结构化的“思考”过程来解决多步骤问题的LLM。与仅输出最终答案的简单问答型LLM不同,推理模型要么明确展示其思考过程,要么在内部处理,这有助于它们在谜题、编程挑战和数学问题等复杂任务中表现更佳。

总的来说,提升推理能力主要有两种策略:(1)增加训练计算量,或(2)增加推理计算量,也称为推理时扩展或测试时扩展。(推理计算量是指在训练后,模型响应用户查询生成输出所需的处理能力。)

请注意,上面展示的图表似乎表明我们通过训练时计算量或测试时计算量来提升推理能力。然而,LLM通常旨在通过结合大量的训练时计算量(广泛的训练或微调,通常使用强化学习或专门数据)和增加的测试时计算量(允许模型“思考更长时间”或在推理过程中执行额外计算)来提升推理能力。

为了理解推理模型是如何被开发和改进的,我认为分别审视不同的技术仍然很有帮助。在我之前的文章《理解推理型大语言模型》(Understanding Reasoning LLMs)中,我将其细分为四个类别,如下图所示。

上图中的方法2-4通常会生成响应更长的模型,因为它们的输出包含了中间步骤和解释。由于推理成本与响应长度成正比(例如,响应长度翻倍,计算量也翻倍),这些训练方法本质上与推理扩展相关。然而,在本节关于推理时计算扩展的内容中,我特别关注那些明确调控生成token数量的技术,无论是通过额外的采样策略、自我修正机制,还是其他方法。
在本文中,我将重点介绍2025年1月22日DeepSeek R1发布之后,聚焦于推理时计算扩展的有趣新研究论文和模型发布。(最初,我打算在本文中涵盖所有类别的方法,但由于篇幅过长,我决定未来单独发布一篇关于训练时计算方法的文章。)

在我们深入探讨推理时计算扩展方法以及推理模型在不同领域的进展(重点关注推理时计算扩展类别)之前,请允许我先简要概述所有不同的类别。
1. 推理时计算扩展
该类别包括在推理时提升模型推理能力的方法,无需训练或修改底层模型权重。其核心思想是用增加的计算资源换取性能提升,这有助于通过思维链推理和各种采样程序等技术,甚至使固定模型变得更强大。
虽然我将推理时计算扩展单独归类以聚焦于本文讨论的方法,但需要指出的是,该技术可应用于任何大语言模型。例如,OpenAI 通过强化学习开发了 o1 模型,并额外利用了推理时计算扩展。有趣的是,正如我在上一篇关于推理模型的文章(理解推理型大语言模型)中讨论的那样,DeepSeek R1 论文明确将常见的推理时扩展方法(如基于过程奖励模型和蒙特卡洛树搜索的方法)归类为“不成功的尝试”。这表明 DeepSeek 并未显式使用这些技术,仅依赖 R1 模型自然生成更长回复的倾向——这种倾向相对于 V3 基础模型而言,本身就是一种隐式的推理时扩展。但由于显式推理时扩展通常部署在应用层而非大语言模型内部,DeepSeek 承认他们可以轻松将其整合到 R1 的部署或应用中。
2. 纯强化学习
该方法完全依赖强化学习来培养或提升推理能力。通常涉及使用数学或编程领域可验证的奖励信号训练模型。虽然强化学习能让模型发展出更具策略性的思维和自我改进能力,但也面临奖励篡改、训练不稳定和计算成本高昂等挑战。
3. 强化学习与监督微调
这种混合方法将强化学习与监督微调相结合,相比纯强化学习能实现更稳定且更具泛化性的改进。通常先使用高质量指令数据对模型进行监督微调训练,再通过强化学习进一步优化特定行为。
4. 监督微调与模型蒸馏
该方法通过在高品质标注数据集上进行指令微调来提升模型推理能力。若该高质量数据集由更大规模的大语言模型生成,则在大语言模型领域也常被称为“知识蒸馏”或简称为“蒸馏”。但需注意,这与传统深度学习中的知识蒸馏略有不同——后者通常不仅使用教师模型的输出(标签),还会利用其 logits 来训练更小的学生模型。
上一节已简要概述了推理时计算扩展。在讨论该类别的最新研究前,请允许我更详细地描述推理时扩展。
推理时扩展通过增加推理过程中的计算资源来提升大语言模型的推理能力。为何这能改善推理?一个简单的类比是:人类思考时间越长,给出的回答越好;同样,大语言模型也能通过鼓励生成过程中“多思考”的技术得到改进。
其中一种方法是提示工程,例如思维链提示,通过“逐步思考”等短语引导模型生成中间推理步骤。这能提升复杂问题的准确性,但对于简单事实查询则无必要。由于思维链提示会生成更多 token,实际上增加了推理成本。

另一种方法涉及投票和搜索策略,例如多数投票或束搜索,通过选择最佳输出来优化响应。

本文的其余部分将聚焦于推理时扩展类别中用于提升LLM推理能力的最新研究进展。让我先详细讨论一篇作为推理时扩展示例的论文。
那么,该类别中一篇有趣的最新研究论文是s1: 简单测试时扩展(2025年1月31日),它引入了所谓的“等待”令牌,这可以被视为前述“逐步思考”提示修改的更现代版本。
请注意,这涉及监督微调(SFT)来生成初始模型,因此并非纯粹的推理时扩展方法。但最终目标是通过推理时扩展主动控制推理行为;因此,我将这篇论文归入“1. 推理时计算扩展”类别。
简而言之,他们的方法分为两步:
-
创建一个包含1000个训练样本的精选SFT数据集,其中包含推理轨迹。
-
通过以下方式控制响应长度:
-
a) 附加“等待”令牌,使LLM生成更长的响应、自我验证并自我纠正,或
-
b) 通过添加思考结束令牌分隔符(“最终答案:”)来停止生成。他们将这种长度控制称为“预算强制”。

预算强制可以被视为一种顺序推理扩展技术,因为它仍然一次生成一个令牌(只是生成更多)。相比之下,我们有并行技术,如多数投票,它聚合多个独立的完成结果。

他们发现这种预算强制方法比我讨论过的其他推理扩展技术(如多数投票)更有效。如果说有什么可以批评或改进的地方,我希望看到更复杂的并行推理扩展方法的结果,比如束搜索、前瞻搜索,或者谷歌去年在《Scaling LLM Test-Time Compute Optimally Can Be More Effective Than Scaling Model Parameters》论文中描述的最佳计算最优搜索。甚至与经典的顺序方法(如思维链提示“一步步思考”)进行简单比较也行。
总之,这是一篇非常有趣的论文和方法!
PS:为什么用“Wait”标记? 我的猜测是研究人员受到了DeepSeek-R1论文中“顿悟时刻”图的启发,图中研究人员看到LLM产生了类似“Wait, wait. Wait. That’s an aha moment I can flag here.”的内容,这表明纯强化学习可以诱导LLM产生推理行为。
有趣的是,他们还尝试了其他标记,如“Hmm”,但发现“Wait”的表现略好。

由于推理模型研究领域这个月非常活跃,为了控制本文的合理篇幅,我需要相对简洁地总结其他论文。因此,以下按发表日期升序排列,简要总结其他与推理时计算扩展相关的有趣研究文章。
如前所述,并非所有这些文章都完全属于推理时计算扩展的范畴,因为其中一些还涉及特定的训练。然而,这些论文的共同点是,控制推理时计算是一种特定的作用机制。(我将在后续文章中介绍的许多蒸馏或SFT方法会导致更长的回复,这可以被视为推理时计算扩展的一种形式。但是,它们不会在推理过程中主动控制长度,这使得这些方法与此处涵盖的方法不同。)
📄 1月22日, Test-Time Preference Optimization: On-the-Fly Alignment via Iterative Textual Feedback , https://arxiv.org/abs/2501.12895
测试时偏好优化(TPO)是一个迭代过程,在推理过程中将LLM的输出与人类偏好对齐(这不会改变其底层模型权重)。在每次迭代中,模型:
-
为给定的提示生成多个回复。
-
使用奖励模型对回复进行评分,选择得分最高和最低的回复作为“首选”和“拒绝”回复。
-
提示模型比较并批评“首选”和“拒绝”回复。
-
通过将批评转化为文本建议来更新原始模型回复,从而优化输出。
通过迭代执行步骤1-4,模型优化其原始回复。

📄 1月30日,《思绪纷飞:论类o1大语言模型的“思考不足”现象》,https://arxiv.org/abs/2501.18585
研究人员探索了一种名为“思考不足”的现象,即推理模型频繁在推理路径之间切换,而不是完全专注于探索有前景的路径,这降低了问题解决的准确性。
为了解决这个“思考不足”的问题,他们引入了一种称为“思维切换惩罚”(TIP)的方法,该方法修改了思维切换令牌的logits,以阻止过早的推理路径转换。
他们的方法不需要模型微调,并且在多个具有挑战性的测试集上经验性地提高了准确性。

📄 1月31日,《用推理时计算换取对抗鲁棒性》,https://arxiv.org/abs/2501.18841
在许多情况下,增加推理时计算量可以提高推理大语言模型在降低成功攻击率方面的对抗鲁棒性。与对抗训练不同,这种方法不需要任何特殊训练,也不需要预先了解特定攻击类型。
然而,存在一些重要的例外情况。例如,在涉及策略模糊性或漏洞利用的场景中,改进效果有限。此外,由推理改进的鲁棒性提升可能会被新的攻击策略(如“少思考”和“极客狙击”)所削弱。
因此,尽管这些发现表明扩展推理时计算量可以提高大语言模型的安全性,但仅凭这一点并不能完全解决对抗鲁棒性问题。

📄 2月4日,CoAT:用于增强大语言模型推理的关联思维链框架,https://arxiv.org/abs/2502.02390
研究人员将经典的蒙特卡洛树搜索推理时扩展与一种“关联记忆”相结合,该记忆在探索推理路径期间充当大语言模型的知识库。利用这种所谓的关联记忆,大语言模型更容易考虑早期的推理路径,并在响应生成过程中使用动态包含的信息。

📄 2月6日,退一步,进两步:用于提升语言模型推理能力的自回溯机制,https://arxiv.org/abs/2502.0440
本文提出了一种自回溯机制,允许大语言模型通过在训练和推理过程中学习何时以及何处进行回溯来提高其推理能力。虽然训练涉及使用
其独特之处在于,这种探索无需依赖外部奖励模型(不同于本文“1. 推理时计算扩展方法”章节开头提到的基于过程奖励模型的搜索方法)。

我在此处添加这篇论文,是因为它重点聚焦于所提出的回溯推理时扩展方法——该方法通过动态调整搜索深度和广度来改进推理,而非从根本上改变训练范式(尽管仍需要使用
📄 2月7日,《Scaling up Test-Time Compute with Latent Reasoning: A Recurrent Depth Approach》,https://arxiv.org/abs/2502.05171
研究人员并未通过生成更多标记来改进推理,而是提出了一种模型,通过在潜在空间中迭代循环深度模块来扩展推理时计算。该模块的功能类似于RNN中的隐藏状态,使模型能够在无需生成更长标记输出的情况下优化推理。
然而,一个关键缺点在于缺乏显式的推理步骤——在我看来,这些步骤对于人类可解释性至关重要,也是思维链方法的主要优势之一。

📄 2月10日,《Can 1B LLM Surpass 405B LLM? Rethinking Compute-Optimal Test-Time Scaling》,https://arxiv.org/abs/2502.06703
许多推理时扩展技术依赖于采样,这需要过程奖励模型(PRM)来选择最佳方案。本文系统分析了推理时计算扩展如何与PRM及问题难度相互作用。
研究人员开发了一种计算最优的扩展策略,该策略能自适应地选择PRM、策略模型和任务复杂度。结果表明,采用正确的推理时扩展方法,一个1B参数的模型可以超越未使用推理时扩展的405B Llama 3模型。
同样,他们展示了7B模型在推理时扩展下如何超越DeepSeek-R1,同时保持更高的推理效率。
这些发现凸显了推理时扩展如何显著提升LLM性能——在合理的推理计算预算下,小型LLM可以超越规模大得多的模型。

📄 2月16日,《Learning to Reason from Feedback at Test-Time》,https://www.arxiv.org/abs/2502.12521
这篇论文较难归类为推理时方法或训练时方法,因为它在推理过程中优化LLM,改变其权重参数。
因此,这篇论文探讨了一种方法,让大型语言模型(LLM)在推理过程中从自身错误中学习,而无需将失败的尝试存储在提示中(这代价高昂)。与通常的通过将先前尝试添加到上下文来改进答案(顺序修订)或盲目生成新答案(并行采样)的方法不同,这种方法在推理时更新模型的权重。
为此,作者引入了 OpTune,这是一个小型、可训练的优化器,它根据模型在先前尝试中犯下的错误来更新模型权重。这意味着模型能够记住自己做错了什么,而无需将错误答案保留在提示/上下文中。
📄 2月18日,面向LLM推理与规划的推理时计算:基准测试与见解,https://www.arxiv.org/abs/2502.12521
这篇论文对各种推理时计算扩展技术在推理和规划任务上进行了基准测试,重点分析了它们在计算成本与性能之间的权衡。
作者评估了多种技术——例如思维链、思维树和作为规划的推理——涵盖了算术、逻辑、常识、算法推理和规划等十一个任务。
主要发现是,虽然扩展推理时计算可以改善推理,但没有一种技术能在所有任务上持续优于其他技术。

📄 2月19日,内部思维Transformer:利用动态深度扩展培养自适应内部思维,https://arxiv.org/abs/2502.13842
内部思维Transformer(ITT)在推理过程中动态分配更多计算资源。与标准基于Transformer的LLM中所有token使用固定深度(即使用相同层数)不同,ITT采用自适应token路由,为困难token分配更多计算资源。这些困难token会多次通过同一层以进行额外处理,从而增加了这些困难token的推理计算预算。

📄 2月20日,S*:面向代码生成的测试时扩展,https://arxiv.org/abs/2502.14382
推理时扩展可以通过并行扩展(生成多个答案)、顺序扩展(迭代改进答案)或两者结合来实现,正如2024年夏季的谷歌论文(《最优扩展LLM测试时计算可能比扩展模型参数更有效》)中所述。
S* 是一种专门为代码生成设计的测试时计算扩展方法,它改进了并行扩展(生成多个解决方案)和顺序扩展(迭代调试)。

该方法分两个阶段运行:
阶段1:生成
模型会生成多个代码解决方案,并利用问题提示中提供的执行结果和测试用例,迭代地优化这些方案。
可以将其想象成一场编程竞赛,模型提交解决方案、运行测试并修复错误:
- 模型生成多个候选解决方案。
- 每个解决方案都在公共测试用例(预定义的输入-输出对)上执行。
- 如果某个解决方案失败(输出错误或崩溃),模型会分析执行结果(错误、输出)并修改代码以改进它。
- 这个优化过程会持续迭代,直到模型找到能通过测试用例的解决方案。
例如, 假设要求模型实现一个函数 is_even(n),该函数对偶数返回 True,对奇数返回 False。
模型的第一次尝试可能是:
def is_even(n):
return n % 2 # ❌ 错误:应该是 `== 0`
模型用公共测试用例测试这个实现:
输入 期望输出 模型输出 状态
is_even(4) True False ❌ 失败
is_even(3) False True ❌ 失败
检查结果后,模型意识到 4 % 2 返回的是 0,而不是 True,因此它修改了函数:
def is_even(n):
return n % 2 == 0 # ✅ 已修正
现在函数通过了所有公共测试,调试阶段完成。
阶段 2:选择
一旦多个解决方案通过了公共测试,模型必须选择最佳的一个(如果可能)。在这里,S* 引入了自适应输入合成,以避免随机选择:
- 模型比较两个都通过了公共测试的解决方案。
- 它自问:“我能否生成一个输入,来揭示这两个解决方案之间的差异?”
- 它创建一个新的测试输入,并在该输入上运行两个解决方案。
- 如果一个解决方案产生正确输出而另一个失败,模型会选择更好的那个。
- 如果两个解决方案行为完全相同,模型会随机选择一个。
例如, 考虑 is_perfect_square(n) 的两个不同实现:
import math
def is_perfect_square_A(n):
return math.isqrt(n) ** 2 == n
def is_perfect_square_B(n):
return math.sqrt(n).is_integer()
两者都通过了针对简单示例提供的测试用例:
n = 25
print(is_perfect_square_A(n)) # ✅ True (正确)
print(is_perfect_square_B(n)) # ✅ True (正确)
但当 LLM 生成边缘情况时,我们可以看到其中一个失败,因此模型在这种情况下会选择解决方案 A:
n = 10**16 + 1
print(is_perfect_square_A(n)) # ✅ False (正确)
print(is_perfect_square_B(n)) # ❌ True (不正确)
📄 2月25日,思维草稿:通过更少写作实现更快思考,https://arxiv.org/abs/2502.18600
研究人员观察到,虽然推理型 LLM 通常会生成冗长的逐步解释,但人类通常依赖只捕捉必要信息的简洁草稿。
受此启发,他们提出了思维草稿(CoD),这是一种通过生成最小但信息丰富的中间步骤来减少冗长性的提示策略。因此,从某种意义上说,这是一种推理时扩展的方法,通过生成更少的 token 来提高推理时扩展的效率。
从结果来看,CoD(思维草稿)几乎与标准提示一样简洁,但准确度却与CoT(思维链)提示相当。正如我之前提到的,在我看来,推理模型的一个优势在于用户可以通过阅读推理轨迹来学习,并更好地评估/信任响应。CoD在一定程度上削弱了这一优势。然而,在不需要冗长中间步骤的情况下,它可能非常有用,因为它能在保持CoT准确性的同时加快生成速度。
📄 3月6日,专用反馈与编辑模型赋能开放领域通用任务的推理时扩展,https://arxiv.org/abs/2503.04378
许多推理时扩展技术依赖于具有可验证答案的任务(如可检查的数学和代码),这使得它们难以应用于写作和通用问题解决等开放领域任务。
为了解决这一关于可验证答案的限制,研究人员开发了一个系统:一个模型生成初始响应,另一个模型提供反馈(“反馈模型”),第三个模型根据反馈优化响应(“编辑模型”)。
他们使用一个包含大量人工标注响应和反馈的数据集来训练这些专门的“反馈”和“编辑”模型。这些模型随后通过在推理时生成更好的反馈并进行更有效的编辑,帮助改进响应。

推理时计算扩展已成为今年最热门的研究课题之一,旨在提升大型语言模型的推理能力,而无需修改模型权重。
我上面总结的众多技术,从简单的基于Token的干预(如“Wait” Token),到复杂的搜索和优化策略(如测试时偏好优化和关联思维链),不一而足。
从宏观层面看,一个反复出现的主题是:在推理时增加计算量,即使相对较小的模型也能(在推理基准上)相比标准方法取得显著改进。
这表明,推理策略有助于缩小较小、更具成本效益的模型与较大模型之间的性能差距。
成本问题
需要注意的是,推理时扩展会增加推理成本。因此,是使用一个经过大量推理扩展的小模型,还是训练一个更大的模型并在使用时不进行或较少进行推理扩展,这是一个需要根据模型使用频率来计算的数学问题。
例如,o1模型使用了大量的推理时扩展,但其实际成本仍然略低于可能更大的、可能不使用推理时扩展的GPT-4.5模型。

(GPT-4.5在采用o1或o3风格的推理时扩展后表现如何,将是一个有趣的看点。)
哪种技术?
然而,推理时计算扩展并非万能灵药。尽管蒙特卡洛树搜索、自回溯和动态深度扩展等方法能显著提升推理性能,但其效果仍取决于具体任务与难度。正如早期某篇论文所示,没有任何一种推理时计算扩展技术能在所有任务中表现最佳。
此外,许多方法以牺牲响应延迟为代价换取推理能力提升,而缓慢的响应可能令部分用户感到困扰。例如,处理简单任务时,我通常会从o1切换至GPT4o以获得更快的响应速度。
未来展望
展望未来,我认为今年将涌现大量围绕“通过推理时计算扩展实现推理”两大分支的研究:
- 纯粹聚焦于开发登顶基准测试的最佳模型。
- 致力于平衡不同推理任务的成本与性能权衡。
无论如何,推理时计算扩展的优势在于:它可应用于任何现有大语言模型,使其在特定任务中表现更优。
按需思考
行业层面一个有趣的趋势,我称之为“按需思考”。自DeepSeek R1发布后,各公司似乎竞相为其产品添加推理能力。
值得关注的是,多数大语言模型提供商已开始允许用户启用或禁用“思考”功能。其机制虽未公开,但很可能是同一模型通过降低推理时计算扩展强度实现。
例如,Claude 3.7 Sonnet与Grok 3现已提供可启用的“思考”模式,而OpenAI要求用户在模型间切换——如使用GPT4o/4.5与o1/o3-mini来调用显式推理模型。不过OpenAI首席执行官表示,GPT4.5很可能是其最后一款未明确配备推理或“思考”模式的模型。在开源领域,连IBM也为Granite模型添加了显式“思考”开关。
总体而言,无论是通过推理时还是训练时计算扩展来增强推理能力,这一趋势都是2025年大语言模型的重要进步。
我预计,推理将不再被视为可选或特殊功能,而将成为标准配置——正如经过指令微调或RLHF调优的模型如今已取代原始预训练模型成为常态。
如前所述,本文因推理研究异常活跃而篇幅较长,故仅聚焦于推理时计算长度。在后续文章中,我将全面探讨训练时计算扩展的推理方法。
本杂志为个人兴趣项目。若您愿支持我作为独立研究员的工作,请考虑购买我的著作《构建大语言模型(从零开始)》(Build a Large Language Model (From Scratch) book),或订阅付费会员。
如果你读过这本书,并且有几分钟空闲时间,我将非常感激你留下简短的评价。这对我们作者来说帮助很大!
你的支持意义重大!非常感谢!