Chain-of-Thought Prompting 论文详读
Chain-of-Thought Prompting 论文详读
论文信息
- 标题:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
- 中文可粗译为:思维链提示可以激发大语言模型的推理能力
- 会议:NeurIPS 2022
先用一句话讲明白
这篇论文的核心想法是:
不要只让模型直接报答案,而是先给它看几个"题目 -> 一步一步推理 -> 最终答案"的示例,这样大模型就更容易学会按步骤思考。
如果用最白话的话说:
- 普通 prompt:
题目 -> 直接回答 - CoT prompt:
题目 -> 先把中间推理过程写出来 -> 再回答
作者发现,这个改动看起来很小,但对大模型的复杂推理能力提升很明显。
Abstract
作者想解决什么问题
作者关心的是:为什么大语言模型看起来会很多东西,但一到多步推理题就经常翻车?
尤其是下面这些任务:
- 数学文字题
- 常识推理
- 符号推理
它们的共同点是:
不能只靠"直觉式地猜一个答案",而要经过中间步骤。
作者的核心 idea
作者提出一种非常简单的方法:Chain-of-Thought Prompting,简称 CoT。
做法是:
- 给模型几个示例
- 每个示例不只是"问题 + 答案"
- 而是"问题 + 中间推理过程 + 答案"
- 然后让模型照着这种格式去解新题
也就是把 prompt 从:
input -> output
改成:
input -> chain of thought -> output
摘要里的主要结果
作者说 CoT 在三类推理任务上都有明显提升:
- arithmetic reasoning
- commonsense reasoning
- symbolic reasoning
最有名的结果是:
- 用 PaLM 540B
- 只给 8 个 CoT 示例
- 在 GSM8K 上达到当时 SOTA
这件事当时很震撼,因为它不是重新训练模型,而只是改了 prompting 方式。
1 Introduction
1.1 Motivation
这一节的动机可以概括成一句话:
模型规模变大了,不代表它自然就会做复杂推理。
作者说,之前大家已经知道:
- 模型变大,很多任务会变强
- few-shot prompting 也很有用
但问题是:
- 对一些真正需要推理的任务
- 普通 few-shot prompting 提升不够
- 单纯放大模型,也不一定自动解决
1.2 以前有什么办法
作者提到两类已有思路:
- 训练/微调模型去生成 rationale
也就是专门训练模型输出推理过程 - few-shot prompting
也就是给少量例子,让模型在上下文里学
但这两类方法各有问题:
- 训练 rationale 需要很多高质量人工标注,成本高
- 普通 few-shot prompt 对复杂推理任务经常不够强
1.3 这篇论文想做什么
作者的思路是把上面两类方法的优点拼起来:
- 不重新训练参数
- 只在 prompt 里加"推理过程示例"
于是就有了 CoT prompting。
1.4 这篇论文的核心贡献
可以压缩成 4 点:
- 提出一种非常简单但效果很强的 prompting 方法:CoT prompting
- 证明它在数学、常识、符号推理上都有效
- 发现这种能力不是小模型就有,而是随着模型规模变大才明显涌现
- 说明"标准 prompting 低估了大模型真实能力"
1.5 这一节最值得记住的话
不是模型不会推理,而是你可能没有用对唤起它推理能力的提示方式。
2 Chain-of-Thought Prompting
这一节是方法定义。
2.1 CoT 到底是什么
作者把 chain of thought 定义为:
一串通向最终答案的中间自然语言推理步骤。
比如一个简单数学题,普通回答可能是:
答案是 11
CoT 风格会变成:
先有 5 个球又买了 2 罐,每罐 3 个,所以新增 6 个5 + 6 = 11所以答案是 11
2.2 为什么作者觉得它可能有效
作者给了 4 个理由。
第一,能把复杂问题拆成中间步骤
多步问题如果直接输出答案,模型容易跳步。
而 CoT 逼着模型先分解,再求解。
第二,推理过程更可解释
你不只能看它答对没答对,还能看:
- 它卡在哪一步
- 是算错了
- 还是理解题意就错了
第三,方法适用面广
作者认为,只要是人可以通过语言一步步解决的问题,理论上都可能用 CoT。
第四,不需要改模型参数
这是它最迷人的地方:
只要在 few-shot exemplars 里加入思维链示例,就可能把推理能力"激发出来"。
2.3 这一节真正想表达什么
CoT 不是一个新的模型结构。
它本质上是一个 prompting pattern:
给模型示范"你应该怎么一步步想"。
3 Arithmetic Reasoning
这一节是最经典的一部分,因为 CoT 最出圈就是靠数学文字题。
3.1 Experimental Setup
作者测了多个数学文字题 benchmark,包括:
- GSM8K
- SVAMP
- ASDiv
- AQuA
- MAWPS
如果你是初学者,只要先记住:
- GSM8K 是最经典的 grade-school math word problems 数据集
- 这些任务都不是纯计算,而是"读懂题意 + 建立步骤 + 再计算"
3.2 baseline 是什么
baseline 是 standard prompting:
- 给几个
问题 -> 答案示例 - 让模型直接回答
CoT prompting 则是:
- 给几个
问题 -> 推理过程 -> 答案示例 - 让模型模仿这种方式回答
3.3 实验模型
作者测了多个模型族和不同规模,包括:
- GPT-3 系列
- LaMDA
- PaLM
- UL2
- Codex
但这篇论文最重要的观察不是"哪个模型最好",而是:
CoT 的效果和模型规模强相关。
3.4 Results
这一节最重要的结论有 3 个。
结论 1:CoT 是一种 scale-dependent / emergent ability
也就是:
CoT 的收益不是所有模型都有,而是在大模型上才明显出现。
作者观察到:
- 小模型加 CoT,常常没帮助,甚至更差
- 大概到
~100B量级后,CoT 才开始显著生效
这是这篇论文最重要的发现之一。
结论 2:问题越复杂,CoT 越有用
作者发现:
- 对简单的一步题,收益很小,甚至没有
- 对 GSM8K 这种复杂多步题,收益非常大
所以 CoT 不是"所有任务都提升一点点",而是:
越需要多步推理的任务,越能吃到它的红利。
结论 3:在一些 benchmark 上达到或逼近当时 SOTA
论文里最亮眼的是:
- PaLM 540B + CoT 在 GSM8K 上达到当时 SOTA
而且关键是:
- 不是微调
- 不是新训练
- 只是 prompting
这也是 CoT 为什么会一下子非常火。
3.5 作者对"为什么有效"的人工分析
作者人工看了一些模型生成的思维链。
他们发现:
- 答对的样本里,大多数思维链本身也逻辑正确
- 答错的样本里,有些是小错误,比如少一步、算错一步
- 也有一些是更大的语义理解错误
这说明:
CoT 不只是"表面上多写点字",很多时候它真的把正确推理路径写出来了。
3.3 Ablation Study
这一节很重要,因为作者想证明:CoT 的作用不是别的因素冒充出来的。
作者做了 3 个主要对照。
3.3.1 Equation only
这个对照问的是:
是不是因为模型只要列出公式就够了?
做法是只让模型输出公式,不输出自然语言推理。
结果:
- 在复杂题上,效果明显不如真正的 CoT
这说明:
自然语言中间推理,不只是"公式的替代写法"。
很多题先要理解语义,不能直接跳成公式。
3.3.2 Variable compute only
这个对照问的是:
是不是因为模型多输出了一些 token,所以相当于"多想了一会儿"?
作者设计了一个很有意思的对照:
- 让模型输出一串点号
... - 给它差不多长度的"计算预算"
- 但没有真正的推理内容
结果:
- 几乎没帮助
这说明:
CoT 的价值不只是"多花 token",而是"多花在有意义的中间推理上"。
3.3.3 Reasoning after answer
这个对照问的是:
是不是只要 prompt 里出现一些推理文字,就能激活模型知识?
所以作者试了:
- 先答答案
- 再写推理
结果也接近 baseline。
这说明:
关键不是出现了推理文本,而是推理过程必须在答案之前,真正参与求解。
3.3.4 这一节你要记住什么
作者通过 ablation 想说明:
CoT 有效,不是因为它更长,不是因为它更像公式,不是因为它看起来解释性更强,而是因为"按顺序写出的中间推理步骤"本身真的有用。
3.4 Robustness of Chain of Thought
作者在担心什么
prompting 方法经常有一个问题:
- 换个示例
- 换个顺序
- 换个人写
结果可能就变很多。
所以作者要检查:CoT 会不会只是碰巧 prompt 写得好?
作者怎么测
他们换了:
- 不同 annotator 写的 CoT 示例
- 不同风格的 CoT 示例
- 不同 exemplar 集合
- 不同 exemplar 顺序
- 不同 exemplar 数量
结果
结论是:
- 确实存在波动
- 但整体上,CoT 依然稳定优于 standard prompting
这说明:
CoT 的有效性不是某一种特别玄学的话术造成的。
4 Commonsense Reasoning
任务是什么
这一节作者想证明:CoT 不只对数学有用,对更一般的常识推理也有用。
测试的数据集包括:
- CSQA
- StrategyQA
- Date Understanding
- Sports Understanding
- SayCan
这些任务更像:
- 常识判断
- 多跳问答
- 日期推理
- 事件合理性判断
- 根据自然语言做机器人动作规划
结果
作者发现:
- 随着模型变大,standard prompting 本来也会变强
- 但 CoT 通常还能进一步提升
- 在 StrategyQA 等任务上提升比较明显
论文里还提到:
- 在 Sports Understanding 上,PaLM 540B + CoT 的表现甚至超过了未辅助的人类体育爱好者基线
但不是所有常识任务都提升很多
作者也承认:
- 在 CSQA 上收益比较小
这很重要,因为它说明:
CoT 并不是所有"看起来像推理"的任务都会暴涨。
5 Symbolic Reasoning
这一节很有意思,因为它更像是在测"规则操作能力"。
任务是什么
作者用了两个 toy task:
- Last Letter Concatenation
取每个词最后一个字母再拼起来 - Coin Flip
多个人轮流翻不翻硬币,最后判断正反面
为什么要做这种任务
因为这类任务:
- 人类觉得简单
- 但模型如果没有清晰步骤,经常会乱
而且它们很适合测:
- 能不能按规则一步步执行
- 能不能泛化到更长的输入
什么是 OOD generalization
作者这里特别测了一个点:
训练/示例里只给较短的步骤数,但测试时给更长的步骤数。
这叫:
- OOD(out-of-domain)generalization
你可以先把它简单理解成:
题目长度或难度超出了示例里见过的范围,看模型能不能继续按规则推下去。
结果
作者发现:
- standard prompting 在 OOD 设置下几乎不行
- CoT prompting 明显更强
- 但这种优势同样主要出现在足够大的模型上
这一节的重要意义
它说明 CoT 不只是帮助"理解语义"。
它还帮助模型:
- 维持步骤状态
- 执行符号规则
- 对更长链条做一定程度的泛化
6 Discussion
这一节很像作者自己帮你总结"这篇论文到底说明了什么"。
6.1 作者最核心的结论
作者认为 CoT 说明了两件大事。
第一,CoT 扩展了大模型能做好的任务范围
很多任务在 standard prompting 下看起来"能力到头了",扩展模型规模也没用。
但一换成 CoT,曲线就重新往上走。
这意味着:
standard prompting 其实低估了大模型能力。
第二,CoT 的效果和规模涌现强相关
也就是:
不是所有模型都能被 CoT 激活,往往要大到一定程度以后,这种能力才明显出现。
6.2 这篇论文没解决的问题
这一节作者承认了几个限制。
限制 1:模型到底是不是真的在"推理",仍然是开放问题
作者很谨慎,他们没有说:
- “模型已经像人类一样思考了”
他们只说:
- 它表现出了类似 step-by-step reasoning 的行为
所以:
CoT 让模型看起来像在推理,不等于已经证明模型内部真的在做人类式推理。
限制 2:如果要大规模标注 CoT 数据,人工成本可能很高
few-shot 场景里只写几个 exemplars,成本不高。
但如果你想把这事扩展成:
- 大规模监督训练
- 大规模微调
那 annotation 成本就会变贵。
限制 3:思维链本身不保证正确
模型可能会:
- 写出一条很流畅但错误的推理链
- 最后答对,也可能答错
所以 CoT 不是"自动得到可靠解释"。
限制 4:太依赖大模型,现实部署成本高
作者很明确地说:
- CoT 的强效果主要出现在超大模型
- 这对真实应用的推理成本和服务成本都不友好
这也是后面很多工作的出发点:怎么把 CoT 能力迁移到更小模型上。
7 Related Work
这一节主要是在给 CoT 找学术坐标。
和哪些方向相关
作者说它主要接在两条线后面:
- 用中间步骤帮助推理
- prompting / in-context learning
它和以前方法最大的区别
以前很多方法会:
- 训练模型生成 rationale
- 用 formal language 做中间表示
- 微调专用模型
而 CoT 的特别之处在于:
它不改模型,只改 prompt 的输出示例结构。
也就是从"增强输入提示"转成了"增强输出示范格式"。
8 Conclusions
作者最后的结论可以压缩成一句话:
Chain-of-thought prompting 是一种简单、通用、对大模型特别有效的推理增强方法。
它最核心的发现不是单个 benchmark 分数,而是:
大模型里存在一种可以被 prompt 激发出来的多步推理能力。
这也是后来整个 prompt engineering、reasoning prompting、agent prompting 大量工作的起点之一。
我自己的精简评价
这篇论文为什么重要
这篇论文非常重要,因为它改变了很多人对大模型能力边界的理解。
在它之前,很多人会觉得:
- 模型不会做推理,就是不会
在它之后,大家开始意识到:
- 有时不是模型完全不会
- 而是你没有把"思考格式"示范给它
它最颠覆的地方
最颠覆的是:
一个只改 prompt、不改参数的方法,居然能把复杂推理能力拉起来这么多。
这对整个 LLM 研究影响很大。
它最大的现实边界
我觉得它最现实的问题有两个:
- 很依赖模型规模
- 思维链写出来不代表真的可靠
所以 CoT 很强,但也不能把它神化成"万能推理开关"。
读完后你应该记住的 6 句话
- CoT 就是在 prompt 里给模型示范"中间推理过程"
- 它不是训练方法,首先是一个 prompting 方法
- 它对复杂多步推理任务特别有用
- 它的效果在大模型上才明显,小模型 often 不行
- 它的价值不只是多输出 token,而是输出有意义的中间步骤
- 它让大家意识到:standard prompting 可能低估了大模型能力
术语补课
如果你读这篇还是觉得有点卡,建议先把下面几个词补一下。
优先补的概念
- few-shot prompting
给少量示例,让模型按示例做新题 - standard prompting
只给"输入 -> 输出"的普通提示方式 - rationale
可以简单理解成"解释/推理过程" - benchmark
公开评测集 - ablation study
拆模块做对照实验 - emergent ability
规模到一定程度才明显出现的能力 - OOD generalization
超出示例分布的泛化能力
如果你想补基础,再回来读这篇
我建议顺序如下:
- 先了解 few-shot prompting
- 再看 in-context learning
- 再读这篇 CoT
- 然后再读 Self-Consistency 和 ReAct
因为很多后续工作,其实都是在 CoT 的基础上继续长出来的。
这篇 CoT 和 Reflexion 的关系
你刚刚读完 Reflexion,再看 CoT 会很有帮助,因为它们在思路上是连着的。
你可以这么理解:
- CoT:让模型在单次作答时,学会"分步骤想"
- Reflexion:让模型在多次尝试之间,学会"总结上次错因再改"
所以:
- CoT 解决的是"这一次怎么想"
- Reflexion 解决的是"下一次怎么从失败中学"
这两篇合起来,基本就是后面很多 agent prompting 方法的基础。
如果你接下来继续读什么最顺
如果你想顺着这条线继续往下读,我建议优先级这样排:
- Self-Consistency
看"多条 CoT 采样后投票"为什么更强 - ReAct
看"思考 + 行动"怎么结合 - Reflexion
看"思考 + 复盘 + 记忆"怎么结合 - Tree of Thoughts
看"不是一条思维链,而是多分支搜索"
如果你更想连接到 agent / harness 方向,那可以接着看:
- ReAct
- HotPotQA / GSM8K / HumanEval 这些 benchmark 本身
- AgentBench / SWE-bench / lm-evaluation-harness
这样你会更清楚:
- CoT 解决的是什么层面的问题
- 后来 agent 和 harness 又是在什么层面继续扩展它
最后给小白的一句提醒
不要把 CoT 简单理解成"让模型废话更多"。
更准确地说,它是:
让模型先显式展开中间推理,再给最终答案。
真正有价值的不是"更长",而是"更有结构的中间步骤"。



