Skip to content

大模型③:推理与规划

核心路径 — 本文覆盖 Week 10 讲座内容

核心观点:LLM 的推理能力并非固定上限,而是 可以通过测试时计算扩展(Test-time Compute Scaling) 激活和放大的。从 Chain-of-Thought 到 Tree-of-Thought 到 MCTS 搜索,投入更多测试时计算可系统性地提升推理质量,这一发现重塑了我们对 LLM 能力的认知边界。


目录


1. 推理能力的涌现与激活

核心观点

[LLM 的推理能力不是"有或无"的二元状态,而是可以通过提示策略和计算策略激活的连续能力]

传统观点认为 LLM 只是"随机鹦鹉"——缺乏真正的推理能力。但 Chain-of-Thought 的发现颠覆了这一认知:只需在提示中展示中间推理步骤,LLM 就可以解决复杂的多步推理问题。这一现象表明 LLM 在预训练阶段已经隐式学习了推理能力,只是需要合适的"激发"方式。

推理任务图谱

任务类型代表任务难度依赖的能力
算术推理GSM8K, MATH多步计算、符号操作
代码推理HumanEval, Codeforces逻辑组合、精确语义
逻辑推理ProofWriter, FOLIO演绎/归纳/溯因
常识推理CSQA, WinoGrande世界知识、直觉
多跳问答HotpotQA, MuSiQue信息检索 + 推理组合
规划Blocksworld, NL4OPT搜索、回溯、约束满足

关键洞察:推理 vs 记忆

LLM 在训练数据中见过的"记忆型"问题上表现优异,但在需要组合泛化的新问题上迅速退化。推理的真正挑战在于:模型能否将已学知识组合应用于未见过的情境。


2. 测试时计算扩展(Test-time Compute Scaling)

核心观点

[推理能力与测试时投入的计算量呈正相关——这是继训练 Scaling Laws 之后最重要的发现]

在 GPT-4 等模型上观察到一个关键现象:训练 Scaling Laws 趋于饱和后,测试时计算扩展成为提升性能的新维度。即:与其无休止地扩大模型规模,不如在推理阶段投入更多计算来获得更好结果。

扩展维度传统方法现代方法
训练阶段更大的模型、更多数据最优 Chinchilla 分配
测试阶段单次前向传播多次采样 + 搜索 + 验证

测试时计算扩展的三种范式

Level 1: 单次推理
  Prompt → Answer(标准做法)
  
Level 2: 采样 + 聚合
  Prompt → [Answer₁, Answer₂, ..., Answerₙ] → Majority Vote
  
Level 3: 搜索 + 验证
  Prompt → [Path₁, Path₂, ..., Pathₙ] → Evaluate → Backtrack → Best Path

Level 3 的方法(如 ToT、MCTS)本质上是在 思维空间(Thought Space) 中进行搜索,每次评估和回溯都消耗额外计算,但可以带来显著的质量提升。[[04-01-基础模型]]中讨论的 Scaling Laws 主要关注训练阶段,而测试时计算扩展关注的是推理阶段。


3. Chain-of-Thought(思维链)

核心观点

[CoT 是推理增强方法的基石——通过显式展示中间步骤激活 LLM 的隐式推理能力]

Chain-of-Thought(Wei et al., NeurIPS 2022)的核心思想极其简单:让模型一步一步思考,而不是直接给出答案。

方法

python
# Zero-shot CoT
prompt = """
Q: 小明有 3 个苹果,小红给了小明 5 个苹果,
然后小明吃了 2 个。小明现在有多少个苹果?
A: 让我们一步一步思考。
"""

# Few-shot CoT(在示例中包含推理步骤)
prompt = """
Q: 商店里原来有 10 个西瓜,卖了 3 个,又进货 5 个。现在有几个?
A: 原来有 10 个。卖了 3 个,所以剩下 10 - 3 = 7 个。又进货 5 个,所以现在有 7 + 5 = 12 个。答案是 12。

Q: 小明有 3 个苹果,小红给了小明 5 个苹果,然后小明吃了 2 个。小明现在有多少个苹果?
A: 让我们一步一步思考。
"""

效果

数据集标准提示CoT 提示提升
GSM8K(小学数学)18%58%+40%
GSM8K (PaLM 540B)58%92%+34%
SVAMP(算术推理)68%80%+12%
MAWPS(算术题)84%90%+6%

关键发现

  1. 规模依赖性:CoT 的收益随模型规模增大而增大。小模型(< 10B)上 CoT 效果有限甚至为负
  2. 提示敏感性:CoT 对提示措辞敏感,不同的推理示例会显著影响结果
  3. 任务通用性:在算术、逻辑、符号推理任务上效果显著,对常识推理效果有限

4. Self-Consistency(自一致性)

核心观点

[通过多次采样 + 多数投票,以计算换精度——最简洁有效的测试时计算扩展策略]

Self-Consistency(Wang et al., ICLR 2023)观察到一个简单现象:如果多次运行 CoT,模型每次可能走不同的推理路径,但正确答案往往是最一致的。

方法

Step 1: 使用 CoT 采样 n 次推理路径(n = 5~40)
Step 2: 对每条路径的最终答案进行聚合
Step 3: 选择最一致的答案(多数投票或加权投票)

效果

数据集CoT (单次)Self-Consistency (n=40)提升
GSM8K58%74%+16%
MATH51%57%+6%

与 CoT 的关系

Self-Consistency 建立在 CoT 之上,是 CoT 的自然扩展:

标准 → CoT → Self-Consistency → ToT
(单次)   (单次推理链)  (多次采样+投票)  (搜索引导推理)
  • 优势:实现简单,与任何 CoT 变体兼容,不需要额外训练
  • 代价:测试时计算量增加 n 倍(n 为采样次数)

5. Tree-of-Thought(思维树)

核心观点

[将推理从"一条链"升级为"一棵树"——允许探索、评估和回溯,将搜索算法与 LLM 推理结合]

Tree-of-Thought(Yao et al., 2023)将 CoT 的单链推理推广为树状搜索。在每个推理步骤,LLM 生成多个可能的"下一个想法",然后评估每个想法对最终答案的贡献,启动搜索过程。

算法框架

ToT(problem, branching_factor, search_strategy):
    root = initial_thought(problem)
    frontier = [root]
    
    while frontier not empty:
        node = select_node(frontier, search_strategy)  # BFS/DFS/Heuristic
        
        # Step 1: Generate possible next thoughts
        candidates = llm_generate(node, n=branching_factor)
        
        # Step 2: Evaluate each candidate
        for candidate in candidates:
            score = llm_evaluate(candidate)  # 自我评估神经
            
            if score > threshold:
                if is_solution(candidate):
                    return candidate
                frontier.append(candidate)
                
                # Step 3: Backtracking
                if need_backtrack(candidate):
                    continue  # 剪枝

搜索策略

搜索策略选择机制适用场景计算开销
BFS(广度优先)所有前沿节点等权重深度确定的问题(如数学证明)
DFS(深度优先)探索最深节点路径探索(如游戏策略)
MCTS(蒙特卡洛树搜索)UCB 平衡探索-利用组合优化、博弈最高

效果

任务CoTToT (BFS)ToT (DFS)
24点游戏7.3%74%
创意写作(GPT-4 评估)6.19/107.56/107.62/10
数独填字78%82%

关键贡献

  1. 模块化分解:将推理分离为"思考"(thought)和"评估"(evaluation)两个独立模块
  2. 搜索-推理融合:将经典 AI 搜索算法(BFS/DFS/MCTS)与 LLM 生成能力结合
  3. 可观察的推理过程:相比 CoT 的黑箱推理,ToT 的每一步都可以被检查和干预

6. 搜索引导推理(Search-Guided Reasoning)

核心观点

[当推理目标可以被验证时,搜索算法的引入可以显著提升 LLM 的问题求解能力]

ToT 是搜索引导推理的典型代表,但搜索与 LLM 的结合远不止于此。MCTS(Monte Carlo Tree Search)尤其值得关注,因为它能将 LLM 的概率输出转化为结构化的搜索决策。

MCTS + LLM 推理

MCTS(problem):
    root = State()
    for _ in range(num_simulations):
        node = SELECT(root)           # UCB 公式选择
        reward, next_state = LLM_SIMULATE(node)  # LLM 扩展和模拟
        BACKPROPAGATE(node, reward)    # 反向传播更新
    
    best_action = CHOOSE_BEST(root)    # 选择最优路径

MCTS 的关键优势:不需要专门的评估函数——LLM 本身可以同时充当生成器、评估器和模拟器。

搜索策略对比总表

方法核心技术计算开销适用场景是否需要验证器
CoT单条推理链 + 中间步骤低 (1×)多步推理、算术
Self-Consistency多次采样 + 多数投票中 (5-40×)任意 CoT 适用任务
ToT (BFS)思维树 + 广度搜索高 (10-100×)深度确定的组合问题
ToT (DFS)思维树 + 深度搜索中 (5-50×)路径探索类问题
MCTS蒙特卡洛树搜索 + UCB最高 (50-1000×)博弈、组合优化否(可用自评估)

路径选择建议:对简单推理任务使用 CoT;对需要可靠性的任务使用 Self-Consistency;对需要搜索和规划的任务使用 ToT 或 MCTS。


7. 规划作为推理(Planning as Reasoning)

核心观点

[将真实世界交互纳入推理循环——思考与行动应该协同而非分离]

ReAct(推理 + 行动)

ReAct(Yao et al., ICLR 2023)将推理链(Thought)与行动(Action)和观察(Observation)交替组织,形成 Thought → Action → Observation → Thought 的闭环。

问题:今天旧金山的天气如何?需要带伞吗?

Thought 1: 我需要查询旧金山今天的天气。我先查一下天气API。
Action 1: call weather_api(city="San Francisco")
Observation 1: {"temp": 15°C, "condition": "rain", "humidity": 85%}

Thought 2: 旧金山今天15°C,有雨,湿度85%。应该带伞。
Action 2: answer(需要带伞。旧金山今天15°C,有雨。)

ReAct 的关键组件

组件功能LLM 角色
Thought推理当前状态和下一步计划推理引擎
Action调用工具/API/环境交互决策者
Observation感知环境反馈信息接收者
记忆维护历史轨迹上下文管理器

SayCan(机器人规划)

SayCan(Ahn et al., 2023)将 LLM 推理落地到机器人规划中:

  1. Say(语言层面):LLM 将自然语言指令分解为子任务序列
  2. Can(物理层面):价值函数评估每个子任务的可行性
  3. 通过 LLM 的能力 + 价值函数的约束,生成既语义合理又可物理执行的规划

SayCan 的关键洞察:LLM 知道"该做什么",价值函数知道"能做什么",两者结合才能产生真正可执行的规划。

Tool Use(工具使用)

能力方法代表系统
工具调用Function CallingGPT-4, Claude
工具选择启发式/学习式Toolformer, Gorilla
工具链编排动态规划ReAct, AutoGPT

工具使用将 LLM 的能力边界从"语言模型"扩展为"行动系统"——LLM 不再只是回答问题,而是可以主动调用外部工具完成复杂任务。[[04-02-多模态大模型]]中讨论的视觉工具也是如此,模型通过调用视觉编码器实现图文理解。


8. 推理方法的协同与选择

核心观点

[不同推理方法不是互斥的,而是可以组合的——最强大的系统往往结合多种推理策略]

方法组合示例

AlphaGo 风格推理 (MCTS + LLM):
    1. CoT 生成候选步骤
    2. Self-Consistency 评估每条路径质量
    3. MCTS 搜索最优路径
    4. ReAct 执行最终决策

效果:在数学证明、逻辑推理任务上比单一 CoT 提升 20-40%

选择框架

需要推理的问题

    ├─ 问题有明确可验证的答案?
    │   ├─ 是 → Self-Consistency(高可靠性)
    │   └─ 否 → CoT(开放性)或 ToT(需要搜索)

    ├─ 需要与实际环境交互?
    │   ├─ 是 → ReAct(推理+行动循环)
    │   └─ 否 → 内部推理方法

    ├─ 问题需要规划多步策略?
    │   ├─ 是 → ToT / MCTS 搜索引导推理
    │   └─ 否 → CoT 单链推理

    └─ 计算资源充足?
        ├─ 是 → 使用高级方法(ToT/MCTS)
        └─ 否 → 使用简单方法(CoT)

关键发现汇总

核心结论

  1. 推理能力是可激发的:LLM 在预训练中已隐式学习了推理能力,CoT 等提示策略可以将其激活
  2. 测试时计算扩展是有效的:在训练 Scaling Laws 趋缓的背景下,测试时计算扩展成为提升性能的新维度
  3. 搜索与推理的融合是方向:ToT 和 MCTS 等搜索引导推理代表了 LLM 推理能力的上限
  4. 规划是推理的延拓:ReAct 和 SayCan 将推理从"思考"扩展到"思考+行动",实现了 LLM 与现实世界的交互

开放挑战

  • 计算效率:MCTS 等搜索方法计算开销巨大,如何在质量和效率之间取得平衡?
  • 评估机制:LLM 自我评估的可靠性如何?是否存在校准偏差?
  • 可靠性保证:搜索引导推理是否真正提升了可靠性,还是只是看似更有条理?
  • 与训练融合:能否将测试时的搜索策略融入训练阶段(如 Q*、STaR)?

延伸阅读

  • [[Chain-of-Thought]] — 原始论文
  • [[Tree-of-Thought]] — 思维树搜索
  • [[ReAct]] — 推理+行动协同
  • [[04-01-基础模型]] — 预训练与 Scaling Laws
  • [[04-02-多模态大模型]] — 多模态推理基础

[[MOC-如何AI一切|🗺️ 返回内容地图]]

基于 MIT MAS.S60 How to AI (Almost) Anything 翻译改编