测试时计算与推理扩展
目录
1. 概述
传统深度学习遵循”训练时扩展、推理时固定”的模式:模型参数量和训练数据决定能力,推理时一次前向传播给出答案。测试时计算(Test-time Compute)反其道而行:在推理阶段投入更多计算(多次采样、搜索、验证),显著提升模型在困难任务上的表现。
这一范式因 OpenAI o1 和 DeepSeek-R1 的成功而成为 2024-2025 年最活跃的研究方向。核心洞察是:对于推理密集型任务,增加推理计算量可以像增加训练计算量一样提升性能。
测试时计算的主要方法:
\[\text{多次采样} \rightarrow \text{验证/选择} \rightarrow \text{结构化搜索} \rightarrow \text{学习式推理策略}\]与 reasoning-models.md 侧重训练侧(RL 训练推理模型)不同,本篇聚焦推理时的计算扩展机制,二者互补。
2. 思维链与自洽性
2.1 Chain-of-Thought
Chain-of-Thought(CoT, Wei et al., 2022)让模型在给出最终答案前生成中间推理步骤:
问题:一个长方形长 8 米,宽 5 米,面积是多少?
思考:面积 = 长 × 宽 = 8 × 5 = 40 平方米。
答案:40 平方米。
CoT 将复杂问题分解为子步骤,每步只需简单推理。它不改变模型权重,而是通过提示格式引导模型分配更多计算到推理上。
2.2 Self-Consistency
Self-Consistency(Wang et al., 2022)对同一问题采样多条 CoT 推理路径,取多数投票答案:
- 用温度 $T > 0$ 独立采样 $N$ 条推理链。
- 每条链独立得出最终答案。
- 选择出现次数最多的答案。
Self-Consistency 是最简单有效的测试时计算方法,在数学推理上能带来 10-20% 的准确率提升。其有效性建立在”不同推理路径出错方式不同,但正确答案收敛”的假设上。
3. Best-of-N 与验证器
3.1 Best-of-N
Best-of-N 生成 $N$ 个候选回答,用某种评分函数选择最优:
- 多数投票:选最常见答案(即 Self-Consistency)。
- 奖励模型打分:用训练好的奖励模型对每个候选评分,选最高分。
- 规则验证:代码任务运行测试用例,数学任务检查答案数值。
- LLM-as-Judge:用另一个(通常更强的)LLM 评判候选质量。
Best-of-N 的期望收益随 $N$ 增长但存在边际递减:
\[P(\text{正确}) \approx 1 - (1-p)^N\]其中 $p$ 是单次采样正确的概率。当 $p=0.5$、$N=10$ 时,Best-of-N 正确率可达 99.9%。
3.2 验证器(Verifier)
验证器是一个独立模型,判断候选解答是否正确。训练流程:
- 用生成模型对训练问题采样多条解答。
- 标注每条解答正确与否(运行测试或人工标注)。
- 训练验证器模型预测解答的正确性。
- 推理时用验证器从 $N$ 个候选中选最优。
验证器可分为:
- 结果验证器(Outcome Verifier, OV):只判断最终答案是否正确。
- 过程验证器(Process Verifier, PRM):对推理每一步打分,提供更细粒度的信号。
过程奖励模型(Process Reward Model, PRM, Lightman et al., 2023)对每个推理步骤评分,能检测中间错误并引导搜索,在数学推理上显著优于结果验证。
3.3 可验证奖励(RLVR)
代码和数学任务天然可验证(测试通过/答案匹配),可验证奖励强化学习(RLVR)将验证信号用于训练时和测试时:
- 训练时:用验证结果作为 RL 奖励(见
training/reinforcement-learning.md中 GRPO/RLVR)。 - 测试时:用验证器筛选候选,或在搜索中剪枝错误路径。
4. 树搜索与图搜索
4.1 Tree of Thoughts
Tree of Thoughts(ToT, Yao et al., 2023)将推理过程组织为树:
- 分解:将问题分解为多个思考阶段。
- 生成:每个状态生成多个候选”思考”(下一步推理)。
- 评估:用启发式方法(自评、规则、验证器)评估每个候选。
- 搜索:用 BFS 或 DFS 在树中搜索最优路径,剪枝低分支。
ToT 允许回溯——当某条路径走不通时,模型可以回到分叉点尝试其他方案,这是线性 CoT 无法做到的。
4.2 Graph of Thoughts
Graph of Thoughts(GoT, Besta et al., 2023)将推理结构从树扩展为有向图:
- 不同推理分支可以聚合(汇总多条线索)。
- 思考可以被细化和循环改进。
- 图结构支持更复杂的推理拓扑。
4.3 搜索策略
| 策略 | 特点 |
|---|---|
| 贪心解码 | 每步选概率最高,无回溯 |
| Beam Search | 维护 $k$ 条最优路径 |
| DFS + 回溯 | 深度探索,失败时回退 |
| BFS + 剪枝 | 层展探索,剪掉低分支 |
| MCTS | 蒙特卡洛树搜索,平衡探索与利用 |
| Lookahead Search | 向前模拟多步评估长期后果 |
AlphaProof/AlphaGeometry(DeepMind, 2024)将 MCTS 与 LLM 结合,在奥林匹克数学题上达到金牌水平。
5. 搜索增强推理
5.1 外部搜索
LLM 可以在推理过程中调用搜索引擎或知识库:
- ReAct:交替进行推理和行动(搜索/工具调用),观察结果后继续推理。
- Self-Ask:模型主动提出子问题并搜索答案,再组合成最终回答。
- Toolformer:模型学习在推理中自行决定何时调用工具。
外部搜索将模型的知识边界扩展到实时信息和海量文档。
5.2 代码执行增强推理
对于数学和逻辑问题,让模型生成并执行代码来验证或计算:
- PAL(Program-Aided Language Models):模型生成 Python 代码来执行计算,而非在文本中心算。
- Tool-integrated Reasoning:推理过程中调用计算器、解释器、定理证明器。
- 代码执行避免了 LLM 的算术错误,将”计算”外包给确定性工具。
5.3 多 Agent 协作推理
多个 Agent 角色分工协作解决复杂问题:
- 辩论(Debate):多个 Agent 从不同角度论证,裁判模型综合判断。
- 角色分工:规划者分解任务,执行者解决子问题,审查者验证结果。
- Society of Minds:大量专家 Agent 并行处理,聚合结果。
6. 推理时 Scaling Law
6.1 推理计算的缩放
Snell et al.(2024)系统研究了测试时计算的缩放规律:
- 在推理任务上,增加测试时计算量可以像增加模型参数量一样提升性能。
- 最优策略取决于任务难度:简单题用少计算,困难题投入更多搜索和验证。
- 存在”推理时计算最优分配”:将更多计算分配给更难的问题。
6.2 计算-性能曲线
测试时性能随计算量的增长模式:
\[\text{Accuracy} \propto (\text{compute})^{-\alpha}\]其中 $\alpha$ 取决于任务类型和方法。Best-of-N 增长慢但稳定,搜索方法增长快但需要良好的验证器。
6.3 训练时 vs 推理时缩放
Wu et al.(2024)对比了两种缩放策略:
- 训练时缩放:更大模型 + 更多数据,所有查询共享计算。
- 推理时缩放:标准模型 + 更多推理计算,按查询难度分配。
推理时缩放的优势:
- 可按问题难度自适应分配计算,避免简单问题浪费。
- 可以用较小模型 + 搜索达到大模型的效果。
- 搜索和验证策略可以快速迭代,无需重新训练。
劣势:
- 推理成本和延迟增加。
- 需要有效的验证器或搜索启发式。
- 对非推理任务(如简单聊天)收益有限。
6.4 自适应计算
自适应测试时计算根据问题复杂度动态决定投入多少计算:
- 早停:模型在高置信度时提前停止推理。
- 难度路由:简单问题用贪心解码,困难问题启动树搜索。
- 元推理(Meta-Reasoning):模型自身判断是否需要进一步思考。
- 预算控制:设定 Token 或时间预算,动态分配。
7. 实践建议
7.1 方法选型
- 简单事实性问答:直接回答,无需额外计算。
- 数学/逻辑推理:CoT + Self-Consistency($N=5-10$),成本低收益高。
- 代码生成:Best-of-N + 测试用例验证,性价比最高。
- 高难度竞赛题:ToT/MCTS + PRM 验证器 + 代码执行。
- 需要实时知识:ReAct + 搜索引擎。
7.2 工程建议
- 设置计算预算上限(最大 Token 数/最大 API 调用次数),防止失控推理。
- 对 Best-of-N 的候选做去重,避免近似重复浪费计算。
- 验证器质量是搜索方法的天花板——投入在验证器上的回报最高。
- 批量采样和并行验证能有效降低延迟。
- 缓存重复子问题的结果(如不同路径共享的中间结论)。
7.3 评估建议
- 报告”计算量-性能”曲线而非单点性能,说明每点的 Token 成本。
- 区分训练时计算和推理时计算的总成本。
- 评估不同难度问题上的收益分布,确认方法不是只在简单题上有效。
- 与增加模型规模的 baseline 做成本效益对比。
8. 参考文献
[1] J. Wei, X. Wang, D. Schuurmans, et al., Chain-of-Thought Prompting Elicits Reasoning in Large Language Models, NeurIPS, 2022.
[2] X. Wang, J. Wei, D. Schuurmans, et al., Self-Consistency Improves Chain of Thought Reasoning in Language Models, ICLR, 2023.
[3] S. Yao, D. Yu, J. Zhao, et al., Tree of Thoughts: Deliberate Problem Solving with Large Language Models, NeurIPS, 2023.
[4] H. Lightman, V. Kosaraju, Y. Burda, et al., Let’s Verify Step by Step, ICLR, 2024.
[5] M. Besta, N. Blach, A. Kubicek, et al., Graph of Thoughts: Solving Elaborate Problems with Large Language Models, AAAI, 2024.
[6] C. Snell, J. D. Swett, I. G. Xu, et al., Scaling LLM Test-Time Compute Optimally Can Be More Effective Than Scaling Model Parameters, arXiv preprint, 2024.
[7] Y. Wu, S. Zhao, H. Liu, et al., Inference-Time Scaling for Generalist Reward Modeling, arXiv preprint, 2024.
[8] G. Mialon, R. Fourrier, C. Wolf, et al., Augmented Language Models: A Survey, TMLR, 2023.
[9] T. Brown, B. Mann, N. Ryder, et al., Language Models Are Few-Shot Learners, NeurIPS, 2020.
[10] DeepMind, AlphaProof and AlphaGeometry, 2024.
留下评论