思维链提示
这一节有两件事要讲,而且两件都足够让人坐直。第一件是真的:只在题目后面加一句"Let's think step by step"(我们一步一步想),MultiArith 数据集的准确率从 17.7% 涨到 78.7%,GSM8K 从 10.4% 涨到 40.7%——一句话,四倍。第二件是关于那句流传更广的咒语:"Take a deep breath and work on this problem step-by-step."(深呼吸,一步一步解决这个问题)。它得了 80.2 分,超过了前一句的 71.8。但它不是任何一个人悟出来的技巧——它是 Google DeepMind 让一个大模型当优化器,自动搜索出来的一串字符。而且那 80.2 分死死绑定在一个特定组合上,换个模型就不成立。这一节把两件事都拆到底。
问你一道题:一件商品原价 128 元,先打八折,再用一张满 100 减 15 的券,最后加 12 元运费,实付多少?
你要是被逼着"立刻说出答案,不许算",大概率会说错——或者说出一个大致数字,比如"一百块左右吧"。
但如果给你一张纸,你会这么写:128 × 0.8 = 102.4;102.4 ≥ 100,可用券,102.4 − 15 = 87.4;87.4 + 12 = 99.4。答案 99.4 元。准确无误。
关键在哪儿?不是你变聪明了,是那张纸帮你存住了中间结果。心算之所以容易错,是因为你得同时在脑子里攥住"102.4"这个数、记着还有券没用、还没算运费——三件事一起攥,手一滑就掉一个。
而 LLM 的处境比你还苛刻:它压根没有那张纸。它的"草稿纸"就是它自己的输出。所以你要它算对,唯一的办法是允许并要求它把中间步骤写出来——写出来的那些字,就是它的竖式。
先把"思维链"这个词彻底说清
思维链这个名字听着挺哲学,其实指的就是从题目走到答案之间的那一串中间步骤,一条接一条,像链条一样。你在小学做应用题时老师要求"写出解题过程",那个过程就是一条思维链。
而 思维链提示(Chain-of-Thought Prompting)说白了就是:你在提示词里想办法让模型把那串步骤写出来。办法有两种,后面会详细分开讲——一种是给它几个"带解题过程的例题"(few-shot CoT),一种是干脆只加一句"一步一步想"(zero-shot CoT)。
为什么这招管用?这里有个关键认识,值得记牢:模型没有"内心"。它没有一块看不见的地方可以偷偷演算。我们在 §8.2 讲过它的运行方式——每生成一个 token,就要把之前所有 token 重读一遍。这意味着:
- 中间结果只能存在输出里它没有草稿本、没有临时变量、没有寄存器。"102.4"这个中间数如果没被写出来,下一步就无从引用。
- 写出来的每个 token 都是一次完整的前向计算让它多写 200 个字的推理过程,就等于让它多跑 200 次完整的模型。过程不是"表演给你看",过程本身就是算力的投入。
- 不写过程 = 逼它一步跳到答案从题目直接跳到数字,中间那几步的计算量被彻底跳过了。它不是懒得算,是没有地方算。
换成大白话:你不给它纸,它就只能心算;你给它纸,它就能列竖式。"思维链提示"这四个字翻译成人话,就是"请把纸拿出来用"。
第一篇论文:8 个例题让 540B 模型拿下当时的 SOTA
提出这件事的是 Wei 等人的《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》(《思维链提示激发大语言模型的推理能力》),arXiv 编号 2201.11903,2022 年 1 月,Google 研究团队,收录于 NeurIPS 2022。
论文摘要里最值得记住的是这几个数字和事实:
- 只用 8 个 CoT 示例不是几百个,就 8 个带解题过程的例题。这数量和 §10.2 讲的 3 到 5 个是同一个量级
- 模型规模 540B5400 亿参数的 PaLM 模型。换算成可感知的量:这是 GPT-3(1750 亿)的三倍多
- 在 GSM8K 上达到当时的 SOTASOTA(State Of The Art,"当前最好水平")。而且超过了带 verifier 的微调版 GPT-3——verifier 是个专门训练来验算答案的辅助模型。也就是说:光靠改提示词,打赢了专门微调过还配了验算器的方案。
这里必须严谨一句:论文摘要没有给出 CoT 在 GSM8K 上的具体百分比。网上流传的各种"CoT 让 GSM8K 从 X% 涨到 Y%"的数字,本节一律不采用——因为无法核实它们来自摘要还是来自正文哪一张表、用的是哪个模型规模。"超过带 verifier 的微调 GPT-3、达到当时 SOTA"这个表述已经足够有力,不需要给它编一个百分比。
那么 few-shot CoT 长什么样?关键在于示例里不只给答案,还要给解题过程:
━━━ 普通 few-shot(只给答案)━━━
Q: 小明有 5 个球,又买了 2 筒,每筒 3 个。他现在有几个球?
A: 11
Q: 食堂原有 23 个苹果,午餐用了 20 个,又买回 6 个。现在有几个?
A: 9 ← 只有答案,没有过程
━━━ few-shot CoT(给答案,也给过程)━━━
Q: 小明有 5 个球,又买了 2 筒,每筒 3 个。他现在有几个球?
A: 小明原来有 5 个球。2 筒球,每筒 3 个,所以是 2 × 3 = 6 个。
5 + 6 = 11。答案是 11。
Q: 食堂原有 23 个苹果,午餐用了 20 个,又买回 6 个。现在有几个?
A: 食堂原来有 23 个。用掉 20 个后剩 23 − 20 = 3 个。
又买了 6 个,所以 3 + 6 = 9。答案是 9。
← 过程被完整示范了出来
Q: (这里放真正要问的题)
A:
看出差别了吗?右边这种写法里,示例教给模型的不是"答案是什么",而是"该怎么一步步走到答案"。模型看完两个带过程的例题,回答新题时也会自动开始写过程——而一写过程,它就有了中间结果可以引用。
好比你在教室里看黑板上老师的板书:如果板书只写"答案 9",你学不到任何东西;如果板书写了"23 − 20 = 3,3 + 6 = 9",你下一题就会照着这个格式列式子。示例传递的是格式,而这个格式恰好强制了运算的发生。
★ 第二篇论文:一句话,17.7% 到 78.7%
Wei 那篇论文还需要你手写 8 个带过程的例题,有点麻烦。四个月后,另一篇论文发现了一件更省事、也更让人吃惊的事。
Kojima 等人的《Large Language Models are Zero-Shot Reasoners》(《大语言模型是零样本推理者》),arXiv 编号 2205.11916,2022 年 5 月,收录于 NeurIPS 2022。
它做的事简单到近乎滑稽:一个例题都不给,只在问题后面加一句 "Let's think step by step."(我们一步一步想。)
摘要里给的数字非常明确,可以放心引用(模型是 text-davinci-002):
| 数据集 | 这数据集考什么 | 不加那句话 | 加了那句话 | 变化 |
|---|---|---|---|---|
| MultiArith | 多步算术应用题 | 17.7% | 78.7% | 约 4.4 倍 |
| GSM8K | 小学数学应用题(八千多道) | 10.4% | 40.7% | 约 3.9 倍 |
停下来体会一下这组数字有多不寻常。17.7% 到 78.7%,中间隔着的只有六个英文单词,模型一个参数都没改。
把这个变化换算成可感知的量:MultiArith 上原本十道题错八道,加了一句话之后十道题对将近八道。这就像一个学生考试从二十来分变成将近八十分——而中间发生的唯一一件事,是允许他在卷子上写解题步骤而不是只填答案。他的知识水平一点没变,你只是把"必须口算"的规则取消了。
这个发现的深层含义比数字更重要:模型原本就"会"这些题,它只是被"必须一步给出答案"的格式挡住了。能力一直在那儿,缺的是施展它的空间。这也顺带说明,很多我们以为的"模型能力不足",实际上是"提示词把它的手绑住了"。
你在菜市场买了一堆东西:土豆 3 斤每斤 2.5 元,排骨 1.8 斤每斤 32 元,鸡蛋 12 个每个 0.9 元,还有一把葱老板送的。
情形一 · 逼他口算:你说"直接告诉我多少钱,别算"。摊主是个心算高手也会犯错——他得同时攥住 7.5、57.6、10.8 三个数再加起来,而且 1.8 × 32 这一步本身就容易错。他大概会说"七十六?不对,八十?大概七十五吧"。
情形二 · 让他拿计算器,一样一样按:他按 3 × 2.5 = 7.5,记在小票上;1.8 × 32 = 57.6,记上;12 × 0.9 = 10.8,记上;然后 7.5 + 57.6 + 10.8 = 75.9。报价 75.9 元,一分不差。
这两种情形里,摊主的算术能力完全一样。差别只在于:第二种情形允许他把中间结果写在小票上。
思维链就是那张小票。而这个类比还能再进一步——小票的价值不只是"存住数",它还让错误可以被发现。情形一里他报个 80 元你没法查;情形二里你扫一眼小票,立刻能看出"1.8 × 32 = 57.6 这步对不对"。这正是思维链的第二个好处:它把黑箱变成了可审的账。模型算错时,你能指出错在第几步,而不是只能说"它答错了"。
两种 CoT 的对照:什么时候用哪种
| few-shot CoT(Wei 等) | zero-shot CoT(Kojima 等) | |
|---|---|---|
| 做法 | 给若干个带完整解题过程的例题 | 只加一句"让我们一步一步想" |
| 出处 | arXiv 2201.11903(NeurIPS 2022) | arXiv 2205.11916(NeurIPS 2022) |
| 准备成本 | 高——要手写例题和推理过程 | 几乎为零——加一句话 |
| Token 成本 | 较高,示例每次都要重发 | 极低 |
| 对推理格式的控制力 | 强。你能精确规定每步该写什么、怎么排版 | 弱。它按自己的习惯写,格式不稳定 |
| 适合的场景 | 推理有特定套路、输出格式有严格要求、领域有专门的判断顺序 | 通用推理题、快速验证"这题加了 CoT 有没有用" |
实用建议:先用 zero-shot CoT 试一句,成本几乎为零。如果效果够了就收手;如果它的推理格式不符合你的要求(比如它跳步、或者把结论写在中间不好提取),再升级成 few-shot CoT,用例题把格式钉死。
第三篇论文:多做几遍,投票选答案
还有一篇必须提,因为它是 CoT 最自然的延伸。
Wang 等人的《Self-Consistency Improves Chain of Thought Reasoning》(《自一致性提升思维链推理》),arXiv 编号 2203.11171,2022 年 3 月,收录于 ICLR 2023。
它的做法说白了就一句:同一道题让模型带着随机性算好几遍,得到好几条不同的推理路径,然后看哪个最终答案出现次数最多,就采纳它。这叫自一致性(Self-Consistency),本质是多数投票。
摘要给出的提升幅度(这组数字可以放心引用):
| 数据集 | 考什么 | 提升 |
|---|---|---|
| GSM8K | 小学数学应用题 | +17.9% |
| SVAMP | 算术应用题(带干扰项) | +11.0% |
| AQuA | 代数应用题(选择题) | +12.2% |
| StrategyQA | 需要多步策略的是非题 | +6.4% |
| ARC-challenge | 较难的科学常识题 | +3.9% |
为什么投票有效?因为错法各有各的错,对法却往往是同一个。模型算错时,不同次的错误各不相同——这次少算了运费,下次把折扣算反了,再下次进位错了。这些错误答案分散在各处。而算对的那几次,答案是同一个数。于是"出现最多的那个答案"很可能就是对的。
拿生活里的事打个比方:一件事你问五个人,得到五个答案。如果有三个人说的是同一个数、另外两个各说一个数,你多半会信那三个人。这不是因为人多就对,而是因为"独立犯同一个错"比"独立得出同一个正确答案"要难得多。
但要注意代价:自一致性要跑 N 遍,成本就是 N 倍。跑 10 条路径,输出 token 花 10 份钱、等 10 倍时间(除非并行)。所以它适用于准确率极其重要、单次成本可以接受的场景——比如财务核算、医疗辅助判断,不适合高并发的实时对话。好比重要的体检指标要复查三次,感冒量个体温就没必要量五遍。
★★ "深呼吸,一步步想"的真实来源
现在讲本节最反常识的一段,也是全章最值得记住的故事之一。
你大概见过这句"更强的咒语":"Take a deep breath and work on this problem step-by-step."(深呼吸,一步一步解决这个问题。)常见的传播版本是:"有人发现给 AI 加一句「深呼吸」,它就会更认真,分数还能再提高。"
真相是:这句话不是任何人想出来的技巧。它是一个大模型自动搜索出来的字符串。
出处是 《Large Language Models as Optimizers》(《大语言模型作为优化器》,提出了名为 OPRO 的方法),arXiv 编号 2309.03409,2023 年 9 月 7 日,Google DeepMind(作者中包括 Quoc V. Le 和 Denny Zhou),收录于 ICLR 2024。
OPRO 干的事说白了是:让一个 LLM 充当"优化器",不断生成候选提示词、拿去打分、根据分数再生成更好的候选——像一个自动化的猜谜循环,把提示词当成待优化的参数来搜。"Take a deep breath..." 就是这个搜索过程的产物之一,由 PaLM 2-L-IT 这个优化器搜出来的。
看论文 Table 1 里那一组分数(GSM8K 数据集,zero-shot 设定,打分模型统一是预训练的 PaLM 2-L):
| 提示词 | 来源 | 得分 |
|---|---|---|
| (空字符串,什么都不加) | 基线 | 34.0 |
| "Let's work this out in a step by step way to be sure we have the right answer." | Zhou et al. 2022b | 58.8 |
| "Let's think step by step." | Kojima et al. 2022 | 71.8 |
| "Break this down." | PaLM 2-L 搜出 | 79.9 |
| "Take a deep breath and work on this problem step-by-step." | PaLM 2-L-IT 搜出(OPRO 产物) | 80.2 |
| (gpt-3.5-turbo 搜出的最佳提示) | gpt-3.5-turbo 搜出 | 78.5 |
| (gpt-4 搜出的最佳提示) | gpt-4 搜出 | 74.5 |
这张表里有三件事必须讲清,缺一件就会读出错误结论。
★ 第一件事:它是搜出来的,不是想出来的
"深呼吸"这四个字不承载任何人类洞见。没有人推理出"模型需要放松一下",也没有人观察到"提到呼吸能让它更专注"。它就是搜索空间里恰好得分最高的那个字符串。
这件事的意义比那 0.4 分(80.2 对 79.9)大得多。它说明提示词的效果和"这句话在人类看来有没有道理"关系很弱。同一张表里,"Break this down."(把它拆开)得了 79.9,跟"深呼吸"几乎打平——而这两句话在语义上毫无共同点。
换成大白话:不要试图从"这句话为什么有道理"去推断它有不有效。好比你去药店买药,不能靠"这个名字听起来管用"来选。有效性是测出来的,不是想出来的。
顺带说,这一点也让"提示词大师"这个身份变得可疑:如果最佳提示词能被机器搜出来、而且搜出来的东西人类根本想不到,那么"凭经验和语感调提示词"的天花板可能相当低。这是 §10.5 要正面处理的问题。
★ 第二件事:80.2 绑定在一个特定组合上
这是最容易被漏掉、也最容易导致踩坑的一点。那个 80.2 分,绑定了三个条件:
- 打分模型是 PaLM 2-L而且是预训练版的 PaLM 2-L 作为 scorer(打分模型)。换个模型,这个分数不成立
- 数据集是 GSM8K小学数学应用题。换个任务类型,不成立
- 设定是 zero-shot不给示例。换成 few-shot,不成立
证据就在同一张表里:用 gpt-4 搜出来的最佳提示,只有 74.5 分——比用 PaLM 2-L-IT 搜出来的 80.2 低了将近 6 分。用 gpt-3.5-turbo 搜的是 78.5,也不如 80.2。
也就是说,连"用哪个模型去搜"都会显著影响搜出来的东西好不好,更不用说换掉被测的模型了。论文自己对此有明确表态:最优的提示格式可以是模型特定(model-specific)、任务特定(task-specific)的。
这一点的实用含义非常直接:你在自己的模型上加一句"深呼吸,一步步想",很可能一点提升都没有,甚至变差。因为你既不是在用 PaLM 2-L 打分,也可能不是在做 GSM8K 那类题。好比别人家洗衣机的最佳程序是"标准 + 高转速",你照抄到自己那台不同型号的机器上,衣服可能就洗坏了。参数是绑定设备的。
★ 第三件事:"up to"是最多,不是平均
OPRO 论文报告的总体增益是:GSM8K 上最多高 8%,Big-Bench Hard 上最多高 50%(相对于人类设计的提示词)。
注意"最多"(up to)这两个字。这是所有技术报道里最容易被偷偷抹掉的限定词。
"最多高 50%"意味着:在若干个测试任务里,表现最好的那一个提升了 50%。其他任务提升了多少?可能是 20%,可能是 3%,也可能没提升。把"最多高 50%"读成"平均高 50%"或者"能高 50%",是一个非常常见也非常严重的误读。
拿生活里的事打个比方:超市门口贴着"全场最高五折",你不会以为所有商品都是五折——你知道那意思是"有某几件是五折,多数不是"。技术论文里的 "up to" 和超市的"最高"是完全一样的用法,读法也该一样。
| 常见的转述 | 论文实际说的 | 问题在哪 |
|---|---|---|
| "OPRO 能让准确率提升 50%" | Big-Bench Hard 上最多高 50% | 抹掉了"最多",把最好情况当成了普遍情况 |
| "深呼吸这句咒语能提分到 80 分" | PaLM 2-L 作 scorer + GSM8K + zero-shot 这一组合下是 80.2 | 抹掉了全部三个绑定条件 |
| "这是最强的提示词" | 论文说最优提示格式可以是模型特定、任务特定的 | 不存在"最强",只存在"在某条件下最优" |
★★ 最反直觉的一条:语义相近,效果差 13 个百分点
OPRO 论文里有一节的标题本身就是一个结论——语义相似的指令可能产生截然不同的准确率(论文 §5.2.3)。
看这两句话:
| 提示词 | 中文意思 | GSM8K 得分 |
|---|---|---|
| "Let's think step by step." | 我们一步一步想。 | 71.8 |
| "Let's work this out in a step by step way to be sure we have the right answer." | 我们一步一步把这道题解出来,以确保我们得到正确的答案。 | 58.8 |
把两句中文放在一起读一遍。它们的意思几乎完全一样,第二句甚至更详细、更强调"要确保正确"——按人类的语感,第二句该更好或至少不差。结果它低了 13 个百分点。
13 个百分点是什么概念?换算成可感知的量:一百道题里多错十三道。这个差距比很多"换一代模型"带来的差距还大——而中间隔着的只是同一个意思的两种说法。
这条事实的杀伤力在于,它直接否定了"凭语感优化提示词"这套方法论的可靠性:
- 你无法从语义推断效果两句意思一样的话,效果可以差十几个点。那么"我觉得这版写得更清楚"就不能作为改进的依据。
- 提示词效果是脆弱的改一个词、加一个从句、调一下语序,都有可能显著改变结果,而方向无法预判。
- 所以只能测,不能猜这是本章反复要说的那件事:任何提示词改动,都必须在同一批评测数据上量一遍。没有评测集,你的每次"优化"都是在赌。
- 也别过度解读单个分数同理,看到某句咒语得了高分,也不要立刻信。先问:在哪个模型上?哪个任务上?什么设定下?
好比调收音机:你以为往右转一点会更清楚,实际上可能突然全是噪音——唯一可靠的办法是转一点、听一下、再转一点,而不是先在脑子里推理"往哪边转应该更好"。
CoT 该怎么用:可直接复制的提示词模板
把这一节的所有结论落到实操上。下面几个模板可以直接拿走。
模板一 · 最简版(零成本先试这个)
(你的问题)
请一步一步思考,把每一步的中间结果都写出来,最后给出答案。
模板二 · 规定推理结构(推荐用于生产环境)
(你的问题)
请按以下结构作答:
【已知条件】
(把题目里给出的数据逐条列出,一行一条)
【推理步骤】
第 1 步:(做什么,算式,得到什么中间结果)
第 2 步:(……)
第 N 步:(……)
【答案】
(只写最终结果,不要重复解释)
【自查】
(用一句话说明你如何验证这个答案合理,比如代回原题检验)
模板二比模板一好的地方在于:答案被放在固定的标记里,程序可以稳定地提取出来。模板一的输出格式不稳定,答案可能藏在最后一句话中间,正则很难抓。这是"可控性"和"零成本"之间的取舍。
模板三 · 让它先分类再决定要不要展开推理(省钱做法)
(你的问题)
先判断这个问题属于哪一类:
A 类 —— 直接查事实即可回答,无需计算或多步推演
B 类 —— 需要计算或多步推演
如果是 A 类,直接给答案,不要写推理过程。
如果是 B 类,按「已知条件 / 推理步骤 / 答案」的结构展开。
请先写出你的判断(A 或 B),再作答。
模板三处理的是一个真实痛点:不是所有问题都需要 CoT,而 CoT 是要花钱的——它让输出变长好几倍,而输出通常比输入贵五六倍(见 §8.1)。让模型自己先分个类,能显著降低平均成本。
CoT 的代价和适用边界
| 维度 | 代价 / 边界 |
|---|---|
| 输出 token 暴涨 | 推理过程可能比答案长十倍,而输出价通常是输入价的五六倍。这是 CoT 最实在的成本 |
| 延迟变长 | 每个 token 都是一次前向计算(§8.2)。写 300 字推理,就是多跑几百次模型,用户要多等 |
| 对简单任务无益甚至有害 | 分类、抽取、翻译这类任务加 CoT,往往只是多花钱多等待,还可能因为过度推理把简单判断绕错 |
| 写出来的过程不等于真实的计算过程 | 这一点要诚实:模型写出的推理链是"看起来合理的解释",不一定忠实反映它内部到底怎么得出答案的。它有时会写出错误的步骤却给出正确答案,也会写出漂亮的步骤却得到错误答案 |
| 推理模型已内置了这件事 | 2024 年之后那批"会先想再答"的推理模型(见 §8.6)把 CoT 训练进了模型里。对它们再手动加"一步一步想"通常没必要,某些厂商甚至明确建议不要这么做 |
倒数第二行值得多说一句,因为它关系到你能不能信任那串推理。不要把模型写出的推理链当成"它的内心活动录像"。更贴近实情的理解是:那串文字既是运算(因为中间结果确实被存下来并被后续引用了),也是一段生成出来的文本(因此可能包含事后合理化的成分)。实用建议:把推理链当成"可审的账目"去核对具体步骤,而不是当成"它为什么这么想"的权威解释。
把这一节的结论合成一条判断流程
信息量有点大,最后收成一条可以照着走的流程。遇到一个任务,按这个顺序想:
第 1 问:这个任务需要多步推演,还是查一下事实就行?
└ 只需查事实(分类、抽取、翻译、改写)
→ 不加 CoT。加了只是多花钱多等待
└ 需要多步推演(算数、逻辑判断、方案权衡、代码调试)
→ 继续第 2 问
第 2 问:我用的是已内置推理的模型(会先想再答的那批)吗?
└ 是 → 通常不必再手加「一步一步想」,某些厂商明确建议不要加
└ 不是 → 继续第 3 问
第 3 问:先零成本试一句「请一步一步思考,写出中间结果」
└ 效果够了 → 收手,别过度工程
└ 格式不稳定、答案不好提取
→ 升级到「模板二」,用固定标记框住答案
└ 推理套路有行业特定顺序
→ 升级到 few-shot CoT,用带过程的例题把套路钉死
第 4 问:准确率是否重要到值得付 N 倍成本?
└ 是(财务核算、合规审查这类)
→ 上自一致性:跑多条路径,取出现最多的答案
└ 不是 → 停在第 3 问的结果
第 5 问(不管走到哪一步都要做):
我有没有一批固定的测试题,能量出「改这一版到底变好了还是变差了」?
└ 没有 → 先去建,否则你所有的调整都是在赌(§10.5)
第 5 问是这套流程里唯一不可跳过的一步。因为本节已经用 71.8 对 58.8 这组数字证明了:你的语感在这件事上不可信。好比你去医院调药量,医生不会问你"感觉怎么样"就加倍,他要看化验单上的数。提示词的化验单就是评测集。
还有一句提醒放在这儿:不要因为一个技巧"在论文里很惊人"就默认它对你有用。本节讲的三篇论文,用的模型分别是 PaLM 540B、text-davinci-002、以及各种规模的实验模型——这些跟你今天在用的模型都不一样。论文告诉你的是"这条路是通的",不是"照抄这个数字就能达到"。把论文当地图看,不当保单看。
常见误解一次澄清
| 常听到的说法 | 实际情况 |
|---|---|
| "深呼吸这句咒语是某位提示词大师发现的" | 不是。它是 OPRO(arXiv 2309.03409,Google DeepMind,ICLR 2024)让 LLM 当优化器自动搜索出来的字符串 |
| "加了深呼吸就能到 80 分" | 那个 80.2 绑定在 PaLM 2-L 作 scorer + GSM8K + zero-shot 这一组合上。同表里 gpt-4 搜出的最佳只有 74.5 |
| "OPRO 能提升 50%" | 论文说的是 Big-Bench Hard 上最多(up to)高 50%、GSM8K 上最多高 8%。"最多"不是"平均" |
| "说法越详细越强调,效果越好" | 反例就在论文里:更详细的那句 58.8,更简短的那句 71.8,差 13 个百分点 |
| "CoT 在 GSM8K 上把分数提高了 X%"(带具体数字) | Wei 那篇论文的摘要没有给具体百分比。可靠的表述是"仅用 8 个 CoT 示例提示 540B 模型,在 GSM8K 达到当时 SOTA,超过带 verifier 的微调 GPT-3" |
| "Kojima 那组数字也不可靠" | 那组是可以放心用的:摘要明确给出 MultiArith 17.7% → 78.7%、GSM8K 10.4% → 40.7%,模型是 text-davinci-002 |
| "任何任务加 CoT 都更好" | 不对。简单分类抽取加 CoT 只是多花钱多等待。而对已内置推理的模型,手动加通常没必要 |
| "推理链就是模型的真实思考过程" | 不能这么断言。它既是运算也是生成的文本,可能包含事后合理化。当可审的账目用,别当内心录像看 |
| "自一致性是免费的提升" | 不是。跑 N 条路径就是 N 倍成本。摘要给的提升是 GSM8K +17.9%、SVAMP +11.0%、AQuA +12.2%、StrategyQA +6.4%、ARC-challenge +3.9% |
思维链的全部道理是"把纸拿出来用"。模型没有草稿本、没有临时变量,中间结果只能存在它自己的输出里。所以写出来的过程不是表演,过程本身就是算力——多写 200 字推理,就是多跑 200 次完整的模型。
三篇奠基论文各占一格:Wei 等(arXiv 2201.11903,NeurIPS 2022)用仅 8 个 CoT 示例提示 540B 模型,在 GSM8K 达到当时 SOTA,超过带 verifier 的微调 GPT-3(摘要未给具体百分比,不要编);Kojima 等(arXiv 2205.11916)只加一句"Let's think step by step",把 MultiArith 从 17.7% 拉到 78.7%、GSM8K 从 10.4% 拉到 40.7%;Wang 等(arXiv 2203.11171,ICLR 2023)用多条路径投票,GSM8K +17.9%、SVAMP +11.0%、AQuA +12.2%、StrategyQA +6.4%、ARC-challenge +3.9%。
关于"深呼吸"那句咒语,三条必须记住:①它是 OPRO 让 LLM 自动搜出来的,不是人想出来的——同表里语义毫不相干的"Break this down."得 79.9,几乎打平;②那 80.2 分绑定在 PaLM 2-L 作 scorer + GSM8K + zero-shot 上,同表 gpt-4 搜出的最佳仅 74.5,论文明说最优格式可以是模型特定、任务特定的;③论文报告的是"最多"高 8% / 50%,不是平均。
而最该改变你习惯的一条是:语义几乎一样的两句话,71.8 对 58.8,差 13 个百分点。这意味着"我觉得这版更清楚"不能作为改进依据——提示词效果高度脆弱、无法从语义直觉推断。下一节讲怎么用结构化标签把提示词整理成能维护的工程产物;再下一节讲怎么建立"改一版就量一次"的闭环。