跳到正文

2022推理与检索

思维链提示(CoT)

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

给大模型看几道示例题时,不只写题目和答案,还写出从题目走到答案的中间步骤。模型遇到新题便可能沿用这种格式,先生成步骤,再给出答案。

  • Jason Wei、Xuezhi Wang 等 9 位作者
  • NeurIPS 2022 · arXiv v6(2023-01-10)
查看论文原文

01研究问题

为什么示范了答案,模型还是会做错多步题?

因为一道题可能要先找出几个数量关系,再依次计算;只看“题目→答案”的示例,没有展示这条路径。例如“3 盒饼干,每盒 4 块,吃掉 5 块”,要先得到总数 12,再减去 5,答案才是 7。直接写一个数字,可能漏掉其中一步。

少样本提示,就是在新问题前放几道已经解好的例题,让语言模型照着这些例题继续写。它改变的是模型本次看到的输入,并不重新训练模型参数。论文指出,普通少样本示例在算术、常识和符号推理等任务上仍可能表现不佳。

作者提出把例题改成“三段式”:题目、中间步骤、最终答案。论文称中间步骤为“思维链”(chain of thought),指写在文本里的连续推导。它让读者能检查模型写出的路径,但不能单凭这段文字证明模型内部真的按人类方式思考。

依据:原论文 §1:研究动机、§2:思维链提示。

02提示方法

把步骤写进示例,模型会收到什么输入?

它先看到若干带解题步骤的完整例子,再看到一题尚未作答的新题。每个例子都把“为什么这样算”写在答案之前。模型继续生成时,便有机会先模仿步骤的形式,逐步处理新题,最后写出答案。

图 01 · 根据原论文 §2 与图 1 自编的输入输出格式示意。题目、步骤和答案不是论文实验样本,也不代表真实模型一定生成这些文字。

图中的饼干和糖果是自编示意,用来展示输入与输出的位置。论文的算术实验通常使用 8 道带步骤的示例,并把同一组示例用于多个算术数据集;AQuA 是选择题,使用的是 4 道示例。这样比较时,核心改变是示例是否包含中间推导,而不是为目标任务微调模型。

这里有一个容易混淆的地方:本文研究的是“给几道写好步骤的例题”。它没有测试只对新题加一句“请一步步思考”、却不给示例的写法。论文在图 1 里直接并排展示了普通提示与思维链提示的格式差异。

依据:原论文图 1:两种提示格式、§3.1:算术实验设置。

03实验结果

同一个模型,写出步骤后真的更容易答对吗?

在论文所测的大模型和多步任务上,是的;但增益取决于题目和模型规模。下面先固定 PaLM 540B,只比较普通少样本提示与带中间步骤的少样本提示。答对率表示该数据集里最终答案正确的题目比例。

同一个 PaLM 540B,只换提示格式答对率 · % · 越高越好
GSM8K
普通17.9%
步骤56.9%
SVAMP
普通69.4%
步骤79.0%
ASDiv
普通72.1%
步骤73.9%
图 03 · 原论文附录 B 表 2 的三组算术任务结果。均为 PaLM 540B;“步骤”指少样本思维链提示。条形按 0–100% 比例绘制,其余设置与完整结果见原表。

GSM8K 是多步数学应用题集:PaLM 540B 从普通提示的 17.9% 提升到思维链提示的 56.9%,增加 39.0 个百分点。SVAMP 从 69.4% 到 79.0%;ASDiv 从 72.1% 到 73.9%。同一种方法在不同题集上的增益差别很大,不能把 GSM8K 的提升套用到所有数学题。

论文还在常识任务和符号任务上测试了这种格式。部分常识任务有提升,但 CSQA 的增益很小;在“逐次翻转硬币”等人为设计的符号任务里,大模型对比示例更长的测试序列也有一定迁移。不过符号实验是结构明确的玩具任务,不等于现实世界的复杂推理已解决。

模型越大,增益越稳吗?

在论文测试的模型和算术题集里,小模型往往只生成流畅但不合逻辑的步骤,成绩可能还不如普通提示;明显增益主要出现在约千亿参数级的模型。这个观察是这些模型与基准上的实验结果,不能拿参数量当作今天所有模型的通用门槛。

依据:原论文附录 B 表 2:算术答对率、图 4:模型规模与收益、§4:常识任务、§5:符号任务。

04为什么是中间步骤

提升来自多写了文字,还是来自步骤的顺序?

论文的消融实验支持“答案之前的自然语言步骤”起了作用,单纯多生成文字并不能解释全部增益。消融实验就是一次只改提示的某个部分,看结果怎样变化。

图 02 · 原论文 §3.3、图 5 的定性重绘,针对其所测模型与 GSM8K 等设置;线条只表示相对趋势,不是实验数值。

作者试了几种替代写法:只写算式,在 GSM8K 这类语义复杂的题上帮助有限;让模型多生成一些圆点,表现接近普通提示;先给答案再补步骤,也没有得到类似的增益。相比之下,先用自然语言说明数量关系、再给答案,更能帮助所测大模型处理难题。

这不表示“只有自然语言步骤有用”。论文附录指出,对于只需一两步的算术题,直接写算式也能改善表现。合理的结论是:步骤是否有帮助,与题目是否需要先理解、再分解有关。

依据:原论文 §3.3 与图 5:消融实验、附录 A.4:只写公式的边界。

05适用边界

看起来有条理的步骤,可以直接相信吗?

不能。步骤可能写得流畅却算错、理解错题目,甚至碰巧得到正确答案。论文人工检查了 LaMDA 137B 在 GSM8K 上的 50 个“最终答对”的样本,其中有 2 个推导过程并不正确;另检查了 50 个“最终答错”的样本,既发现细小计算错误,也发现明显的语义理解或连贯性错误。这是小规模人工分析,不是所有模型的错误率。

作者还明确留下一个开放问题:可见的思维链模仿了人类写解题过程的形式,却不能证明神经网络内部实际如何得出答案。页面中的流程图因此只画“输入示例和输出文本”的关系,不把可见步骤画成模型内部真实思路。

实际使用还要考虑成本。论文所测明显收益主要依赖非常大的模型;生成更多步骤也会增加输出长度和计算开销。例题质量、题目复杂度和目标任务都会影响效果。产品启发是对目标题集同时检查最终答案和关键步骤,并记录输出成本;这是根据论文边界提出的评估建议,并非论文已完成的产品验证。

依据:原论文 §3.2:结果与错误分析、§3.4:示例变动、§6:讨论与局限。