Chain-of-Thought
显式写出中间推理步骤——把“直接作答”换成“分步再答”的推理基石。
模型侧背景,取自 Chain-of-Thought 原论文(Wei et al., 2022,arXiv:2201.11903v6,“Chain-of-Thought Prompting Elicits Reasoning in Large Language Models”,NeurIPS 2022)。它是本节其余推理范式(ReAct、 Reflexion、Plan-and-Solve、 LATS)共同的底座。
方法
标准的少样本提示把任务建模成 问题 → 答案 的直接映射:示例里只给最终答案,模型也被要求一步给出答案。对多步推理任务
(算术应用题、常识推理、符号操作),这种“一步到位”会系统性失败——模型没有地方安放中间计算,只能凭直觉跳到一个答案。
Chain-of-Thought(CoT)的改动极小:在少样本示例里,把答案换成“一串中间推理步骤 + 答案”——论文把提示定义为
<input, chain of thought, output> 三元组。示例本身演示了“怎么一步步想”,模型于是在面对新问题时也照着先写出推理链、再给
结论。它不改权重、不加模块、不调用外部工具——只是改了示例的写法(数学任务全程用同一套 8 个人手写示例),却在大模型
上解锁了一整类原本做不了的推理任务。
后续的 zero-shot CoT(Kojima et al., 2022)更进一步:连示例都不要,只在问题后加一句“Let’s think step by step”就能诱 发推理链——这正是 Plan-and-Solve 所改进的那个零样本基线。
一个最小对照
论文 Figure 1 的经典对照,同一个问题、同一个模型,只差示例里有没有推理链:
问题:食堂原有 23 个苹果,用掉 20 个做午餐,又买了 6 个,现在有多少个?
标准提示(示例只给答案):
答案:27。 ← 错。模型直接跳到一个数字。
CoT 提示(示例给出推理链):
食堂原有 23 个苹果。用掉 20 个,还剩 23 − 20 = 3 个。
又买了 6 个,所以 3 + 6 = 9 个。
答案:9。 ← 对。
差别不在模型知不知道怎么算,而在有没有地方把“先减后加”这两步分开算。标准提示逼模型在一次性输出里同时完成理解、两步 运算和作答;CoT 把这几件事摊开成序列,每一步只处理一件,错误率因此骤降。
本质:起作用的是“答案之前的自然语言推理”
CoT 常被读成“让模型解释一下”,但解释性是副产品。论文给的直觉(Section 2 的第一条性质)是:把多步问题拆成中间步,能让 “需要更多步的问题”分到更多中间计算。这条直觉有证据支撑——增益集中在最难的题(GSM8K 上最大的模型准确率翻了一倍多), 而在只需一步的最简子集(SingleOp)上,增益为零甚至为负。
但论文没有停在这个直觉上,而是用两个消融把更省事的解释逐一排除:
- 只给等长的点号
…占位、不给自然语言步骤(variable compute only):效果与基线持平 → 起作用的不是“多花了 token / 算力”本身。 - 把推理链放到答案之后(chain of thought after answer):效果与基线持平 → 起作用的也不是“激活了相关知识”。
所以真正的活性成分是:在答案之前、用自然语言把中间推理一步步写出来,并让最终答案条件于这串步骤。CoT 改变的不是措辞, 而是模型在给出答案前所经过的生成路径。
而且这个能力是涌现的。论文实测:推理链带来的增益只在足够大的模型(约 100B 参数以上)才出现;在小模型上,CoT 生 成的链条往往流畅但不合逻辑,反而拖低准确率。“把中间步骤写出来”只有当模型本身已具备执行每一步的能力时才兑现为收益 ——CoT 是放大器,不是能力的来源。
论文与实验结果
- 设置:算术(GSM8K、SVAMP、ASDiv、AQuA、MAWPS)、常识(CSQA、StrategyQA、Date、Sports、SayCan)、符号推理三类;跨 GPT-3、LaMDA、PaLM 等多个规模谱系以观察涌现;贪心解码(后续 self-consistency 用多次采样投票可再提升)。
- 算术:在小学数学应用题 GSM8K 上,PaLM 540B 用标准提示仅约 18%,加 CoT 跃升至约 57%——并超过了当时需要 额外训练验证器的微调 SOTA(约 55%)。
- 鲁棒性:换不同标注者、更简洁的写作风格、随机另选示例、改变示例顺序与数量,CoT 都稳定大幅超过标准提示——它不是靠 特定措辞碰运气的 prompt hacking。
- 普适性:常识上 PaLM 540B 的 StrategyQA 达 75.6%(前 SOTA 69.4%)、Sports 95.4%(超过非专业人类的 84%);符号任务上, CoT 还能泛化到比示例更长的步数(OOD 长度泛化),而标准提示在 OOD 上直接失败。
局限
- 涌现依赖规模,且部署昂贵:小模型用 CoT 无益甚至有害;只在大模型上兑现,意味着实际服务成本高。论文把“如何在小模型上 诱发推理”列为未来方向。
- 不保证推理过程正确,也不证明模型“真在推理”:论文的人工核查发现,大模型答对时推理链绝大多数也是对的(50 例仅 2 例 是碰巧答对),“流畅但不合逻辑”的链条主要出现在小模型上。但论文谨慎地把“神经网络是否真的在推理”列为开放问题,并明确 不保证推理路径正确(既可能对也可能错)。至于“推理链可能是事后编造、与真实计算不符”这一更强的质疑,是后续工作提出的, 不在本文范围内。
- 单次前向、贪心生成:一条链走到底,没有探索也没有回溯,一步错则步步错。缓解方向是在其上叠加机制——CoT-SC(采样多条链 再投票取多数)提升自洽,搜索式方法(见 LATS)引入多路径探索与回溯。
- 少样本示例需人工准备:few-shot 下成本尚小,但要扩到微调则标注昂贵;zero-shot CoT 用一句通用提示部分绕开了这一点。
对 agent 设计的价值
CoT 是本节所有范式的共同原语,理解它就理解了其余各篇的底层:ReAct 的 Thought 就是逐 步施加的 CoT;Reflexion 的 Actor 默认跑 CoT;Plan-and-Solve 是被结构化成“先规划后执行”的 CoT;LATS 则是在 CoT+行动的联合步骤上做树搜索。可迁移原则:
- 给模型留出“先用自然语言写中间步骤、再下结论”的空间,是最廉价的可靠性杠杆。注意论文的消融结论:关键不是多给 token, 而是让答案条件于一串写在前面的自然语言推理——所以别为省 token 逼 agent 直接给答案,也别以为随便垫些占位符就有用。
- 推理链是可审计的轨迹,但按“不保证正确”来对待:它利于失败归因与可观测,却不能替代 验证 (V)—— 正确的答案也可能来自错误的链,反之亦然。
- CoT 正从提示技巧内化为训练目标:当代“推理模型”通过 RL(尤其可验证奖励 RLVR,见 强化学习) 把分步推理直接训进权重,不再依赖示例诱发——CoT 由此从推理时的一句提示,变成模型的默认行为。论文那句“标准提示只给出了 大模型能力的下界”,至今仍是这条路线的注脚。