思维链:让模型一步步想
Wei, Wang, Schuurmans, Bosma, Ichter, Xia, Chi, Le, Zhou · Google · NeurIPS 2022 · arXiv:2201.11903
这篇论文改变 AI 的方式,朴素得近乎可疑:不改模型、不加数据、不动任何一个参数——只是换了一种问法。全文没有一个公式,你不需要记任何术语,你要做的最难的数学是 23 − 20 + 6。我们从一道小学应用题开始,你来当裁判。
先押一注
2022 年,最好的语言模型已经会写诗、会写代码,却经常在小学数学上翻车。这不奇怪:语言模型的本职是"接着往下写",一个词一个词地吐——你问它问题,它的第一反应是立刻吐出一个听起来像答案的词,而不是先算一算。研究者们专门收集了一千多道小学应用题(题库叫 GSM8K)来量化这种翻车。下面是论文第一页的原题,我们全文都用它:
The cafeteria had 23 apples. If they used 20 to make lunch and bought 6 more, how many apples do they have?
(食堂原有 23 个苹果。他们用 20 个做了午餐,又买了 6 个。现在有几个苹果?)
先自己口算一下——两步就出来了,对吧?记住这种"分两步"的感觉,它是全文的钥匙。
现在把这道题喂给 PaLM——5400 亿参数、当时世界上最大的模型之一——它张口就答,见下图左边。答错了。接下来,我们不换模型、不重训、不改题,只在提示里多加一句话:"让我们一步步想"(Let's think step by step)。你押:答案会怎样?
想看模型的英文原话?(论文 Figure 1 实录)
直接答:"The answer is 27." 就这一句,错得干脆利落。
一步步答:"The cafeteria had 23 apples originally. They used 20 to make lunch. So they had 23 − 20 = 3. They bought 6 more apples, so they have 3 + 6 = 9. The answer is 9."
(食堂原有 23 个苹果。他们用 20 个做午餐,所以剩 23 − 20 = 3 个。又买了 6 个,所以有 3 + 6 = 9 个。答案是 9。)
注意它的口吻:不是背公式,是像小学生解题一样复述题意、边述边算。这个口吻是从哪学来的?下一节揭晓。
咒语不是咒语,是示范
先坦白一件事:刚才我们说"加一句咒语",其实偷了个懒。Wei 和同事们的原始配方更朴素,像每一个请过家教的人都熟悉的场景——先给孩子看例题,再让他做新题。给模型的这段"例题+新题"合在一起有个术语叫提示(prompt),说白了就是递给模型的那张纸条;纸条上带几道做好的例题,行话叫少样本示范(few-shot),说白了就是"先示范几遍"。名字都不重要,重要的是:例题的答案怎么写,决定了模型学会什么。如果例题答案只有一个光秃秃的"11",模型学到的是"这种场合要报一个数";如果例题把演算过程一步步写出来,模型学到的就是"这种场合要先摆过程、再报数"。点下面两个按钮,换一换例题答案的写法,看模型的输出跟着怎么变:
注意绿色的那几行:例题里一出现演算过程,模型的输出里就长出了自己的演算过程——格式是会传染的。模型是一流的模仿者,你示范什么,它产出什么。所谓思维链(Chain-of-Thought),就是在示范里把思考写出来,让模仿自然发生。至于"让我们一步步想"那句咒语,是几个月后另一组研究者发现的偷懒版:不给例题,直接下这句指令。它同样有效,因为它同样给了模型"先写过程"的许可。
论文真正用的示范例题长什么样?(可跳过,共 8 道,这里节选两道)
整篇论文的"投入"就是 8 道人手写的带过程例题,翻来覆去用在所有数学题库上。比如:
Q: If there are 3 cars in the parking lot and 2 more cars arrive, how many cars are in the parking lot?
(停车场里有 3 辆车,又开来 2 辆,现在停车场里有几辆车?)
A: There are originally 3 cars. 2 more cars arrive. 3 + 2 = 5. The answer is 5.
Q: Olivia has $23. She bought five bagels for $3 each. How much money does she have left?
(奥利维亚有 23 美元,买了 5 个贝果、每个 3 美元,她还剩多少钱?)
A: 5 bagels for $3 each is 5 × 3 = $15. 23 − 15 = $8. The answer is 8.
就这样。没有算法、没有训练、没有魔法词汇——8 段小学老师水平的板书,撬动了 5400 亿参数。
然而,一步步想就一定对吗?走的步数多了,摔跤的机会也多了。
链会断——但你能看见断在哪
直接答错了,你只能对着一个"27"耸肩:它怎么来的?无从追问。链不一样。点「走一步」,看一条推理链一格一格显影;走完之后,切到第二个标签——那条链的中途,我们埋了一个错:
看第二条链里变红的那一格:23 − 20 被算成了 13。它后面的每一步——13 + 6 = 19、"答案是 19"——逻辑全对,结论全错。错误像上游倒进河里的染料,顺着链一路流到了终点。但请注意你刚才做到了什么:你一眼指出了错在第 2 步。链不保证正确,但让错误有了地址。直接答的错误无处追问;链上的错误可以被指认、被修复——后来整个行业"给推理的每一步打分"的做法,都从这扇窗口长出来。
第三个标签更诡异,值得单独走一遍:链一路算到 10,最后一格却突然答了 9——答对了,但这条链显然不是它得出答案的真实路径。论文作者对此毫不遮掩:链未必"忠实",它有时更像事后编出的说辞,而不是思考的现场直播。
杠精时间:链是真的在思考,还是在表演?(可跳过)
诚实地说,没人敢打包票。论文只声称"链让答案变准了",不声称模型内部真的发生了逐步推理。你刚才在第三个标签亲眼看到了证据:链和答案可以互相矛盾——链错答案对、链对答案错,都被当场抓到过。但这不影响链的工程价值:想法一旦被写成文字,就从黑箱里的电流变成了可以动手术的对象——能检查(你刚做过)、能让多条链投票、能给每一步打分、能拿来训练下一代模型。表演也好,思考也罢,写出来这件事本身改变了一切。
然而,这么好的招数有一个憋屈的前提:不是每个模型都配用它。
小模型念咒也没用
给三岁的孩子看再多解题步骤,他也只会鹦鹉学舌地念出步骤的腔调,填不进正确的内容。模型也一样。拖动滑块,把模型从 4 亿参数一路养到 5400 亿,盯着绿线(带思维链)什么时候离开灰线(直接答):
80 亿参数以下,绿线甚至趴在灰线下面——小模型也会一步一步写,写得流畅又工整,只是步步都是胡话,链反而带偏了它。过了千亿参数附近的那条金色虚线,绿线突然起飞:540B 的 PaLM 从 18% 跳到 57%,一举穿过了图上那条红色虚线——55% 的旧世界纪录,一条靠 7500 道题专门微调、外加专用验证器才够到的线。而绿点越过它,只花了 8 道带过程的例题。论文在 GPT-3、LaMDA、PaLM 三个互不相干的模型家族上都看到了同一个形状:先趴着,后起飞。思维链不是教会模型推理,是唤醒本来就藏在规模里的推理。这种"小时候没有、长大了突然有"的现象,论文给它起的名字后来传遍了整个领域:涌现(emergence)。
"超过世界纪录"这句话有多重?顺便:涌现是真的吗?(可跳过)
被超过的旧纪录是 55%,来自前一年的 GSM8K 原班人马:他们把 GPT-3 拿来专门微调——用 7500 道题训练它做数学,再额外训练一个"验证器"模型给答案打分、从上百个候选里挑最好的。整条流水线是为这一个题库定制的。而 PaLM + 思维链拿到 57% 的全部成本,是你在折叠框里看过的那 8 段板书:不动一个参数,不为任何题库定制。用登山打比方:前者是修了一条索道上山,后者是发现山里本来就有路——只要模型够大,一句"一步步想"就能把路唤出来。这是这篇论文让当时的从业者最坐不住的地方。
图中曲线的读数(GSM8K 正确率,%):
| 规模 | 0.4B | 2B | 8B | 68B | 175B | 540B |
|---|---|---|---|---|---|---|
| 直接答 | ≈2 | ≈3 | ≈5 | ≈7 | 15.6 | 17.9 |
| 带思维链 | ≈1 | ≈2 | ≈4 | ≈14 | 46.9 | 56.9 |
另一句坦白:后来(2023 年)有研究者质疑"涌现"可能部分是量尺的戏法——数学题"全对才得分",模型其实在平滑变好,只是及格线让曲线看起来像跳变;换成连续的评分方式,一些涌现曲线会变得平缓。这场争论没有完全落幕。但对用模型的人来说,体验确实是阶跃的:一道题要么做对,要么做错,没有"对了 80%"的答案。
然而,钥匙也不是每扇门都开。有的题,链根本帮不上忙。
哪些题配得上一条链
你不会为"1 + 1"打草稿。模型也一样:草稿纸的价值,取决于题目需要几步。点下面三个标签,看同一个 540B 模型在三类任务上,一条链分别值多少:
注意常识那一栏的反差:StrategyQA 的题要在心里偷偷绕两三个弯("梨会沉进水里吗"——得先想到密度,再想到梨比水轻),链加了 9 个百分点;CommonsenseQA 的题一眼一跳就到答案,链只加了 1.8 个点——草稿纸对口算题是累赘。
符号那一栏最妙,请多看一眼灰色小字里的例题:示范只教过"取 2 个词的末字母",测试却考 4 个词——直接答几乎全军覆没(0.2%),带链的模型却把学到的方法延长使用,做对了六成。这正是第 1 节"换一组数字"的放大版:链装下的是可复用的过程,不是一次性的答案。链的价值不看领域,看步数:一步够的题,链是累赘;步数越多,链越值钱。
PaLM 540B 的整张成绩单(把三个标签摊平在一张表里)
| 任务 | 需要几步 | 直接答 | 带思维链 | 差值 |
|---|---|---|---|---|
| GSM8K 数学 | 2-8 步 | 17.9% | 56.9% | +39.0 |
| SVAMP 数学 | 1-2 步 | 69.4% | 79.0% | +9.6 |
| StrategyQA 常识 | 隐含 2-3 跳 | 68.6% | 77.8% | +9.2 |
| CommonsenseQA | 1 跳 | 78.1% | 79.9% | +1.8 |
| 取末字母 ×4 词 | 4 步(超示范) | ≈0% | ≈63% | +63 |
| 硬币翻转 ×4 次 | 4 步(超示范) | ≈50% | ≈90% | +40 |
把"需要几步"那一列和"差值"那一列对照着读——相关性肉眼可见。这张表就是本节原则的证据链。
杠精时间:链里起作用的,会不会只是那些算式?(可跳过)
好问题——论文替你问过了。他们做了一版"只留算式"的示范:把例题答案里的自然语言全删掉,只剩 23 − 20 = 3 这样的裸算式。结果在 GSM8K 上帮助寥寥:这个题库的难点恰恰在于"把一句话翻译成该列什么式子",而这一步是用语言想清楚的("用掉 20 个"意味着减法,"又买 6 个"意味着加法)。算式是思考的落点,不是思考本身。这也回答了为什么链要用人话写:对需要理解题意的题,删掉人话,链就死了。
然而还剩最后一个悬案。回到那句咒语:措辞重要吗?"一步步想"换成别的话还灵吗?零件你已经集齐了——示范、步骤、规模——这次不用我们揭晓,你自己就能预测。
沙盒:咒语大挑战
下面七句"咒语",都会被贴在同一道苹果题的后面——其中两句不是我们编的,是论文自己的对照实验。先在心里把七句话分成"有效"和"无效"两队,再一句句点开验证。全押对,说明你已经看穿它了:
揭底:有效与无效的分界线,跟深呼吸没有关系,跟语气励志不励志也没有关系,甚至跟"多写字"都没有关系——省略号那句就是论文的对照实验:只给"思考的空位"、不给内容,成绩和直接答一模一样;把解释挪到答案后面补,也一样白搭。有效的咒语只做一件事:让模型在作答之前,先产出与题目相关的中间步骤。内容要真,时机要早——草稿纸上得写真演算,而且得在交卷之前打。
后来的人们喜欢用一种更机械的直觉理解它:模型每生成一个词只做固定量的计算,链把几步的难题摊到了几十次计算上——买 token 就是买思考时间。这个直觉不完全严谨(你刚点过的省略号实验就是它的反例:空转的计算不算思考),但它指对了方向,也预言了后来"让模型多想一会儿就更聪明"的整条技术路线。(真事一则:2023 年,谷歌让 AI 自动搜索"最灵的咒语",搜出来的冠军恰好是"深呼吸,一步一步解决这个问题"——现在你知道了,起作用的仍然是后半句。)
从一句咒语到会思考的模型
这篇 2022 年的论文,全部贡献可以写在一张便签上:在例题里把推理写出来,大模型就会跟着把推理写出来,而写出来的推理常常是对的。但你今天拨过的每一个控件,后来都长成了一个方向。你看着错误在第 2 步显影、看着链和答案脱节——于是有人让模型一题生成几十条链、让答案投票,有人训练专门的模型给推理的每一步打分;你拖着规模滑块看绿线起飞——"涌现"成了此后大模型研究里最响的词之一;你在沙盒里发现措辞无关紧要、给不给真步骤才紧要——"提示词工程师"一度成了一份真实的职业。
还有一条更远的延长线。"一步步想"和"一步步做"只隔一层窗户纸:如果链的每一步不只是一句话,还可以是一个动作——查一次资料、跑一段代码、订一张票——那么会打草稿的模型,就成了会做事的代理(agent)。今天所有"AI 帮你完成任务"的产品,骨子里都是一条思维链,只是链上的某些环节从"想"换成了"做"。
而这条路的尽头,是把咒语本身扔掉。几年之后的推理模型——OpenAI 的 o1、DeepSeek 的 R1、Claude 的扩展思考——干脆把"先打草稿再作答"训练成了本能:不再需要例题示范,不再需要任何人念咒。今天你看到 AI 在回答前显示"思考中",屏幕后面滚动的,正是一条思维链。它源头上的想法,就是你在第 1 节亲眼见证的那次翻转:想让机器像人一样解决问题,先让它像人一样,把想法一步一步说出来。
最后留一个可以带走的实验:今晚随便打开一个 AI 对话框,拿一道你自己领域里的多步难题,问它两遍——一遍要求"直接给结论",一遍要求"先一步步分析再下结论"。然后像你在第 3 节做的那样,顺着它的链找一找有没有哪一步不对劲。从这一刻起,你和 AI 的关系变了一点点:你不再只是收答案的人,你是那个能指着第 2 步说"就是这里"的人。
这篇论文的孩子们(如果你想顺着往下走)
都从你今天摸过的某个零件长出来:自洽性投票(Wang et al. 2022)——你在第 3 节看到链会错,那就一题采样几十条链、让答案多数表决,GSM8K 直接再涨十几个点;零示例思维链(Kojima et al. 2022)——把 8 道例题省成一句"Let's think step by step",就是本文开头那句咒语的出处;过程奖励模型(Lightman et al. 2023)——你能指出"错在第 2 步",就能训练一个模型专门干这件事;推理模型(2024 起)——用强化学习把打草稿变成本能,链从提示技巧变成了模型体质。
术语小抄:万一别处有人跟你聊起这些词(开头保证过你不用记,现在也不用)
| 术语 | 你已经亲手玩过的那个东西 |
|---|---|
| 思维链 CoT | 第 1 节右边那串"23−20=3, 3+6=9" |
| 提示 prompt | 递给模型的整张纸条(例题+新题+咒语) |
| 少样本 few-shot | 第 2 节的"先给几道例题" |
| 零样本 zero-shot | 不给例题、只念"一步步想"的偷懒版 |
| 涌现 emergence | 第 4 节绿线在千亿参数处的突然起飞 |
| 消融实验 ablation | 沙盒里的"省略号"和"先答后补"——拆掉零件看哪个才是关键 |
| 忠实性 faithfulness | 第 3 节第三个标签:链算出 10 嘴上答 9 的那次背叛 |