为什么 MCTS 在 LLM 推理中失败了?

问题背景

MCTS(Monte Carlo Tree Search,蒙特卡洛树搜索)在 AlphaGo 中取得了惊人成功,是强化学习中经典的搜索算法。2024 年初,扩展到 LLM 推理的 Tree of Thoughts(ToT)和 Graph of Thoughts(GoT)都借鉴了 MCTS 的思想——通过搜索扩展推理路径。

但在 2024-2025 年的推理模型(DeepSeek-R1、Kimi k1.5、OpenAI o1/o3)中,没有一家采用 MCTS 作为核心推理机制。所有成功的推理模型都采用了**让模型自己在一次前向中生成完整 CoT(线性化搜索)**的方式,而非显式的树搜索。

为什么 MCTS 失败了?

核心原因

1. 问题结构不匹配

MCTS 成功的前提是:

  • 动作空间小(如围棋 19×19 盘面)、状态评估快(价值网络一次前向)
  • 终端状态可验证(胜负明确)
  • 中间状态有意义(可以回退到之前的状态继续搜索)

LLM 推理不具备这些条件:

  • 动作空间巨大(每个 token 有 ~100K 候选,每个推理步骤有多种文本表达)
  • 状态难以定义(“当前推理到哪了”不像棋盘那样有明确的状态表示)
  • 回退无意义:在文本生成中”回退到上一步的推理”不等于”回到上一个状态”,因为生成过程是自回归依赖的

2. Token 级别的计算成本

MCTS 需要大量模拟 rollout(从中间状态采样到底):

  • 围棋中 rollout 很快(快速策略网络 + 终端判断)
  • LLM 中一个 rollout 涉及完整的自回归生成(可能数千 token),每次 rollout 的成本极高
  • MCTS 的搜索宽度和深度直接受限于 LLM 推理的成本和延迟

3. 连贯性的丧失

  • 围棋的动作在语义上是独立的(下在哪个位置)
  • 文本推理的每个 token 都有长程语义依赖
  • MCTS 在不同分支跳来跳去会破坏推理的语义连贯性——模型在不同分支之间切换时容易产生不一致

4. “好推理”难以在中间评估

MCTS 需要价值函数 V(s) 对中间状态打分:

  • 围棋中有明确的优势判断(当前局面谁好)
  • 推理的中间步骤很难判断”好不好”——一个看似错误的中间步骤可能导致正确结论,反过来也可能
  • DeepSeek-R1 和 Kimi k1.5 都选择只在最终答案上给予奖励,因为中间步骤的监督信号不可靠

5. 自验证替代了搜索

最终成功的推理模型采用了一个更简单的策略:让模型自己生成一个完整的推理链,然后让模型自己验证。这比显式树搜索更有效,因为:

  • 模型在单一连贯的上下文中进行推理和验证,保持了语义一致性
  • 自验证(self-verification)是 emergent 行为(R1-Zero 中涌现了 aha moment 和 self-reflection)
  • 成本远低于多分支搜索

一个框架性解释

可以将问题这样理解:

  • MCTS 适用于”外部搜索”(搜索空间在模型外部,如围棋盘)
  • LLM 推理需要的是”内部搜索”(搜索空间在模型的 token 分布中,隐式地进行)
  • LLM 的 chain-of-thought 本质上就是将隐式搜索线性化——模型在思考过程中已经在进行”隐式 beam search”,只是这个过程被压缩进了 token-by-token 的自回归生成中
  • 显式 MCTS 试图重新外部化这个已经内部化的搜索过程,引入的额外开销远大于收益

从失败中得到的洞察

MCTS 在 LLM 推理中的失败并不是搜索本身的失败——它告诉我们:

  1. LLM 的内部机制已经是隐式搜索:Transformer 的前向过程本质上在做某种形式的隐式检索和推理,显式搜索可能是在”重复劳动”
  2. 让模型学会自己思考 > 为模型设计搜索策略:这是 DeepSeek-R1 和 o1 的核心哲学
  3. 不要将经典 AI 的方法论直接移植到 LLM:LLM 有自己的动力学,需要对问题和方法进行重新理解

与已有 Wiki 的连接