思维链、Reasoning 模型与 Plan Mode:AI 如何学会“先想再做“

张开发
2026/5/14 8:12:01 15 分钟阅读

分享文章

思维链、Reasoning 模型与 Plan Mode:AI 如何学会“先想再做“
思维链、Reasoning 模型与 Plan ModeAI 如何学会先想再做【浙江大学-大模型原理与技术】3-2 思维链CoT, ToT, GPT-o1 – 学习笔记扩展一、两种思维模式System 1 与 System 2心理学将人类的认知任务分为两类System 1快速、自动、无意识。看到问题答案瞬间浮现。适用于记忆性知识、常识判断。System 2缓慢、需要集中注意力、逐步消耗精力。需要一步一步推导适用于数学证明、逻辑推理、复杂规划。这个分类是理解大模型局限性的关键起点。二、大模型的瓶颈Flat Scaling Curve对于 System 1 类任务扩大参数量、增加数据和计算模型能力持续稳定提升。但 System 2 类任务出现了一个现象——flat scaling curve平坦的扩展曲线即使模型参数量不断增大如果直接对复杂推理问题提问能力提升会进入瓶颈增长极为缓慢。原因在于语言模型在生成每个 token 时依赖的是前面所有的上下文。如果没有中间推理过程模型相当于被迫从问题直接跳到答案就像要求一个学生不写过程直接填结果——即便他很聪明也容易出错。解决方案给模型中间的推理步骤。实验表明当模型被引导输出思维过程后随着参数量增长System 2 能力也会随之大幅提升。这就是思维链Chain of Thought, CoT的核心动机。三、思维链是什么思维链的定义很直白一个问题的解题步骤。就像小学应用题老师要求不能只写答案必须列出中间过程——这些中间步骤就是思维链。有了思维链模型在生成后续 token 时前面写下的步骤本身就成为草稿纸帮助它避免直接跳到错误答案。四、典型案例有 CoT vs 没有 CoT以下四个案例覆盖了 CoT 最常见的应用场景直观展示有无思维链的差异。案例一多步数学计算问题停车场原有 23 辆车上午开走 5 辆下午又来了 17 辆再开走 8 辆。现在有多少辆不使用 CoT模型直接回答27模型依赖看起来像这类题答案的模式匹配极易在多步加减时出错。使用 CoT原有 23 辆。 上午开走 5 辆23 - 5 18 辆。 下午来了 17 辆18 17 35 辆。 再开走 8 辆35 - 8 27 辆。 现在有 27 辆。每一步结果作为下一步的输入中间状态被明确记录不会在多步计算中丢失进度。案例二单词字母计数感知陷阱问题“strawberry” 这个单词里有几个字母 “r”不使用 CoTGPT-4o 直接回答2 个模型把单词作为整体 token 处理没有逐字符扫描的过程凭印象给出答案出错。使用 CoTo1 的做法让我逐个字母检查 s - 不是 r t - 不是 r r - 是 r第 1 个 a - 不是 r w - 不是 r b - 不是 r e - 不是 r r - 是 r第 2 个 r - 是 r第 3 个 y - 不是 r 共有 3 个 r。逐步扫描强迫模型真正看每个字符而不是凭模式联想。这也是视频中专门举到的例子——o1 因为被训练成先想再答在这道题上胜过了 GPT-4o。案例三逻辑推理文字题问题所有玫瑰都是花。有些花会凋谢。所以有些玫瑰会凋谢。这个推论正确吗不使用 CoT正确。模型受听起来合理的表面语义影响直接肯定。实际上这是一个无效三段论——“有些花会凋谢不能推出有些玫瑰会凋谢”因为凋谢的花不一定是玫瑰。使用 CoT前提 1所有玫瑰都是花玫瑰 ⊆ 花 前提 2有些花会凋谢花 ∩ 凋谢 ≠ ∅ 问题能否推出有些玫瑰会凋谢 分析会凋谢的花可能是郁金香、菊花等不一定包含玫瑰。 前提 2 只说明花的某个子集会凋谢但没有说这个子集与玫瑰有交集。 结论这个推论无效。仅凭以上两个前提无法得出有些玫瑰会凋谢。CoT 迫使模型显式列出集合关系而不是靠语感判断从而识别出隐藏的逻辑谬误。案例四代码调试问题下面这段 Python 代码有什么问题defaverage(numbers):returnsum(numbers)/len(numbers)print(average([]))不使用 CoT这段代码计算列表的平均值看起来没有问题。模型对函数功能的判断是正确的但忽略了边界情况。使用 CoT逐步分析 1. 函数接收一个列表返回 sum / len。 2. 当传入空列表 [] 时 - sum([]) 0没问题 - len([]) 0这会导致除以零 3. Python 会抛出 ZeroDivisionError。 问题没有对空列表做边界检查。 修复建议 def average(numbers): if not numbers: return 0 # 或 raise ValueError(列表不能为空) return sum(numbers) / len(numbers)CoT 促使模型系统地追踪每个参数的值而不是对代码做整体印象判断从而发现运行时才会触发的 bug。五、三大思维链范式范式一按部就班线性推理沿着一条路径一步接一步地推导适合有明确计算步骤的问题。标准 CoTFew-shot CoT人工为每类问题写好示例包含完整解题步骤作为 few-shot prompt 喂给模型。效果最好但成本极高本质上是人工写多少模型就聪明多少。Zero-shot CoT在问题末尾加上一句话“让我们一步一步来思考。Let’s think step by step.”无需任何示例模型会自动生成推理步骤。操作极简效果显著至今仍被广泛使用。但它存在一个内在矛盾让模型自己为一个它本来就不熟悉的问题生成解题步骤——生成的步骤本身可能是错的。Auto CoT结合前两者的优点用 Sentence-BERT 对问题库编码用 K-Means 聚类筛选出与当前问题相关的样本用 Zero-shot CoT 自动为这些样本生成思维链将带有思维链的样本作为 few-shot 示例辅助当前问题作答相当于举一反三——用模型已经熟悉的相关问题的思路来辅助新问题。既不需要人工标注效果也优于纯 Zero-shot CoT。范式二三思后行树状搜索线性 CoT 有一个根本缺陷一根筋。它只沿一条路径往前走无法探索不同的思维分支也无法整体规划。对于复杂的 System 2 任务如数学证明、24 点游戏人在思考时实际上是维护着多条可能路径并在每一步评估这样走下去得到正确答案的概率是多少。用数据结构来类比链线性→ 按部就班的 CoT树 / 图→ 可以探索多个分支甚至反向追溯Tree of Thought思维树ToT是这一范式最具代表性的方法问题 ├── 子问题 A │ ├── 路径 A1 → 评分0.8 │ └── 路径 A2 → 评分0.3 └── 子问题 B ├── 路径 B1 → 评分0.6 └── 路径 B2 → 评分0.9 ← 选择此路径模型在 prompt 的引导下自动完成拆分 → 衍生 → 评估 → 搜索BFS/DFS四步找出最优思维路径。范式三集思广益多路径投票即使单条思维链可能包含幻觉或错误我们可以让模型生成多条推理路径最后投票决定答案——三个臭皮匠顶个诸葛亮。Self-Consistency通过调节 temperature 进行随机采样让模型生成多条不同的推理路径收集每条路径的最终答案统计频率选择频率最高的答案作为最终输出例如三条路径中两条给出4 包一条给出9 包2:1 投票选 4 包。Universal Self-Consistency当问题是开放性的如文本摘要无法直接比较答案是否相同时把多个答案再次交给大模型让它判断哪个答案出现频率最高——把统计投票这一步也委托给 LLM 完成。适用于没有固定标准答案的生成任务。六、从 CoT 到 Reasoning 模型质的飞跃上述所有 CoT 方法都是提示技术——依赖 prompt 在推理时引导模型思考。Reasoning 模型以 OpenAI o1/o3、DeepSeek-R1 为代表则迈出了更大一步把一步步思考这件事通过训练直接内化进模型本身。核心转变结果监督 → 过程监督监督方式规则类比结果监督最终答案对了才得分只看考试总分过程监督每一步推理正确都得分高考步骤分普通 LLM 的训练目标是答案对不对Reasoning 模型的训练目标是每一步推理对不对。这个改变让模型从猜答案进化为真正推理。训练阶段大规模强化学习以谷歌 SCORE 方法为参考Reasoning 模型的训练分两个阶段培养纠错意识用强化学习让模型学会主动审视答案尝试改写成更好的版本培养纠错能力大规模多轮强化学习让模型真正掌握把错误思维步骤纠正过来的能力类比人类备考做错题 → 看解析 → “这步不对下次不能这样做” → 真正掌握正确解法。推理阶段大规模搜索o1 碰到问题会先思考几秒这段时间实际上是利用奖励模型对大量可能的思维片段进行大规模搜索找出最优片段并串联成最终答案。训练时大规模强化学习 → 生成优质思维片段的能力 推理时大规模搜索 → 把最优思维片段串联成答案新的 Scaling Law传统 Scaling Law 只关注训练时的计算量。o1 引入了新维度训练计算量 推理计算量两者的增长都会带来模型能力的提升。给模型更多思考时间更多推理 token 预算它能解决更难的问题——这被称为Test-Time Compute Scaling。代价是推理开销显著增大但复杂逻辑推理能力也大幅超越同规模的普通模型。七、Reasoning 模型与 Plan Mode 的关系写代码是典型的 System 2 任务——需要理解需求、分析依赖、规划步骤、预判副作用。Claude Code 的Plan Mode和 Reasoning 模型本质上在解决同一个问题但采取了截然不同的设计哲学。Plan Mode 是外化的 CoTClaude Code 的 Plan Mode 本质上是 Zero-shot CoT 的工程化实现普通模式 帮我重构这个函数 → 直接改代码 Plan Mode 帮我重构这个函数 → 先输出计划 → 人类确认 → 再改代码区别在于多了一个人类 review 检查点——把思维链从模型内部暴露出来让人类可以在执行前介入、纠偏。Reasoning 模型做了什么不同的事o1 把思考内化进模型发生在隐藏的 thinking tokens 里o1 处理编程任务 thinking 需要修改哪些文件会不会破坏其他模块 最小改动方案是什么...用户不可见 /thinking → 直接输出代码而 Plan Mode 把这个过程变成可见、可干预的Claude Code Plan Mode → 输出计划修改 A 文件第 32 行新增 B 函数不影响 C 模块 → [用户确认 / 修改计划] → 执行两种设计的权衡Reasoning 模型内化Plan Mode外化透明度低思考过程隐藏高计划可见可改人类介入难以干预中间步骤可在执行前纠偏适合场景有客观正确答案的任务数学、逻辑有主观判断和风险的工程任务代价推理时间长token 消耗大需要额外一轮人机交互对于代码修改这类高风险、不可逆的操作Plan Mode 的先计划、后执行、可审查反而比 Reasoning 模型的闷头想完直接给结果更安全。这也是 Claude Code 做出这一设计选择的根本原因在工程任务中可控性往往比纯粹的准确性更重要。八、全局总结思维链CoT的三大范式 │ ├── 按部就班线性推理 │ ├── 标准 CoT 人工标注示例效果好成本高 │ ├── Zero-shot CoT 让我们一步步思考简单实用 │ └── Auto CoT 自动检索相关问题自动生成思维链 │ ├── 三思后行树状搜索 │ └── Tree of Thought 构建思维树评分后搜索最优路径 │ └── 集思广益多路径投票 ├── Self-Consistency 多采样 频率投票 └── Universal Self-Consistency 开放题由 LLM 做投票 Reasoning 模型以 o1 为代表 │ ├── 核心转变结果监督 → 过程监督 ├── 训练大规模强化学习内化优质思维片段的生成能力 ├── 推理大规模搜索串联最优思维路径 └── 新 Scaling Law推理计算量增长同样带来能力提升 Plan ModeClaude Code / Codex │ ├── 本质外化的 CoT 人类 review 检查点 ├── 与 Reasoning 模型的区别透明 vs 隐式可控 vs 自主 └── 设计动机工程任务的高风险性要求人类保留干预能力一句话总结CoT 是用提示词引导模型说出推理过程Reasoning 模型是通过强化学习让深度思考成为本能Plan Mode 是把这个思考过程显式暴露给人类在自动化与可控性之间找到平衡。三者共同指向同一个目标——让 AI 不再靠直觉猜答案而是真正学会推理。

更多文章