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

作者/机构: Jason Wei, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Brian Ichter, Fei Xia, Ed H. Chi, Quoc V. Le, Denny Zhou (Google Research, Brain Team)

A1 主要贡献

本文探讨了一种名为“思维链(Chain-of-Thought, CoT)”提示的方法,该方法通过生成一系列中间推理步骤,显著提高了大型语言模型执行复杂推理任务的能力。

核心问题:尽管扩大语言模型的规模已被证明能带来多种好处,例如提升性能和样本效率【27, Brown 等人,2020】,但仅靠扩大模型规模本身并不足以在算术、常识和符号推理等具有挑战性的任务上取得高性能【51, Rae 等人,2021】。传统的少样本提示方法【8, Brown 等人,2020】在需要推理能力的任务上表现不佳。另一方面,虽然通过微调模型以生成自然语言解释(rationales)的方法【16, Cobbe 等人,2021】可以提升推理能力,但这需要创建大量高质量的解释数据集,成本高昂。

研究目标:本文旨在探索一种简单的方法,以解锁大型语言模型的推理能力。该方法结合了“生成自然语言推理过程”和“上下文少样本学习”这两个思想的优点,同时避免它们的局限性。具体来说,研究的目标是让语言模型通过少样本提示(few-shot prompting)的方式,学会为推理任务生成一个“思维链”,即一系列通向最终答案的中间自然语言推理步骤。

创新点/主要贡献
1. 提出思维链提示(Chain-of-Thought Prompting):本文提出了一种简单而有效的方法,即在少样本提示的示例中,为模型提供包含<输入, 思维链, 输出>三元组的示范。这种方法不需为每个新任务微调模型,也无需大规模的标注数据集,只需提供少数几个带有思维链的示例,就能引导模型生成推理过程并解决问题。

图1:思维链提示使大型语言模型能够处理复杂的算术、常识和符号推理任务。思维链推理过程已高亮显示。
图1:思维链提示使大型语言模型能够处理复杂的算术、常识和符号推理任务。思维链推理过程已高亮显示。
  1. 验证思维链提示的有效性:通过在算术、常识和符号推理三大类基准任务上的实验,证明了思维链提示相比标准提示方法能够显著提升大型语言模型的性能。例如,在GSM8K数学应用题基准测试中,使用仅8个思维链示例提示PaLM 540B模型,其性能大幅超越了标准提示方法,并取得了新的SOTA(state-of-the-art)表现,甚至超过了使用验证器进行微调的GPT-3模型。

    图2:PaLM 540B 使用思维链提示在 GSM8K 数学应用题基准上取得了新的 SOTA 性能。微调的 GPT-3 和之前的最佳性能来自【16】Cobbe 等人 (2021) 的工作。
    图2:PaLM 540B 使用思维链提示在 GSM8K 数学应用题基准上取得了新的 SOTA 性能。微调的 GPT-3 和之前的最佳性能来自【16】Cobbe 等人 (2021) 的工作。

  2. 揭示推理能力是规模的涌现属性:实验表明,思维链提示的效果与模型规模密切相关。对于小型模型,该方法甚至可能损害性能;而只有当模型规模达到约100B参数时,思维链提示才能带来显著的性能增益。这表明复杂的推理能力是模型规模扩大后的一种“涌现能力”(emergent ability)。

A3 关键概念

第2节 思维链提示

思维链的理念与目标。当人类解决一个复杂推理任务(如多步数学应用题)时,通常会将其分解为中间步骤,并逐一解决,最终得出答案。本文的目标是赋予语言模型生成类似“思维链”的能力——一个连贯的、导向问题最终答案的中间推理步骤序列。研究将表明,如果通过少样本提示的示例中提供思维链的演示,足够大的语言模型就能够生成思维链。

思维链的定义与示例。图1展示了一个模型生成思维链来解决一个数学应用题的例子,若不使用思维链则该模型会答错。在这种情况下,思维链类似于一个解题过程,也可以被解释为解题过程,但本文选择称之为“思维链”,是为了更好地捕捉其模仿一步步思考过程以得出答案的理念(此外,解题方案/解释通常在最终答案之后给出【44, Narang 等人,2020;76, Wiegreffe 等人,2022;29, Lampinen 等人,2022】等)。

思维链提示的四大优势。作为一种促进语言模型推理的方法,思维链提示具有几个吸引人的特性:
1. 分解问题与分配计算:原则上,思维链允许模型将多步骤问题分解为中间步骤,这意味着可以将额外的计算资源分配给需要更多推理步骤的问题。
2. 可解释性与调试:思维链为模型的行为提供了一个可解释的窗口,揭示了模型可能如何得出特定答案,并为调试错误的推理路径提供了机会(尽管完全描述支持答案的模型计算仍然是一个开放问题)。
3. 任务通用性:思维链推理可用于数学应用题、常识推理和符号操作等任务,并且原则上可能适用于任何人类可以通过语言解决的任务。
4. 易于激发:在足够大的现成语言模型中,只需在少样本提示的示例中包含思维链序列的例子,就可以轻松地激发思维链推理能力。

实验验证计划。在后续的实证实验中,将观察思维链提示在算术推理(第3节)、常识推理(第4节)和符号推理(第5节)中的效用。

A2 方法细节

第3.1节 实验设置

多模型与多基准的探索。我们探索了思维链提示在多种语言模型和多个基准测试上的表现。

算术推理基准。我们考虑了以下五个数学应用题基准:(1) GSM8K 数学应用题基准【16, Cobbe 等人,2021】,(2) 结构多样的 SVAMP 数学应用题数据集【47, Patel 等人,2021】,(3) 多样化的 ASDiv 数学应用题数据集【42, Miao 等人,2020】,(4) AQuA 代数应用题数据集,以及 (5) MAWPS 基准【28, Koncel-Kedziorski 等人,2016】。示例问题见附录表12。

基线方法:标准提示。作为基线,我们采用由【8】Brown 等人 (2020) 推广的标准少样本提示方法。在这种方法中,语言模型在为测试样本输出预测之前,会接收到一些包含输入-输出对的上下文示例。示例被格式化为问题和答案,模型直接给出答案,如图1(左)所示。

本文方法:思维链提示。我们提出的方法是在少样本提示的每个示例中,为相应的答案增加一个思维链,如图1(右)所示。由于大多数数据集只有评估集,我们手动编写了一套包含八个思维链的少样本示例用于提示——图1(右)展示了其中一个,完整的示例集在附录表20中。这些示例没有经过提示工程(prompt engineering)优化;其鲁棒性在第3.4节和附录A.2中进行了研究。为了验证这种形式的思维链提示能否成功激发各种数学应用题的推理能力,我们对除AQuA外的所有基准都使用了这同一套八个思维链示例。AQuA是多选题而非自由回答题,因此我们使用了训练集中的四个示例和解题方案,详见附录表21。


图3:算术、常识和符号推理基准的<输入,思维链,输出>三元组示例。思维链已高亮显示。完整提示见附录G。

评估的语言模型。我们评估了五种大型语言模型。第一种是 GPT-3【8, Brown 等人,2020】,我们使用了 text-ada-001、text-babbage-001、text-curie-001 和 text-davinci-002,这些可能分别对应于 350M、1.3B、6.7B 和 175B 参数的 InstructGPT 模型【46, Ouyang 等人,2022】。第二种是 LaMDA【71, Thoppilan 等人,2022】,其模型参数规模为 422M、2B、8B、68B 和 137B。第三种是 PaLM,模型参数规模为 8B、62B 和 540B。第四种是 UL2 20B【70, Tay 等人,2022】,第五种是 Codex【12, Chen 等人,2021】,在 OpenAI API 中为 code-davinci-002。我们通过贪心解码(greedy decoding)从模型中采样(尽管后续工作【72, Wang 等人,2022a】表明,通过对多个采样生成结果取多数最终答案可以改进思维链提示)。对于 LaMDA,我们报告了五个随机种子的平均结果,每个种子对应不同的示例随机排列顺序。由于 LaMDA 的实验在不同种子间方差不大,为了节省计算资源,我们对所有其他模型报告了单一示例顺序的结果。

第4节 常识推理(方法相关部分)

常识推理基准。我们考虑了五个涵盖多种常识推理类型的数据集。流行的CSQA【67, Talmor 等人,2019】提出关于世界的常识性问题,这些问题涉及复杂的语义,通常需要先验知识。StrategyQA【20, Geva 等人,2021】要求模型推断一个多跳策略来回答问题。我们从BIG-bench【6, BIG-bench collaboration, 2021】中选择了两个专门的评估集:日期理解(Date Understanding),涉及从给定上下文中推断日期;以及体育理解(Sports Understanding),涉及判断一个与体育相关的句子是否合理。最后,SayCan数据集【1, Ahn 等人,2022】涉及将自然语言指令映射到离散机器人动作序列。图3展示了所有数据集带有思维链标注的示例。

提示设置。我们遵循与前一节相同的实验设置。对于CSQA和StrategyQA,我们从训练集中随机选择示例,并手动为其编写思维链作为少样本示例。两个BIG-bench任务没有训练集,因此我们选择评估集中的前十个示例作为少样本示例,并在评估集的其余部分报告结果。对于SayCan,我们使用了【1】Ahn 等人 (2022) 中训练集的六个示例,并同样手动编写了思维链。

第5节 符号推理(方法相关部分)

符号推理任务。我们使用了以下两个玩具任务:
- 末字母连接(Last letter concatenation):这个任务要求模型连接一个名字中单词的最后一个字母(例如,“Amy Brown” → “yn”)。这是首字母连接任务的更具挑战性的版本,后者语言模型在没有思维链的情况下已经可以完成。我们通过随机连接来自人口普查数据(https://namecensus.com/)中排名前一千的姓和名来生成全名。
- 硬币翻转(Coin flip):这个任务要求模型回答在一系列翻转或不翻转操作后,硬币是否仍然正面朝上(例如,“一枚硬币正面朝上。Phoebe 翻转了硬币。Osvaldo 没有翻转硬币。硬币现在还是正面朝上吗?” → “不是”)。

实验设置与提示。由于这些符号推理任务的构建是明确定义的,对于每个任务,我们考虑一个域内(in-domain)测试集,其中示例的步骤数与训练/少样本示例相同;以及一个域外(out-of-domain, OOD)测试集,其中评估示例的步骤数比示例中的更多。对于末字母连接任务,模型只看到包含两个单词的名字的示例,然后在包含3个和4个单词的名字上进行测试。我们在硬币翻转任务中对潜在的翻转次数也做了同样的处理。我们的实验设置使用了与前两节相同的方法和模型。我们再次为每个任务的少样本示例手动编写思维链,这些示例在图3中给出。

A4 实验环境

数据集
1. 算术推理:
* GSM8K: 高难度数学应用题。
* SVAMP: 结构多变的数学应用题。
* ASDiv: 多样化的数学应用题。
* AQuA: 代数应用题(多选题)。
* MAWPS: 数学应用题库,包含多个子集。
2. 常识推理:
* CSQA (CommonsenseQA): 需要先验知识的常识问答。
* StrategyQA: 需要多跳推理策略的问答。
* Date Understanding (BIG-bench): 从上下文中推断日期。
* Sports Understanding (BIG-bench): 判断体育相关句子的合理性。
* SayCan: 将自然语言指令映射为机器人动作序列。
3. 符号推理 (自建):
* Last Letter Concatenation: 连接名字中每个单词的最后一个字母。
* Coin Flip: 判断一系列翻转操作后硬币的状态。

模型架构:
本文使用了五种现成的大型语言模型,未进行微调,仅通过提示进行推理。
* GPT-3: text-ada-001 (350M), text-babbage-001 (1.3B), text-curie-001 (6.7B), text-davinci-002 (175B)。这些模型被认为是 InstructGPT 系列。
* LaMDA: 参数规模包括 422M, 2B, 8B, 68B, 137B。
* PaLM: 参数规模包括 8B, 62B, 540B。
* UL2: 20B 参数模型。
* Codex: code-davinci-002。

硬件配置:
* LaMDA (137B): 使用 TPU v3 进行推理(8x8 配置,64个芯片 / 128个核心)。
* PaLM (540B): 使用 TPU v4 进行推理(4x4x12 配置,192个芯片 / 384个核心)。
* GPT-3: 使用公开的 OpenAI API。

软件配置:
* 实现: 所有实验均通过对现成的大型语言模型进行提示来完成,没有进行任何模型微调或梯度更新。
* 解码策略: 采用贪心解码(greedy decoding)进行模型输出采样。
* 外部工具: 在部分算术推理任务的分析中,使用 Python 的 eval 函数作为外部计算器,对模型生成的数学表达式进行后处理计算,以验证其推理逻辑的正确性。

A4 实验结果

算术推理 (第3节)

  • 主要发现:

    1. 思维链提示是模型规模的涌现能力:如图4所示,思维链提示对小型模型性能没有积极影响,甚至会降低性能。只有当模型参数规模达到约100B时,该方法才开始产生显著的性能增益。
    2. 对复杂问题增益更大:在基线性能较低的更复杂数据集(如GSM8K)上,思维链提示带来的性能提升最为显著,对于最大的GPT和PaLM模型,性能提升超过一倍。而在仅需单步计算的简单问题上(如MAWPS的SingleOp子集),性能提升很小或为负(附录表3)。
    3. 达到或接近SOTA性能:使用思维链提示的GPT-3 175B和PaLM 540B模型,性能与经过微调的SOTA模型相当。PaLM 540B在GSM8K、SVAMP和MAWPS上取得了新的SOTA(图4)。在AQuA和ASDiv上,也达到了距离SOTA不到2%的水平(附录表2)。

    图4:思维链提示使大型语言模型能够解决具有挑战性的数学问题。值得注意的是,思维链推理是模型规模增大的涌现能力。之前的最佳数据来自【16】Cobbe 等人 (2021) 的 GSM8K,【26】Jie 等人 (2022) 的 SVAMP,以及【30】Lan 等人 (2021) 的 MAWPS。
    图4:思维链提示使大型语言模型能够解决具有挑战性的数学问题。值得注意的是,思维链推理是模型规模增大的涌现能力。之前的最佳数据来自【16】Cobbe 等人 (2021) 的 GSM8K,【26】Jie 等人 (2022) 的 SVAMP,以及【30】Lan 等人 (2021) 的 MAWPS。

  • 错误分析 (LaMDA 137B on GSM8K):

    • 在50个回答正确的样本中,除了2个碰巧答对的外,其余的思维链在逻辑和数学上都是正确的。
    • 在50个回答错误的样本中,46%的思维链几乎正确,仅存在计算错误、符号映射错误或缺少一个推理步骤等小问题;54%的思维链存在语义理解或连贯性方面的重大错误(附录D.2)。
  • 消融实验 (LaMDA 137B & PaLM 540B):

    • 仅方程提示 (Equation only):对GSM8K等复杂问题帮助不大,说明仅将问题转化为方程是不够的,需要自然语言的中间推理步骤。
    • 仅可变计算提示 (Variable compute only):让模型输出与解题方程等长的点序列,性能与基线相当,说明计算量的增加本身不是成功的关键,用自然语言表达中间步骤至关重要。
    • 答案后思维链 (Chain of thought after answer):将思维链放在答案之后,性能与基线相当,说明思维链中体现的序贯推理过程对于得出正确答案是必要的,而不仅仅是激活知识。

    图5:使用 LaMDA 137B 和 PaLM 540B 的提示变体消融研究。其他数据集的结果见附录表6和表7。
    图5:使用 LaMDA 137B 和 PaLM 540B 的提示变体消融研究。其他数据集的结果见附录表6和表7。

  • 鲁棒性分析:

    • 如图6所示,虽然不同标注者编写的思维链示例会导致性能波动,但所有版本的思维链提示都显著优于标准基线,表明该方法不依赖于特定的语言风格。
    • 使用从GSM8K训练集中随机抽取的示例,性能与手动编写的示例相当,同样远超标准提示。
    • 该方法对示例顺序、示例数量(附录A.2)和不同语言模型也表现出鲁棒性。

    图6:思维链提示对于不同的提示示例存在差异(符合预期),但对于不同的标注者以及不同的示例,其性能均优于标准提示。
    图6:思维链提示对于不同的提示示例存在差异(符合预期),但对于不同的标注者以及不同的示例,其性能均优于标准提示。

常识推理 (第4节)

  • 主要发现: 在CSQA、StrategyQA、Date Understanding、Sports Understanding和SayCan等五个常识推理任务上,模型规模的扩大提升了标准提示的性能,而思维链提示则带来了进一步的增益,尤其是在PaLM 540B上效果最明显(图7)。
  • 性能表现: 使用思维链提示的PaLM 540B在StrategyQA上取得了SOTA(75.6% vs 69.4%),在Sports Understanding上超过了未经辅助的体育爱好者(95.4% vs 84%)。这表明思维链提示同样能提升需要广泛常识推理能力的任务性能(但在CSQA上增益较小)。

图7:思维链提示也提高了语言模型的常识推理能力。此处展示的语言模型是PaLM。之前的最佳数据来自CSQA【67, Talmor et al., 2019】和StrategyQA【20, Geva et al., 2021】的排行榜(仅限单模型,截至2022年5月5日)。使用不同规模的LaMDA、GPT-3和PaLM的更多结果见表4。
图7:思维链提示也提高了语言模型的常识推理能力。此处展示的语言模型是PaLM。之前的最佳数据来自CSQA【67, Talmor et al., 2019】和StrategyQA【20, Geva et al., 2021】的排行榜(仅限单模型,截至2022年5月5日)。使用不同规模的LaMDA、GPT-3和PaLM的更多结果见表4。

符号推理 (第5节)

  • 主要发现:
    • 在“末字母连接”和“硬币翻转”两个任务上,思维链提示使PaLM 540B模型在域内(in-domain)测试集上达到了近乎100%的解决率(图8)。
    • 长度泛化能力: 对于域外(OOD)测试集(即推理时输入序列比示例更长),标准提示完全失败。而思维链提示使模型展现出向上的扩展曲线,性能虽低于域内,但证明了思维链有助于模型泛化到比示例中更长的推理链。
    • 规模效应: 这种在未见过的符号上进行抽象操作的能力,同样只在100B参数规模的模型上才出现。

图8:在两个符号推理任务中,使用思维链提示有助于泛化到更长的序列。
图8:在两个符号推理任务中,使用思维链提示有助于泛化到更长的序列。

A5 结论

本文探索了思维链提示作为一种简单机制,用以激发大型语言模型的多步推理行为。通过在算术、常识和符号推理任务上的实验,论文得出了以下核心结论:

  1. 思维链提示是一种简单而强大的方法:它能显著提升模型在多种复杂推理任务上的性能,无需对模型进行任何微调。
  2. 推理能力是模型规模的涌现属性:对于许多标准提示方法性能停滞不前的任务,思维链提示能够展现出随着模型规模增大而性能急剧提升的趋势。这表明,思维链推理是大型模型达到一定规模后才出现的“涌现能力”。
  3. 思维链提示拓展了语言模型的能力边界:这项工作强调,标准提示仅能揭示大型语言模型能力的下限,而思维链等更高级的提示方法可以解锁其更深层次的潜力。

局限性
1. “推理”的本质: 尽管思维链模仿了人类的思考过程,但这并不能断定神经网络是否在进行真正的“推理”,这仍是一个开放问题。
2. 标注成本: 虽然在少样本设置下手动标注思维链的成本很小,但若要用于微调,其成本可能会很高。
3. 推理路径的正确性: 模型生成的推理路径不保证是正确的,这可能导致最终答案正确或错误。提高生成内容的事实性是一个未来的研究方向。
4. 成本问题: 思维链推理能力仅在大型模型中涌现,使得在实际应用中部署成本高昂。

未来展望
这项工作引发了更多问题,例如:随着模型规模的进一步增加,推理能力还能提升多少?还有哪些其他提示方法可以扩展语言模型能解决的任务范围?研究如何将推理能力引入更小的模型也是一个重要的方向。总之,扩展语言模型能够执行的推理任务范围,有望激励更多基于语言的推理方法研究。

A6 附录

A 常见问题解答

A.1 为什么扩大模型规模能改善思维链提示?

思维链推理是一种涌现能力。成功的思维链推理能力只在特定模型规模下可预测地出现,这一发现引人入胜。扩大语言模型规模已被证明能带来性能提升和样本效率等好处【27, Kaplan 等人,2020】,但思维链推理是“涌现的”,因为它的成功无法仅通过外推小规模模型的性能来预测,实际上对于大多数小于10B参数的模型,思维链反而会损害性能。

错误分析揭示规模效应的原因。为什么模型规模能改善思维链提示是一个多方面的问题,我们通过错误分析初步探讨了这一点。这项小型分析涉及手动阅读 PaLM 62B 犯下的45个错误,并将它们分为语义理解(20个错误)、缺少一步(18个错误)和其他错误(7个错误)。“其他”类别包括幻觉、重复输出和符号映射错误。这个分类是借鉴附录D.2中对LaMDA的初步错误分析,其类别是基于修正思维链所需改进而构想的。

规模扩大修复了各类错误。如图9所示,将PaLM扩展到540B参数修复了所有三个类别中的大部分错误。图10给出了通过将PaLM扩展到540B修复的语义理解和缺少一步错误的例子。这个结果似乎与一个假设一致,即语言模型随着模型规模的扩大获得了一系列语义理解和逻辑推理技能(尽管模型规模常与其他因素,如训练计算量,相混淆)。

图9:对PaLM 62B答错的45个问题的错误分析。这些错误被归类为语义理解、缺少一步和其他。其他类别包括幻觉、重复输出和符号映射错误。将PaLM扩展到540B修复了所有类别中的大部分错误。
图9:对PaLM 62B答错的45个问题的错误分析。这些错误被归类为语义理解、缺少一步和其他。其他类别包括幻觉、重复输出和符号映射错误。将PaLM扩展到540B修复了所有类别中的大部分错误。

小模型失败的原因。关于小语言模型为什么会失败,有三点值得注意。首先,小语言模型在相对简单的符号映射任务上也会失败。如第5节所示,即使是只需要使用少样本示例中给出的相同思维链逻辑结构来泛化到新例子的符号推理任务,小语言模型仍然失败了。其次,小语言模型似乎天生算术能力较弱,正如【8】Brown 等人 (2020) 所示,进行简单的算术运算(不涉及语义理解)需要足够的模型规模。最后,我们定性地注意到,小语言模型常因重复或逻辑无法得出最终答案而无法生成可解析的最终答案。

总结。总之,思维链推理的成功是模型规模的复杂现象,可能涉及多种涌现能力(语义理解、符号映射、保持主题、算术能力、忠实度等)。未来的工作可以更彻底地研究预训练数据、模型架构和优化目标的哪些特性能够因果地促成这种推理能力。

图10:通过将 PaLM 从 62B 扩展到 540B 修复的语义理解和缺少一步错误的示例。
图10:通过将 PaLM 从 62B 扩展到 540B 修复的语义理解和缺少一步错误的示例。

A.2 提示工程的作用是什么?

提示敏感性是一个关键考量。提示的一个关键考量是对具体提示的敏感性。大量工作表明,提示会以意想不到的方式影响语言模型【43, Min 等人,2022】。我们创建思维链标注的通用方法是从训练集中选取八个示例,并将推理过程分解为导向最终答案的多个步骤。思维链标注的例子在图3中提供,完整的提示在附录G中。为了分析思维链对提示工程的敏感性,我们针对不同因素进行了鲁棒性实验。

不同因素下的鲁棒性分析
- 不同标注者:我们首先分析了对三个不同标注者的鲁棒性(第3.4节和图6)。尽管性能存在显著差异(稍后讨论),但在算术、常识和符号推理的八个数据集上,所有三位标注者的思维链都比基线表现好得多(表6和表7)。类似于【16】Cobbe 等人 (2021) 的标注过程,标注者除了被要求简单地写下导向最终答案的逐步推理过程外,没有得到关于如何编写思维链标注的具体指示。因此,标注是以每位标注者自己的语言“思维链”写作风格编写的。
- 无机器学习背景的标注者:GSM8K数据集【16, Cobbe 等人,2021】方便地提供了一个由众包工作者编写的带有推理链的训练集,这使我们能够研究思维链是否仍然适用于来自没有机器学习背景的独立来源的推理链。因此,我们从GSM8K中随机抽取了三组八个带有思维链的示例。这些思维链标注在所有四个算术数据集上也都比基线表现好得多(表6),表明思维链不依赖于特定的标注者群体。
- 不同示例:上述不同的GSM8K示例实验(表6)也表明,思维链提示适用于不同的示例集。值得注意的是,我们在所有四个算术数据集上测试了每一组示例(而不是为每个数据集从其训练集中挑选示例),这表明示例不一定需要来自与测试示例相同的数​​据集分布。
- 不同示例顺序:先前的工作表明,在某些情况下(例如,分类),即使是提示的顺序也很重要——改变少样本示例的排列顺序可能导致GPT-3在SST-2上的准确率从接近随机(54.3%)到接近SOTA(93.4%)【85, Zhao 等人,2021】。我们在表6和表7中展示了不同示例顺序的性能标准差。在几乎所有情况下,关于提示顺序的标准差都相对较小。唯一的例外是硬币翻转任务,其示例顺序的标准差很高,原因可能与【85】Zhao等人 (2021) 提到的相同——对于分类任务,连续出现多个相同类别的示例会使模型输出产生偏见。
- 不同数量的示例:我们还发现,当少样本示例数量变化时,思维链提示的增益通常仍然存在。这在图11的五个数据集中得到了展示(由于计算资源限制,我们没有对所有数据集进行此项实验)。我们还在初步实验中发现,进一步增加标准提示中的示例数量并没有带来显著的增益(例如,从8个增加到16个示例并没有使标准提示的性能赶上思维链提示)。
- 不同语言模型:另一个有趣的问题是,某些对一个模型效果更好的提示是否对其他大型语言模型也效果更好。我们发现,使用相同的提示,思维链提示在所有三个模型(LaMDA、GPT-3和PaLM)上都提高了性能,除了GPT-3在CSQA和StrategyQA上的所有数据集(表1、表4、表5)。思维链的增益在不同模型间不能完美迁移是一个局限性;未来的工作可以研究不同的预训练数据集和模型架构如何影响思维链提示的性能增益。

提示工程仍然重要。尽管在算术推理方面,结果对提示相对鲁棒,但我们想明确指出,提示工程仍然很重要,并且在许多情况下可以显著提高性能。虽然大多数思维链标注都优于标准提示,但在许多情况下存在很大的差异。例如,对于硬币翻转任务,标注者A的性能为99.6%,而标注者C的性能为71.4%,尽管两者都高于标准提示的50.0%(见表7)。甚至有些任务需要提示工程才能获得良好性能。在初步实验中,我们尝试使用思维链让语言模型反转一个包含5个项目的列表的顺序。虽然两位合著者尽管尽了最大努力也未能编写出解决该任务的思维链提示,但第三位合著者却能编写出一个完美解决该任务的思维链。

未来方向。如何以鲁棒的方式生成思维链标注可能是一个有趣的未来研究方向。例如,一个想法是使用大型语言模型通过提示自动生成思维链(并可能在验证集上对此进行优化)。

A.3 思维链提示是否能为我的任务提升性能?

适用场景的直觉判断。虽然思维链提示原则上适用于任何文本到文本的任务,但它对某些任务的帮助比其他任务更大。基于本文的实验,我们的直觉是,当满足三个条件时,思维链的帮助最大:(1) 任务具有挑战性,需要多步推理;(2) 使用了大型语言模型;(3) 扩展曲线(scaling curve)相对平坦。反之,当一个或多个条件不满足时,收益会变小。

算术推理结果的支持。这些直觉可能得到了算术推理结果的支持。思维链提示的性能增益在PaLM 540B上对GSM8K(挑战性的多步问题,平坦的扩展曲线)最大,这满足了这些条件。对于仅需一两步的MAWPS子集(SingleOP, SingleEq, 和 AddSub),性能增益很小,在这些子集上PaLM 540B已经达到了90%或更高的性能(并且当性能已经很强时,改进空间通常也较小)。

潜在应用与未来工作。尽管在本文中我们专注于多步推理任务(算术、常识和符号),但思维链提示可能适用于任何人类使用“思维链”来解决的任务(至少在原则上)。我们将思维链提示在这些多样化任务(例如,机器翻译等)上的实证评估留给未来的工作。

A.4 为什么仅用方程提示对某些算术推理数据集不够?

方程提示的局限性。仅用方程作为中间步骤进行提示在许多数据集上确实有帮助,特别是当数据集只需要少量推理步骤时(SVAMP, ASDiv, MAWPS)。然而,对于GSM8K,仅使用方程并没有显著提高性能。基于定性分析,我们认为这些问题的语义过于复杂,模型无法直接将它们翻译成数学方程。

示例分析。以LaMDA 137B的一个例子来说明:
问题:迈克打乒乓球40分钟。前20分钟,他得了4分。后20分钟,他的得分多了25%。他总共得了多少分?
* 仅方程(错误答案): (4 + 20 * 0.25) = 6。答案是6。
* 思维链(正确): 迈克打了40分钟乒乓球。前20分钟,他得了4分。后20分钟,他的得分多了25%。所以他在后20分钟多得了25%的分数。4 x 1.25 = 5。所以他在后20分钟得了5分。所以他总共得了9分。答案是9。

结论。模型很难直接将所有语义翻译成一个单一的方程,但思维链允许它通过自然语言的中间步骤更好地推理问题的每个部分。

D.1 正确思维链分析

分析方法。正如正文所述,我们分析了LaMDA 137B在GSM8K数据集上得出正确答案的50个思维链。在这50个中,只有一个是通过不正确的推理得出正确答案的(见表9:“偶然正确”)。其余49个的逻辑和数学都正确,示例见表8。其中有五个存在微小瑕疵,但保持了连贯和可理解的逻辑:
- 一个有未明确说明的陈述(见表9:“正确但陈述不具体”)。
- 一个做出了不相关但正确的陈述(见表9:“正确但不相关的陈述”)。
- 两个逻辑正确,但在方程中省略了具体步骤,但仍然可以理解(见表9:“正确但方程不完美”)。
- 一个数学正确,但颠倒了语义(见表9:“正确但语义颠倒”)。

对不同任务类型的推论。虽然我们发现对于得出正确答案的数学问题,思维链推理大多是正确的,但这很可能是因为对于自由回答的问题,偶然得出正确答案很难。对于多项选择或二元分类问题,模型通过不正确的推理路径得出正确答案的可能性要大得多(例如,我们评估的所有常识推理数据集)。这是一个局限性,未来的工作应该对此类思维链的事实性进行分析。

D.2 错误思维链分析

错误分类方法。我们还手动分析了LaMDA 137B在GSM8K上答错的50个随机抽样输出。思维链可能出错的方式有很多,这使得错误分类的设计并非易事。我们决定根据修正思维链所需的改动来对错误进行分类,目的是阐明未来如何改进模型。

三类可修正的错误。我们发现许多思维链可以通过以下三类修改之一来修正:
- 仅计算器错误。我们发现8%的思维链完全正确,除了一个计算器错误——换句话说,像【16】Cobbe 等人 (2021) 那样对所有方程应用外部计算器,就能使思维链变得正确。这类错误的一个例子见表10:“仅计算器错误”。事实上,当我们在LaMDA 137B上为思维链提示添加一个Python程序作为外部计算器时,GSM8K的解决率从14.3%上升到17.3%,如表2所示。此外,34%的例子除了其他类型的错误外,还包含计算器错误。然而,我们对其余错误类型的分类是独立于计算器错误进行的。
- 符号映射错误。接下来我们发现16%的思维链是正确的,除了我们称之为符号映射错误。我们将符号映射错误定义为,思维链除了数字符号外是正确的,并且只需修改方程而不修改文字就能使其完全正确。为了避免将任何思维链都归为此类,我们限制这类思维链必须能够被修改成一个完全正确的推理过程(而不仅仅是最终答案正确)。这类错误的一个例子见表10:“符号映射错误”。
- 缺少一步错误。我们的下一个错误类别是那些除了缺少一个步骤外都正确的思维链。换句话说,这些思维链可以通过添加一个模型遗漏的额外推理步骤来重写为正确的。这类错误的一个例子见表10:“缺少一步错误”。我们发现22%的错误属于这一类别。

难以修正的错误。我们发现剩余的思维链(50个中的27个;54%)需要大量修改才能成为一个正确的思维链。这里几乎所有的情况都涉及某种语义理解错误(见表11:“语义理解错误”),其中27个中的8个还存在不连贯的思维链,意味着生成的思维链中的某些陈述与前面的陈述不符或违反了基本的常识(见表11:“不连贯的思维链错误”)。

总结与展望。总的来说,无法保证大型语言模型生成的推理过程是连贯或事实正确的,这一点在最近评估语言模型生成内容和解释的事实性的工作中得到了强调【41, Maynez 等人,2020;57, Rashkin 等人,2021;83, Ye 和 Durrett,2022;40, Marasovic 等人,2022;76, Wiegreffe 等人,2022】。不正确的推理过程可能导致错误的最终答案,也可能意外地导致正确的最终答案(对于二元分类等任务,意外正确的可能性比自由回答更高)。提高语言模型生成内容在上下文和世界知识方面的事实性是语言模型研究中一个重要的开放问题,也有望潜在地改善语言模型的多步推理能力。一种提高解码质量的潜在方法可能涉及生成多个推理路径,并用一个验证器对每个路径进行评分,尽管这需要训练验证器【16, Cobbe 等人,2021;66, Shen 等人,2021;71, Thoppilan 等人,2022】。

D.3 额外的鲁棒性分析

对少样本示例数量的鲁棒性。由于正文中的实验使用了固定数量(8个)的少样本示例(受限于1024个token的输入长度),我们验证了思维链提示对不同数量的少样本示例是鲁棒的。我们对LaMDA 137B进行了实验,比较了思维链提示与标准提示在五个标准提示扩展曲线大多平坦的数据集上的表现(即最大模型未达到高性能)。如图11所示,思维链提示相对于标准提示的改进在改变提示中少样本示例数量时仍然保持鲁棒。

图11:思维链提示相对于标准提示的改进似乎对改变提示中少样本示例数量具有鲁棒性。
图11:思维链提示相对于标准提示的改进似乎对改变提示中少样本示例数量具有鲁棒性。