为什么需要推理结构
对简单问题,模型直接给答案就够了;对数学、逻辑、多跳问答等复杂问题,一步到位的生成容易跳步、算错或遗漏约束。把推理过程展开,让模型先写中间步骤再给结论,通常能显著提高正确率。
这类方法不改变模型参数,而是在推理时组织生成过程。区别在于:推理过程是线性的一条链、一棵可回溯的树,还是一张可合并的图。
思维链
思维链(Chain of Thought, CoT)让模型在给出答案前,先写出逐步推理:
问题:小明有 5 个苹果,又买了 3 袋,每袋 4 个,他共有多少个?推理:原来有 5 个;3 袋每袋 4 个,共 3×4=12 个;合计 5+12=17 个。答案:17Few-shot CoT
在提示中给出几个“问题—推理过程—答案”的示例,模型会模仿示例的推理格式。示例通常包含算术、常识或逻辑推理步骤。
Zero-shot CoT
不提供示例,只在问题后加一句:
让我们一步一步地思考。模型就会自行展开推理。它实现简单,但生成的步骤可能冗余或偏离方向。
Auto-CoT
零样本 CoT 的中间步骤可能出错。Auto-CoT 先对问题聚类,在每个簇中选代表性问题,用零样本 CoT 生成推理链,再过滤或修正,作为少样本示例。这样既能自动构造示例,又能覆盖不同类型的任务。
自一致性
同一个问题采样多条推理链,最后对答案做多数投票。不同推理路径可能在不同位置出错,但正确答案往往在多数路径中一致出现。自一致性用更多的推理计算换取稳定性,适合答案可比较的封闭任务。
思维树
思维链本质上是一条贪心路径:每一步只保留当前生成的一个想法,走错也很难回头。思维树(Tree of Thoughts, ToT)把推理组织成一棵树:
- 分解:把问题拆成多个中间“思维”步骤;
- 生成:每个节点产生若干候选下一步;
- 评估:让模型或规则给候选打分;
- 搜索:用广度优先或深度优先遍历,保留高分分支,剪掉低分分支;
- 回溯:某条路径走不通时退回上层,换一个分支。
以 24 点游戏为例,每个中间状态是一组数字和已有运算,模型生成若干下一步操作,评估哪些状态更接近 24,再用搜索找到解。相比 CoT,ToT 能探索更多路径,代价是更多的模型调用和更长的推理时间。
思维图
思维图(Graph of Thoughts, GoT)进一步把推理组织成有向图:
- 节点是想法或中间结果;
- 边表示依赖、组合或改进;
- 一个节点可以有多个父节点,即把多个中间结论合并成新结论;
- 可以对想法做聚合、排序、精炼,而不只是沿树分叉。
例如多文档问答中,不同文档的结论可以先分别形成节点,再合并、比较、纠正。GoT 更像一个组织和引导思维的框架,而不是某一种固定的提示模板;它适合需要整合多源信息、反复修改的任务,但实现和调度更复杂。
对比
| 方法 | 结构 | 搜索方式 | 优点 | 代价 |
|---|---|---|---|---|
| CoT | 线性链 | 无搜索 | 简单、便宜 | 一步错可能步步错 |
| 自一致性 | 多条链 | 采样 + 投票 | 稳定,适合封闭答案 | 多次采样 |
| ToT | 树 | BFS/DFS + 剪枝 | 可回溯,探索多路径 | 调用次数多 |
| GoT | 图 | 依赖图 + 聚合 | 可合并多源结论 | 调度复杂 |
慢思考与测试时计算
CoT/ToT/GoT 都属于测试时计算(test-time compute):不增加训练,而是在推理阶段投入更多计算。近年来“慢思考”模型把这一思路系统化:
- 用结构化搜索在推理空间中探索;
- 用自一致性或验证器筛选中间步骤;
- 用强化学习微调推理过程,让模型学会生成更高质量的思维链;
- 在推理时分配更多 token 给难题,简单题则快速回答。
代价是延迟和成本上升。实际系统通常按问题难度路由:简单问题直接回答,复杂问题才启用长推理。
使用建议
- 答案可验证:数学、代码、逻辑题最适合 CoT 和搜索;
- 需要多源整合:GoT 式的合并结构更有优势;
- 低延迟场景:慎用 ToT/GoT,或限制深度和分支数;
- 评估要控制变量:比较不同推理方法时,固定模型、提示和采样预算;
- 中间步骤未必可信:模型写出的推理链可能只是“事后解释”,需要用最终答案或外部验证器检验。
相关阅读
- 提示构建与自动优化:提示工程
- 检索增强生成:RAG
- 智能体中的规划与反思:基于大语言模型的智能体
- 生成任务评价:大语言模型的评价
- 强化学习对齐:RLHF 与 PPO