「让我们一步一步想」这句话,为什么能撬动大模型推理

论文速览卡

论文标题Chain-of-Thought Prompting Elicits Reasoning in Large Language Models(思维链提示激发大语言模型的推理能力)
作者Jason Wei、Xuezhi Wang、Dale Schuurmans、Maarten Bosma、Brian Ichter、Fei Xia、Ed Chi、Quoc Le、Denny Zhou
机构Google Research(Brain Team)
arXiv 编号arXiv:2201.11903(2022 年 1 月首版)
正式发表NeurIPS 2022
核心贡献提出「思维链提示」:在提示里给几个带中间推理步骤的示例,诱导足够大的语言模型自发生成推理链,从而显著提升复杂推理任务的正确率。

为什么值得精读

如果要在「提示工程」这条线路上找一篇奠基作,Chain-of-Thought 是最绕不开的一篇。它揭示了一个后来被反复验证的现象:大模型不是不会推理,而是没有被「邀请」去推理。你直接问它答案,它常常凭直觉蹦出一个错误结果;你加上一句「让我们一步一步想」,它就能把中间步骤展开,正确率应声而涨。

更妙的是,这篇论文展示这种能力是「涌现」出来的——只有当模型足够大时,思维链才有用;小模型加了思维链反而可能变差。这个观察为后来「能力随规模涌现」「推理是大模型的专属能力」等讨论埋下了伏笔,也为 DeepSeek-R1、o1 这类靠强化学习内化推理的工作提供了思想源头。理解思维链,是理解现代大模型推理的起点。

还有一个容易被忽略的价值:这篇论文把「提示」从一门玄学变成了一门可复现的工程。在此之前,人们隐约知道「换个问法模型会变强」,但没人系统说清「到底怎么问、为什么这样问有效」。CoT 用三组干净的对照实验,第一次把「在示例里展示推理过程」这个动作从经验上升为方法。读懂它,你就拿到了理解后续一切推理增强工作(Self-Consistency、ToT、甚至 o1/R1)的那把钥匙。

背景:要解决什么问题

在思维链之前,想让大模型做好数学题这类多步推理任务,主流做法是「监督微调」——喂大量带标准答案的题目,让模型背会解题套路。但这条路有两个明显缺陷:一是需要海量标注数据,成本高;二是模型学到的往往是「题目到答案」的表面映射,换一个没见过的题型就露馅。

与此同时,研究者已经观察到,大模型在生成文本时其实具备一定的「逐步推导」能力,只是传统 prompt 没有把它引导出来。一个关键的前期线索是「scratchpad」(草稿纸)技术:让模型先输出中间计算过程、再给最终答案,能提升它做算术题的表现。但 scratchpad 需要针对每个任务专门微调,通用性差。于是这篇论文提出一个朴素而有力的想法:与其微调模型,不如在提示词里「示范」推理过程,让模型照着这个范式自己往下推。这就是思维链提示的核心动机——用极低的成本,把模型已有的推理潜能激发出来。

核心方法讲透

思维链提示的做法,用一句话就能说清:在 few-shot 示例里,不仅给出「问题 → 答案」,还给出中间的「推理步骤」,让模型模仿这种「先推理、再给答案」的格式。

以一个简单的算术题为例。标准 few-shot 的示例长这样:「问:小明有 5 个苹果,又买了 3 个,一共有几个?答:8 个。」——只有问题和答案。而思维链示例会写成:「问:小明有 5 个苹果,又买了 3 个,一共有几个?答:小明一开始有 5 个,又得到 3 个,所以 5 + 3 = 8,一共有 8 个苹果。」——多了中间那句「5 + 3 = 8」的推导。就是这点差别,让模型在面对新问题时,也学会「先把步骤展开,再下结论」。

论文把它和两种基线做了对照。第一种是「标准提示」(standard prompting),直接给问题要答案;第二种是「仅给答案的 few-shot」——示例里只有问题和最终答案,没有中间过程。思维链的关键增量,恰恰是那几行中间推理。作者强调,思维链之所以有效,是因为它把一个多步问题拆成了一个个可被模型「逐句」处理的子问题,每一步都能分配到额外的计算量,从而把「一次猜答案」变成「一串有依据的推导」。

思维链有几种不同的写法,论文和后续工作都探讨过:最经典的是「手工写示例」——人亲自写几条带推理的示范;后来发展出「零样本思维链」(只要加一句「Let’s think step by step」就能触发,无需示例);还有「自动思维链」(让模型自己生成推理示例)。这些变体都建立在同一个核心假设上:只要诱导模型把推理过程显式地「说」出来,它的正确率就会提升

还有一个绕不开的观察:思维链是「大模型专属」的。论文明确指出,这类推理能力在足够大的语言模型里才会自然涌现;对小型模型,思维链非但没用,反而可能因为推理链本身出错而拖累最终答案。这个「规模门槛」是思维链区别于普通 prompt 技巧的重要特征——它不是万金油,而是规模红利。

思维链还有一个实用的副产品:因为中间步骤是自然语言,人可以逐行检查模型「错在哪一步」,这比一个黑箱答案更容易调试和信任。后来的「自我一致性」(Self-Consistency)、「思维树」(Tree of Thoughts)等方法,都是在思维链这条主线上继续加码。

实验结果与关键数据

论文在三类性质完全不同的任务上系统验证了思维链的威力:算术推理(以 GSM8K 数学文字题为代表,此外还有 SVAMP、AQuA 等)、常识推理(如 CSQA、StrategyQA、日期理解、体育理解)、符号推理(如字母拼接、硬币翻转这类纯符号操作)。这三类任务分别对应「多步计算」「背景知识 + 推理」「规则推演」,能覆盖大模型推理的主要形态。

最出圈的一组数字来自数学文字题基准 GSM8K。论文用一个 5400 亿参数的模型(PaLM)做测试,只用 8 个思维链示例,就在 GSM8K 上达到了当时最先进的准确率,甚至超越了用验证器微调过的 GPT-3。论文原话是「prompting a 540B-parameter language model with just eight chain of thought exemplars achieves state of the art accuracy on the GSM8K benchmark of math word problems, surpassing even finetuned GPT-3 with a verifier」——「八个示例」对「微调过的 GPT-3」,这个对比把思维链的性价比拉满了。

具体到数字上,论文报告的标准提示(standard prompting)下 PaLM 540B 在 GSM8K 上只有约 18% 的正确率,而加上思维链后直接跃升到约 57%,翻了不止两倍。更关键的是,它超过了此前靠「大量微调 + 验证器」才做到的 55% 上下,而思维链这边只用了 8 个手写示例、零训练。这种「少得多的成本、追平甚至超越的训练结果」正是思维链一炮而红的原因。

论文还对「思维链为什么有效」给出了一层机制解释:把一个需要多步推导的问题,拆成一个个可被模型「逐句」处理的中间步骤,等于给每一步都分配了额外的计算预算,模型不再被逼着「一步到位地蹦出答案」,而是能沿着推理链逐步逼近正确结果。同时,思维链把模型「怎么想的」用自然语言摊开,人可以直接看到它在哪一步卡壳,这为调试和信任提供了抓手——这是黑箱式直接给答案所不具备的。

另一个关键发现是「规模效应」:思维链的增益只有在模型参数达到一定规模后才显现,模型越小增益越小甚至为负。论文里的曲线清楚地显示,从 8B、62B 到 540B,随着参数量跨越某个阈值,思维链带来的准确率提升从「几乎没有」变成「陡峭上升」。这直接呼应了论文标题里的「Elicits」——思维链不是灌给模型的,是把它内在的能力「诱导」出来。这条规模曲线,后来被反复引用为「大模型涌现能力」的重要证据。

思维链的变体:从「手工示例」到「一句话触发」

原论文的思维链需要「手工写示例」,但很快社区就发现,这条路还能走得更省。沿着「怎么更低成本地激发推理」这条线,思维链演化出了几个重要变体,理解它们能帮你把握这个方向的完整图景:

  • 零样本思维链(Zero-shot CoT):根本不用示例,只要在问题后面加一句「Let’s think step by step」(让我们一步一步想),就能触发模型的推理行为。这让思维链从「few-shot 专属」变成了「随手可用」,也是今天大家用大模型时最常无意识用到的技巧。
  • 自动思维链(Auto-CoT):手工写高质量示例又累又挑人,Auto-CoT 让模型自己「生成带推理的示例」,自动聚类出一批多样化的样例,省去了人工构造的麻烦,同时尽量保持示例的多样性。
  • 自我一致性(Self-Consistency):不是改进「单条链」,而是对同一个问题采样多条思维链,再对各自的最终答案「投票」,取多数。它针对的是「单条推理链可能出错」的问题,用「多路径表决」把错误率进一步压低。
  • 程序辅助的思维链:让模型在推理时「写代码并执行」来辅助计算(比如 Program-Aided Language Models),把「模型心算」换成「调用解释器算」,专门解决纯语言推理在精确计算上的短板。

这些变体共享同一个底层逻辑:显式地展开中间推理,给模型更多「思考」的机会。区别只在于「用什么方式诱导展开」——手工示例、一句咒语、还是自动生成。理解了这条主线,你就明白为什么后来的 o1、R1 虽然转向了「训练」,却依然保留了「让模型生成长推理链」这个核心动作——它们做的事情,本质是把「提示时诱导推理」升级成了「训练时内化推理」。

思维链为什么能奏效:三个机制视角

关于思维链「为什么有效」,论文给出的是最直接的版本——「拆步骤、多算几步」,但后续研究把它挖得更深,大致有三个互补的视角:

第一,额外的计算量。标准 prompting 下,模型用一个 token 就要给出答案,几乎没有「算」的空间;而思维链让模型输出一长串中间 token,每一步都经过一次前向计算。这相当于给模型「追加了计算预算」——它不再是「一眼看出答案」,而是「一步一算地逼近答案」。这解释了为什么思维链对「多步推理」任务特别有效,而对「一步就能答」的简单任务收益不大。

第二,中间结果的显式化。当推理过程被写成自然语言时,模型可以在后续步骤里「读回」自己前面写下的中间结果,形成一种「记忆」和「依赖」。这避免了「所有推理都要在一次前向里隐式完成」的压力,让复杂问题可以被「分段求解」。

第三,与训练数据的对齐。思维链式的「逐步推理」文本,很可能在预训练语料(数学题解、教程、论坛问答)里大量存在。用思维链提示,某种程度上是「激活了模型在预训练时见过的推理范式」,让它进入一个更「会解题」的生成模式。这三个视角并不矛盾,它们共同解释了同一个现象:思维链不是魔法,而是「给足计算、给足空间、对上范式」之后,模型已有推理能力的自然释放

局限与争议

思维链远非完美。第一,它的收益高度依赖模型规模,小模型基本享受不到这波红利,这限制了它在端侧和低成本场景的适用。第二,思维链并不能保证推理正确——它只是让模型「更愿意展开推理」,展开的过程本身仍可能犯错,而且有时模型会「一本正经地胡说」,推理链越长越难保证每一步都对。第三,作为 few-shot 方法,它的效果对示例的选择和写法比较敏感,示例质量差会直接拖累表现。第四,思维链本质上是「外挂」的提示技巧,推理能力没有真正内化到模型里,这也是后来 DeepSeek-R1、o1 选择用强化学习把推理「学进模型」的原因之一。

还有一个更隐蔽的问题:思维链把推理过程「摊开」的同时,也把模型的「思考」暴露了出来。这在调试时是好事,但在涉及安全、隐私、或不想泄露推理套路的场景里,反而是风险——后来 o1 选择「隐藏思维链、只给摘要」,正是对这一点的回应。另外,「模型说的推理步骤」和「它实际决策依据」之间未必一致,思维链可能是「事后合理化」而非「真实思考」,这也是研究界持续争论的焦点。

横向对比同类工作

  • 标准 few-shot 提示:只给答案不给过程,简单任务够用,多步推理容易翻车。
  • 思维链(CoT):给中间推理示例,多步任务大幅涨点,但依赖模型规模。
  • 自洽性(Self-Consistency):对思维链采样多条路径再投票,用「多数表决」进一步降低单链出错的风险,可视为思维链的增强。
  • Least-to-Most / 思维树(ToT):把问题显式拆成子问题逐一求解(Least-to-Most),或用树状搜索在多个推理分支间探索(ToT),都是对「线性思维链」的结构化升级。
  • 监督微调(SFT):把答案直接训进模型,效果好但数据贵、泛化弱;思维链证明了「有时提示比微调更划算」。

从更长的视角看,思维链是「推理增强」这条线的起点。它之后,研究分成了两股:一股继续在「提示」层面加码(Self-Consistency、ToT、自动思维链);另一股则把目光转向「训练」——既然思维链能激发推理,那能不能用强化学习把这种推理行为直接「固化」进模型权重?DeepSeek-R1 和 OpenAI o1 正是这条后一股路线的集大成者。理解了这个分叉,你就能看懂今天推理大模型为什么会从「提示技巧」一路演进到「训练范式」。

思维链给工程落地的一条实用清单

如果把思维链从论文翻译成「今天就能用」的实践,可以提炼成几条可直接照做的经验。

第一,分场景决定要不要用思维链:数学、逻辑、多跳问答、代码这类「多步推理」任务,思维链收益最大;而翻译、摘要、改写这类「一步到位」的任务,加了思维链往往只是徒增 token、还拖慢速度。第二,示例比咒语更稳:零样本那句「Let’s think step by step」很方便,但在复杂任务上,精心写的 3-5 个带中间推理的示例,通常比一句咒语效果更可控;示例要覆盖「不同题型」,避免模型只学会一种套路。第三,给推理留出输出空间:如果模型一次生成就把答案蹦出来,说明它根本没「想」,可以在 prompt 里显式要求「先列出已知条件、再分步求解、最后给出结论」,把思考过程「逼」出来。第四,用多路径兜底:对关键、易错的问题,让模型生成多条思维链再投票(自洽性),能显著压低单条推理链出错的风险。

这些经验都建立在一个共同的底层逻辑上:思维链不是「让模型变聪明」,而是「给模型一个把它已经会的推理能力用出来的机会」。理解了这一点,你就知道什么时候该用、什么时候是画蛇添足。

总结与启示

思维链给行业上了两课。第一课是「引导比灌输便宜」:很多能力模型本来就有,缺的是一个正确的提问方式,这直接催生了后来庞大的提示工程实践。第二课是「规模解锁能力」:同样的方法,小模型无效、大模型暴涨,这让「涌现能力」从玄学变成了可验证的实验结论。

对工程实践的启示则更直接:在接大模型做复杂任务时,与其急着微调,不如先试试把任务拆步骤、给思维链示例,往往能用极低成本拿到明显提升。具体来说,面对数学、逻辑、多跳问答这类任务,写 prompt 时别只给「输入输出对」,要在示例里把「中间怎么想的」也写出来;对不确定的问题,甚至可以引导模型「先复述问题、再列已知条件、再分步求解」,效果往往立竿见影。而对后续研究的启示,是把「推理」从提示技巧变成训练目标——这正是 R1 与 o1 那批工作的来处。一句话,思维链教给我们的,不是某个具体的 prompt 模板,而是一个更底层的认知:大模型的推理能力,是需要被「唤醒」的

参考来源

arXiv:2201.11903 — Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

Google Research Blog — Language Models Perform Reasoning via Chain of Thought

主要菜单