想象你站在一条陌生的街道上,急着赶去火车站。你拉住一个路人问:“火车站怎么走?”对方往往随手一指:“往那边走,到了路口再问。”——这句话太模糊了,你还是心里打鼓。可如果你换个问法:“请一步步告诉我怎么走,先左转还是右转?”对方就会停下来,掰着指头从“出了这栋楼先左转”开始,把每个路口、每个路口后的建筑物都讲得清清楚楚。 2022年,AI科学家发现了一模一样的现象。他们在一道数学题后面加上一句“让我们一步步思考”,原本只会直接扔出答案的大模型,忽然像被按下了某个开关——它开始先生成推理步骤,再得出结论。不需要任何示例,不需要任何训练,仅仅一句引导语,就让模型的推理能力大幅提升。这个技巧,就是 Zero-shot CoT(零样本思维链推理)。 这个发现告诉我们:大模型内部其实早已埋着推理的“地图”,只是平时你的问法没让它展开讲。而“让我们一步步思考”这句咒语,就是打开推理之门的钥匙。
对AI从业者而言,掌握Zero-shot CoT意味着不写一行训练代码、不准备任何标注示例,仅靠提示词工程就能让大模型在多步推理任务上效果翻倍——这是AI应用中投入产出比最高的技巧之一。
目录
可视化演示
对比直接回答与逐步推理的差异,展示"让我们一步步思考"如何激发大模型链式推理能力,提升复杂问题准确率。
本节配有交互动效(进入视口后自动加载,约 3KB)。
直接回答模式 模型直接从问题跳到答案,无中间推理 准确率低,复杂问题易出错 简单触发语即可改变推理路径
概念定义——一句咒语唤醒推理
回到问路的场景。你发现没有?同样一个人,同样一条路线,你怎么问,决定了他怎么答。你要是问“怎么走”,他给的是模糊指向;你要是补一句“请一步步讲讲”,他立刻切换成“先左转、再直行、过两个红绿灯”的叙述模式。Zero-shot CoT 的发现,正是抓住了这个“问法决定答法”的本质。
在AI领域,“零样本”(Zero-shot)指的是不给模型任何示例,直接靠提示词完成新任务。过去人们认为,要让模型学会多步推理,必须准备大量带推理步骤的示例,也就是Few-shot的方式。但2022年Kojima等人发现,只要在问题后追加一句“让我们一步步思考”(Let's think step by step),模型就会自发产生中间推理过程,最终答案的准确率大幅上升。
这个技巧的本质,是一条精心构造的提示词模板:
你看,这个技巧就像那个问路人——模型一直拥有推理的能力,只是你的“请一步步讲讲”这句话,让它把能力真正施展了出来。
- 提示词变量$\text{Prompt}_{\text{ZSCoT}}$ 表示最终发送给模型的完整提示文本。
- 原始问题$q$ 代表用户输入的问题原文,例如“小明有5个苹果…”。
- 字符串拼接加号 $+$ 表示把问题与引导语拼接为一个整体。
- 触发引导语文本常量“让我们一步步思考。”是激活推理的关键咒语。
原理机制——为什么“一步步”有魔力
为什么一句“请一步步告诉我”就能让人讲得清楚?因为这句话改变了回答者的信息组织方式:它让人从“总结式输出”切换到了“顺序式叙述”。大模型的“思考”同样如此——它本质上是逐字预测下一个词,但不同的提示词会将它的解码引向不同的路径。
标准提示下,模型被训练成“直接给出最终答案”的回答模式,就像路人脱口而出“往东走”;而“让我们一步步思考”将模型切到“推理模式”——它在生成最终答案之前,必须先输出一系列中间步骤。这些步骤相当于把到达答案的路径显式写了出来,大大降低了“跳步”导致的错误率。
从概率角度看,模型生成每一步都是在做条件概率选择:
这就像一个路人每走到一个路口,都要根据“刚才走过的路 + 当前位置 + 你的分步请求”来决策下一步往哪拐。每步决策都依赖之前的决策,整条路才走得连贯。
- 概率乘法连乘符号 $\prod_{t=1}^{T}$ 表示所有步骤概率相乘,模型每一步都在做新的决策。
- 条件概率$P(w_t \mid w_{<t}, q, \text{CoT指令})$ 读作“给定前面的词、问题和CoT指令时,下一个词是 $w_t$ 的概率”。
- 推理总步数$T$ 是模型生成的词元总数量,也就是推理链条的长度。
数学推理——准确率翻三倍
数学题是对“逐步推理”最严苛的试金石——一步错,步步错。给这个问路人一个复杂路线:先直行、再左转、上台阶、过天桥,最后右转……如果你让他一口气说出终点,他很容易跳漏某个转弯。但你要是让他一步步讲,他每一段路都走踏实了,最终到达目的地的概率自然大增。
Zero-shot CoT在数学推理上的表现,正是这个逻辑的完美印证。论文《Large Language Models are Zero-Shot Reasoners》报告了令人震撼的数据:在MultiArith数据集上,标准提示下GPT-3的准确率仅17.7%,而加上“让我们一步步思考”后,准确率飙升至78.7%——直接从“几乎不会做”变成“大部分能做对”。
在GSM8K(小学数学应用题集)上,Zero-shot CoT同样把GPT-3从约10.4%提升到约40.7%。这就像让一个本来只能凭直觉乱猜的学生,被要求“把解题步骤写在草稿纸上”——一旦步骤写出来,错误率就肉眼可见地下降。
- CoT准确率$\text{Acc}_{\text{ZSCoT}}$ 指使用Zero-shot CoT提示时的任务准确率,论文实测78.7%。
- 标准准确率$\text{Acc}_{\text{标准}}$ 指普通提示(直接问答案)的准确率,仅为17.7%。
- 差值计算两者相减得到的61.0%,就是Zero-shot CoT带来的净提升。
逻辑推理——链条推导初显身手
数学是数字的推理,逻辑是关系的推理,但两者都依赖“链条式思考”。如果说计算题是“沿着路线走”,那逻辑题就是“顺着线索找真相”——比如“小明比小红高,小红比小李高,那谁最高?”你必须先建立三个事实的链条,才能推出结论。
Zero-shot CoT在逻辑推理上也展现了同样的能力。面对这类多跳问题时,模型会生成类似这样的中间步骤:“小明比小红高,小红又比小李高,所以小明比小李高,因此小明最高。”这些中间事实(中间判断)就是推理链上的一环扣一环。
用公式表示,逻辑推理的结论是所有中间事实的汇总函数:
拿问路来类比:你提供的每个路标信息就是“事事实”,而“结论”就是火车站的方向。Zero-shot CoT让模型把这些路标信息逐一列出来再汇总,而不是直接猜终点——这就是它能在逻辑任务上发力的根本原因。
- 事实序列$\text{事实}_1, \text{事实}_2, \ldots, \text{事实}_n$ 是推理链上的一个个中间判断,如“小明比小红高”。
- 汇总函数$g(\cdot)$ 表示将所有中间事实组合起来、推出最终答案的运算。
- 最终结论$结论$ 是整条推理链的终点,如“小明最高”。
Few-shot对比——少样本与零样本的较量
你可能想问:既然Few-shot CoT(带示例的思维链)早就存在,为什么Zero-shot CoT还能引起轰动?想象一下:以前你给路人看一张地图(示例),他照着地图能指路;现在你不给地图,只说“请一步步讲”,他居然也把路说明白了——这当然令人惊讶。
从性能看,两者差距并没有想象中巨大。论文对比显示,Few-shot CoT(提供8个手工示例)在GSM8K上准确率约53%,而Zero-shot CoT约40.7%——差了12个百分点左右,但Zero-shot完全不需要准备示例。换句话说,零样本用“几乎免费”的代价,获得了少样本约75%的效果。
从成本角度,Few-shot需要一位工程师花时间精心设计示例——示例写得好不好、顺序对不对、覆盖全不全,都影响效果。而Zero-shot的完整成本,就是往提示里加一句话。这就好比请一位向导(Few-shot)虽然指路更准,但他需要你提前说明要去哪里、准备地图;而一句“请一步步讲”(Zero-shot)随到随用,几乎零成本。
- 差异符号$\Delta$(读作delta)表示两者之间的差距。
- Few-shot准确率$\text{Acc}_{\text{Few-shot-CoT}}$ 指提供8个示例的思维链提示准确率,约为53%。
- Zero-shot准确率$\text{Acc}_{\text{Zero-shot-CoT}}$ 指零样本思维链准确率,约为40.7%。
实操指南——三行提示词上手
那么,在实际工作中该怎么用Zero-shot CoT呢?还是那个问路的场景:要想获得分步路线,你的问题至少要包含“分步讲述”的请求。在AI应用里,这个请求可以有很多变体,就像“麻烦说详细点”“按顺序讲”“先告诉我第一步是什么”——意思相通,但措辞可以多样。
一个标准的Zero-shot CoT提示模板如下:
实际使用时,常见的触发词变体包括:"Let's think step by step."、“请逐步分析。”、“先列出已知条件,再逐步推导。”这些都能起到类似效果。最佳实践是:明确要求输出步骤(如“用编号列出”),并设置温度参数为较低值(如0),以减少随机性,保证推理稳定可靠。
- 背景信息可选的上下文片段,帮助模型理解场景。
- 问题文本核心任务描述,必须明确无歧义。
- 格式要求可选,约束输出的形式,如“用编号列出步骤”。
- 触发引导语固定的分步请求,是整个模板的灵魂。
局限挑战——不是万能钥匙
问路人虽然能一步步讲,但如果他本身方向感极差,分步讲也可能把你带沟里去。Zero-shot CoT也有同样的局限——它的效果,强依赖于模型自身的“底图”。
首先,模型能力依赖。一个参数量很小的模型,即使你让它“一步步思考”,它也生成不出有意义的推理步骤——就像让一个没方向感的人分步指路,他只能编。Zero-shot CoT在1750亿参数的大模型上效果显著,但在小型模型上提升有限,甚至可能毫无效果。
其次,幻觉风险。模型被引导生成中间步骤,但这些步骤可能是编造的。更微妙的是,步骤越多,出错概率反而可能累积:
最后,场景适用性。对于“北京是哪个国家的首都?”这类单步知识问答,加“让我们一步步思考”完全是画蛇添足——就像人已经走到火车站门口,你还让他从头讲一遍路线。简单任务加CoT,不仅增加时延,还增加幻觉风险。因此,判断“这个任务是否需要多步推理”,是使用Zero-shot CoT前的第一课。
- 错误概率$P(\text{答案错误} \mid \text{步骤} > k)$ 表示当推理步骤超过 $k$ 步时,最终答案出错的条件概率。
- 不等式$\geq$ 表示“大于或等于”,说明长链路推理的错误率可能不低于短链路。
- 对比条件概率$P(\text{答案错误} \mid \text{步骤} \leq k)$ 表示步骤不超过 $k$ 步时出错的条件概率。
AI 应用场景
智能客服的“分步诊断”
阶段:提示工程 / 推理增强
解决的问题:传统客服机器人面对复杂售后问题时,常常直接给出笼统答复或答非所问。使用Zero-shot CoT后,客服模型会在回答前先生成“问题拆解、原因分析、处理步骤”等中间环节,回答质量显著提升。
具体案例:某电商平台的售后机器人收到“我买的手机两天就黑屏了”的投诉。启用Zero-shot CoT提示后,模型输出:“第一步,判断是软件故障还是硬件故障;第二步,若软件故障建议强制重启;第三步,若无法解决则引导走售后检测流程。”用户满意度明显改善。
AI教育助教的“解题步骤”
阶段:内容生成 / 教育场景落地
解决的问题:教育场景最刚需的恰恰是“过程”而非“答案”。传统AI直接给答案,学生无法理解推导。Zero-shot CoT让AI像老师一样写清每一步。
具体案例:某在线学习平台接入Zero-shot CoT,学生提问“为什么把分数2/5化成小数是0.4?”时,AI不是直接甩结果,而是逐步讲解:“分数2/5表示把1分成5份取2份→除法运算2÷5→商为0.4”。该功能上线后,学生“追问为什么”的次数减少约35%。
数据分析助手的“逻辑透明”
阶段:BI分析 / 可解释AI
解决的问题:企业数据分析中,AI给出的结论如果无法解释,业务方难以信服。Zero-shot CoT让AI把结论背后的推理链条展示出来。
具体案例:某零售企业的数据分析助手被问到“为什么华东区本月销售额下滑?”模型通过Zero-shot CoT逐步列出考察维度:“先看销量是否下降→再分品类看→发现家电类销量下滑18%→结合天气因素分析→得出结论。”这种可解释的分析报告,帮助管理层迅速定位问题。
Python 演示
"""Zero-shot CoT 演示:模拟"标准提示"与"思维链提示"的输出差异""" import re def parse_nums(question): """从问题文本中提取所有数字""" return [int(n) for n in re.findall(r"\d+", question)] def solve(question): """模拟大模型的推理内核:算出正确结果""" nums = parse_nums(question) if not nums: return None return sum(nums) def direct_answer(question): """模拟标准提示:只给结论,不给过程""" answer = solve(question) return f"答案是 {answer}" if answer else "无法理解问题。" def cot_answer(question): """模拟 Zero-shot CoT:先分步,再给结论""" nums = parse_nums(question) answer = solve(question) lines = ["让我们一步步思考:"] lines.append(f"1. 从问题中提取关键数字:{nums}") lines.append(f"2. 逐个累加:{' + '.join(map(str, nums))} = {answer}") lines.append(f"3. 最终答案:{answer}") return "\n".join(lines) if __name__ == "__main__": question = "小明有5个苹果,又买了3个,又买了2个,现在一共有几个?" print("问题:", question) print("-" * 40) print("【标准提示】") print(direct_answer(question)) print("-" * 40) print("【Zero-shot CoT 提示】") print(cot_answer(question))
def parse_nums(question):从问题中提取数字列表,模拟模型“理解问题”的第一步。return [int(n) for n in re.findall(r"\d+", question)]用正则匹配所有数字并转成整数,相当于模型识别关键信息。def solve(question):模拟模型的推理内核,算出正确的最终答案。def direct_answer(question):模拟标准提示:模型跳过中间过程,直接输出结论。def cot_answer(question):模拟Zero-shot CoT:先输出步骤再给结论,这是提示词生效后模型的行为。answer = solve(question)在分步模式中,同样先算出答案,但输出时把过程展开。"1. 从问题中提取关键数字:{nums}"生成的第一步中间文本,对应思维链的第一个环节。if __name__ == "__main__":程序入口,执行两种提示方式的对比演示。
常见误区
误区我之前听说只要在提示里加上“让我们一步步思考”,不管什么模型都能学会推理,效果立竿见影。
正解Zero-shot CoT不是“教会”模型推理,而是“激活”模型已有的推理能力。模型本身必须足够大、预训练阶段已经掌握了逻辑和数学知识,引导语才有意义。小模型根本“接不住”这句咒语,生成的多是胡编的步骤。就像让一个不认路的人分步指路,他分得再细也是错的。
为何常见:因为网上很多教程都在强调“加上这句就够了”,容易让人忽略它发挥作用的前提——模型能力本身要过关。
误区我一直以为思维链(Chain-of-Thought)必须像Few-shot那样给模型看几个带推理过程的例子,不然模型不知道怎么“思考”。
正解Zero-shot CoT的伟大之处恰恰在于——一个示例都不需要。模型在预训练阶段见过海量的“问题+分步解答”文本,已经内化了逐步推理的模式。你只需给一个触发引导语,它就能调用这种模式。Few-shot示例只是锦上添花,不是必需品。
为何常见:因为Few-shot CoT出现更早、传播更广,人们习惯性地把“思维链”和“示例”绑定在一起,反而忽视了零样本的突破性。
误区让模型写更多步骤、更长的推理链,答案应该更准确,毕竟“思考得越仔细越不容易错”。
正解推理步骤每增加一步,就多一次出错的机会。模型可能在某个中间步骤上产生幻觉(编造不合理的事实),而一旦中间步骤错了,后面的推导全盘皆输。实践中,简单任务强行加长步骤反而增加错误率和延迟。
为何常见:这符合日常直觉——人想得越细越不容易出错。但模型不是“想”,它是逐词生成,每一步都是概率采样,误差会像滚雪球一样累积。
误区既然Zero-shot CoT这么厉害,那以后所有提示都要加上“让我们一步步思考”,效果肯定比标准提示好。
正解对于“法国的首都是哪里”这类单步知识问答,CoT完全没有必要,加上反而画蛇添足——模型可能生成一堆无用的中间描述,增加延迟。CoT只在任务需要多步推理(数学、逻辑、复杂分析)时才有优势。用不用CoT,取决于任务复杂度。
为何常见:因为看到论文里数学任务准确率翻了三倍,容易产生“万能药”的错觉,忽略了论文只聚焦在推理密集型任务上。
面试题
Q1. Zero-shot CoT的核心触发词是哪一句?
- A.请给出最终答案
- B.让我们一步步思考← 正确答案
- C.请总结核心结论
- D.直接回答是或否
答案:B。触发词“让我们一步步思考”是Zero-shot CoT的灵魂,它让模型从“直接给结论”切换到“分步推理”模式。其他选项都不具备激发中间推理步骤的能力。
Q2. “零样本”在Zero-shot CoT中指的是什么?
- A.模型从未进行过训练
- B.提示中不包含任何示例← 正确答案
- C.数据集中没有该任务
- D.模型参数全部为零
答案:B。“零样本”指提示中不提供任何“问题-答案”示例,模型完全靠引导语自行推理。它不是指模型没训练过——模型恰恰在预训练阶段积累了海量知识。
Q3. 在MultiArith数据集上,Zero-shot CoT将GPT-3的准确率提升到了多少?
- A.从约18%提升到约30%
- B.从约18%提升到约50%
- C.从约18%提升到约79%← 正确答案
- D.从约18%提升到约95%
答案:C。论文实测标准提示准确率17.7%,使用Zero-shot CoT后飙升至78.7%(约79%)。这个61个百分点的巨大提升,是“分步推理”价值的直接证明。
Q4. Zero-shot CoT发挥作用的主要原理是什么?
- A.增加模型参数量
- B.促使输出中间步骤← 正确答案
- C.减少生成token数
- D.提升训练数据质量
答案:B。“让我们一步步思考”把模型的解码路径从“直接跳结论”切到“先生成中间推理步骤”,这种步骤式的输出降低了跳步错误的概率。其他选项都与模型架构或训练无关。
Q5. 与Few-shot CoT相比,Zero-shot CoT的主要优势是什么?
- A.模型准确率显著更高
- B.不需要准备示例成本低← 正确答案
- C.单次推理速度更快
- D.不需要任何训练算力
答案:B。Zero-shot CoT的核心优势是“零成本”——不用人工编写示例,通用性更强。性能上它略低于Few-shot CoT,但差距不大,因此性价比极高。
Q6. 以下哪个数据集是Zero-shot CoT论文中使用的数学推理基准?
- A.ImageNet图像分类数据集
- B.MultiArith数学推理集← 正确答案
- C.COCO目标检测数据集
- D.SQuAD阅读理解数据集
答案:B。MultiArith是小学数学应用题数据集,Zero-shot CoT在它上面取得了从17.7%到78.7%的飞跃。ImageNet、COCO是视觉任务数据集,SQuAD是阅读理解任务集。
Q7. 关于Zero-shot CoT的描述,正确的有哪些?
- A.效果显著提升且无需示例← 正确答案
- B.模型可能产生推理幻觉← 正确答案
- C.需要大量人工标注样本
- D.必须配合微调才有效
答案:AB。Zero-shot CoT确实无需示例就能大幅提升效果(A对),但也可能生成看似合理实则错误的中间步骤(B对)。它既不需要标注样本(C错),也不需要微调(D错)。
Q8. Zero-shot CoT中,触发词在提示中的合理位置在哪里?
- A.问题文本之前
- B.问题文本之后← 正确答案
- C.模型答案之后
- D.任何位置效果一样
答案:B。触发词应放在问题之后。模型按顺序读取文本并生成回复,先看到问题、再看到“让我们一步步思考”的指令,才能让引导指令影响到后续生成过程。放在问题之前可能干扰模型对任务的理解。
Q9. 以下哪些是Zero-shot CoT的固有局限?
- A.小模型上效果较为有限← 正确答案
- B.可能编造看似合理的推理← 正确答案
- C.简单任务分步反而更慢← 正确答案
- D.总比标准提示效果更差
答案:ABC。Zero-shot CoT依赖模型自身能力,小模型效果受限(A对);它生成的中间步骤可能是幻觉(B对);对简单任务,分步会无谓增加延迟和出错面(C对)。但它并非总是比标准提示差——在多步推理任务上通常优于标准提示(D错)。
Q10. Zero-shot CoT中,模型被引导先生成的内容是什么?
- A.最终的结论文本
- B.中间的推理步骤← 正确答案
- C.用户的反馈信息
- D.随机生成的噪声
答案:B。CoT的核心就是让模型在给出最终结论前,先显式生成中间推理步骤——相当于把“草稿纸”上的思考过程写出来。这些步骤是后续结论的依据,而非噪声或用户反馈。