谷歌:链式思维提示(COT Prompting)引发大型语言模型的推理
原文链接:
https://arxiv.org/abs/2201.11903
作者列表:
Jason Wei, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Brian Ichter, Fei Xia, Ed H. Chi, Quoc V. Le, Denny Zhou
Google Research, Brain Team, {jasonwei,dennyzhou}@google.com
译者著:本文由 GPT4 辅助翻译生成,译者为方便不熟悉阅读论文的朋友,做了少量格式优化、不影响主体内容的删减、以及部分专有名词解释和改写,若您还是觉得阅读起来太过于晦涩,可以尝试略过那些英文的专业词汇以及专注摘要和各章节结论部分。
摘要
我们探索如何生成一系列中间推理步骤的思路链,显著提高大型语言模型执行复杂推理的能力。特别地,我们展示了这种推理能力是如何自然地在足够大的语言模型中出现的,通过一个简单的方法叫做思路链提示,在提示中提供一些思路链演示作为示例。 在三个大型语言模型上的实验表明,思路链提示提高了在一系列算术、常识和符号推理任务上的表现。实证收益可以是显著的。例如,用仅八个思路链示例来提示 PaLM 540B,在数学问题的 GSM8K 基准测试中实现了最先进的准确性,甚至超过了带有验证器的 finetuned GPT-3。
图1:思维链提示使得大型语言模型能够解决复杂的算术、常识和符号推理任务。思维链推理过程被突出显示。
1 介绍
近年来,语言模型(Peters等,2018;Devlin等,2019;Brown等,2020等)已经彻底改变了自然语言处理领域的局面。扩大语言模型的规模已被证明能够带来一系列好处,如提高性能和样本效率(Kaplan等,2020;Brown等,2020等)。然而,仅仅扩大模型规模并不足以在诸如算术、常识和符号推理等挑战性任务上取得高性能(Rae等,2021)。
图2:PaLM 540B使用思维链提示,在数学问题GSM8K基准测试中实现了新的最先进性能。微调的GPT-3和先前的最佳结果来自Cobbe等人(2021年)。
本文探讨了一种简单方法,如何通过两个思路来释放大型语言模型的推理能力。
- 首先,算术推理(reasoning)技术可以从产生导致最终答案的自然语言解释中受益。先前的工作通过从头开始训练或对预训练模型进行微调赋予模型生成自然语言中间步骤的能力,以及使用形式语言而不是自然语言的符号方法。
- 其次,大型语言模型通过提示提供了在上下文中进行少量示范学习的激动人心的前景。也就是说,与其为每个新任务微调单独的语言模型检查点,可以简单地通过少量输入-输出示范来“提示”模型。令人惊讶的是,这已经成功地应用于一系列简单的问答任务。
然而,以上两个思路都存在关键限制。对于解释增强训练和微调方法,创建大量高质量理由的成本很高,这比正常机器学习中使用的简单输入-输出对复杂得多。对于 Brown 等人(2020)使用的传统少样本提示方法,它在需要推理能力的任务上表现不佳,并且通常不随着语言模型规模的增加而显着改进(Rae 等,2021)。在本文中,我们结合了这两个思路的优势,以避免它们的限制。具体而言,我们探讨了语言模型在给定由三元组组成的提示的情况下,执行推理任务的少样本提示的能力:<input,思考链,output>。思考链是一系列导致最终输出的中间自然语言推理步骤,我们将此方法称为思考链提示。图1显示了一个示例提示。
我们在算术、常识和符号推理基准测试上进行了实证评估,证明了思考链提示优于标准提示,有时效果非常显著。图2展示了其中一个结果——在数学单词问题的GSM8K基准测试中(Cobbe等,2021),PaLM 540B 的思考链提示优于标准提示,并实现了新的最先进性能。仅使用提示的方法非常重要,因为它不需要大量的训练数据集,并且单个模型检查点可以执行许多任务而不会失去泛化能力。这项工作强调了大型语言模型如何通过少量关于任务的自然语言数据进行学习(例如通过大型训练数据集自动学习输入和输出的模式)。
2 Chain-of-Thought Prompting
考虑自己在解决复杂推理任务(如多步数学问题)时的思考过程。通常将问题分解为中间步骤并在给出最终答案之前解决每个步骤:
Jane 给她妈妈 2 朵花后,她有 10 朵...然后她给她父亲 3 朵后,她将有7朵...所以答案是7
本文的目标是赋予语言模型生成类似的思维链的能力-一系列连贯的中间推理步骤,导致问题的最终答案。我们将展示,如果在少量提示的示例中提供了思维链演示,则足够大的语言模型可以生成思维链。
图1 显示了一个模型生成一个解决数学文字问题的思维链的示例,否则它会得到错误的答案。在这种情况下,思维链类似于一个解决方案,可以将其解释为一个解决方案,但我们仍然选择将其称为思维链,以更好地捕捉它模拟一个逐步思考过程以到达答案的思想(而且解决方案/解释通常在最终答案之后出现。
思维链提示作为促进语言模型推理的方法具有几个有吸引力的特点。
- 首先,原则上,思维链允许模型将多步问题分解为中间步骤,这意味着可以将额外的计算分配给需要更多推理步骤的问题。
- 其次,思维链提供了一个可解释的窗口,展示了模型的行为方式,表明它可能是如何得出特定答案的,并提供了调试推理路径出现错误的机会(尽管完全描述支持答案的模型计算仍然是一个未解决的问题)。
- 第三,思维链推理可用于数学文字问题、常识推理和符号操作,原则上适用于人类可以通过语言解决的任何任务。
- 最后,思维链推理可以通过将思维链序列的示例包含在少量提示的示例中,轻松地在足够大的现成语言模型中引出。
在经验实验证明,我们将观察思维链提示对算术推理(第 3 节)、常识推理(第 4 节)和符号推理(第 5 节)的效用。
3 算术推理(Arithmetic Reasoning)
我们从考虑如图1所示形式的数学问题开始,这些问题衡量了语言模型的算术推理能力。虽然对人类来说很简单,但算术推理是语言模型经常挣扎的任务(Hendrycks 等人,2021; Patel 等人,2021等)。值得注意的是,当与 540B 参数语言模型一起使用时,思维链提示在几个任务上表现与任务特定的微调模型相当,甚至在具有挑战性的 GSM8K 基准测试(Cobbe等人,2021)上实现了新的最先进水平。
3.1 研究步骤
我们探索了多个基准测试上各种语言模型的思维链提示。
- 基准测试(Benchmark): 我们考虑以下五个数学问题基准测试:(1)Cobbe 等人的数学问题GSM8K基准测试(2021年),(2)带有不同结构的数学问题的 SVAMP 数据集(Patel 等人,2021年),(3)多样化数学问题的 ASDiv 数据集(Miao 等人,2020年),(4)代数问题的 AQuA 数据集,以及(5)MAWPS基准测试(Koncel-Kedziorski 等人,2016年)。附录表12给出了示例问题。
- 标准提示(Standard prompting): 对于基准线,我们考虑由 Brown 等人(2020年)推广的标准少样本提示,其中语言模型在输出测试示例的预测之前会提供输入输出对的上下文示例。示例格式为问题和答案。模型直接给出答案,如图1(左)所示。
- 思维链提示(Chain-of-thought prompting): 我们提出的方法是在少量样本提示中为每个示例增加与答案相关的思路链,如图1(右)所示。由于大多数数据集只有一个评估分割,因此我们手动组成了一组带有提示思路链的八个少量样本示例,图1(右)显示了一个思路链示例,完整的示例集在附录表20中给出。(这些特定的示例没有经过提示工程;鲁棒性在第 3.4 节和附录 A.2 中研究。)为了研究这种形式的思路链提示是否可以成功地引出对一系列数学问题的成功推理,我们将这个单一的八个思路链示例集用于除 AQuA 外的所有基准测试,因为 AQuA 是多项选择而不是自由响应。对于 AQuA,我们使用训练集中给出的四个示例和解决方案,如附录表21所示。
图3:算术、常识和符号推理基准测试的<input、思维链和output>三元组的示例。思维链被突出显示。完整提示请参见附录G。
- 语言模型,我们评估了五个大型语言模型:
首先是 GPT-3(Brown等,2020),我们使用 text-ada-001,text-babbage-001,text-curie-001 和 text-davinci-002,这些都是 InstructGPT 模型,分别具有 350M,1.3B,6.7B 和 175B个参数(Ouyang等,2022);
第二个是 LaMDA(Thoppilan等,2022),具有422M,2B,8B,68B和137B个参数的模型;
第三个是 PaLM,具有8B,62B 和 540B个参数的模型
第四个是 UL2 20B(Tay等,2022);
第五个是 Codex(Chen等,2021,在OpenAI API中称为code-davinci-002);
我们通过贪婪解码从模型中进行采样(虽然后续工作表明采用多个采样生成的大多数最终答案可以改善思维链提示(Wang等,2022a))。对于LaMDA,我们报告了五个随机种子的平均结果,每个种子都有不同的随机洗牌示例顺序。由于LaMDA实验在不同种子之间没有显示出很大的差异,为了节省计算资源,我们为所有其他模型报告单个示例顺序的结果。
3.2 结果
链式思维提示的最强结果总结在图4中,每个模型集合、模型大小和基准测试的所有实验输出在附录的表 2 中显示。有三个关键点需要注意。首先,图 4 显示,链式思维提示是模型规模的一种新兴能力(Wei 等人,2022b)。也就是说,链式思维提示对小型模型的性能没有积极影响,仅在使用大约100B参数的模型时才能提高性能。我们定性地发现,规模较小的模型产生了流畅但不合逻辑的思维链,导致性能低于标准提示。
其次,链式思维提示对于更复杂的问题具有更大的性能提升。例如,在 GSM8K(基线性能最低的数据集)中,最大的 GPT 和 PaLM 模型的性能提高了一倍以上。另一方面,对于 MAWPS 的最简单子集 SingleOp,只需要一个步骤就可以解决,性能提高要么为负数,要么非常小(见附录表3)。
第三,通过 GPT-3 175B 和 PaLM 540B进行链式思维提示与以前的最先进技术相比表现优异,这些技术通常在标记的训练数据集上对任务特定的模型进行微调。图4显示了 PaLM 540B 如何使用链式思维提示在 GSM8K、SVAMP 和 MAWPS 上实现了新的最先进技术(尽管需要注意的是,标准提示已经超过了SVAMP的先前最佳结果)。在另外两个数据集 AQuA 和 ASDiv 上,使用链式思维提示的 PaLM 接近于最先进技术的水平(附录表2)。
图4:思维链提示使得大型语言模型能够解决具有挑战性的数学问题,值得注意的是,思维链推理能力是随着模型规模的增加而出现的新兴能力。先前最好的成绩分别来自于 Cobbe 等人(2021)的 GSM8K,Jie 等人(2022)的 SVAMP 和 Lan 等人(2021)的 MAWPS。
为了更好地理解为什么思维链提示有效,我们手动检查了LaMDA 137B模型为GSM8K生成的思维链。
在 50 个随机示例中,模型返回了正确的最终答案,除了两个偶然到达正确答案的生成思维链之外,所有的生成思维链在逻辑和数学上都是正确的(请参见附录D.1和表8,其中列出了正确的模型生成思维链的示例)。我们还随机检查了 50 个样本,其中模型给出了错误的答案。
这项分析的总结是,46% 的思维链几乎是正确的,除了一些小错误(计算器错误、符号映射错误或缺少一个推理步骤),而另外 54% 的思维链在语义理解或连贯性方面存在重大错误(请参见附录D.2)。
为了提供一些关于为什么扩展可以提高思维链推理能力的小见解,我们进行了类似的分析,研究了 PaLM 62B 所犯的错误,以及通过将其扩展到 PaLM 540B 是否可以纠正这些错误。
总结是,将PaLM扩展到 540B 可以修复 62B 模型中大部分一步缺失和语义理解错误(见附录A.1)。
3.3 消融研究(Ablation Study)
术语——“消融研究”通常用于神经网络,尤其是相对复杂的神经网络,如 R-CNN。 我们的想法是通过删除部分网络并研究网络的性能来了解网络 。 在机器学习,特别是复杂的深度神经网络的背景下,已经采用“消融研究”来描述去除网络的某些部分的过程,以便更好地理解网络的行为。
使用思维链提示的观察到的好处,引发了一个自然的问题,即是否可以通过其他类型的提示来提供相同的性能改进。图5 显示了思维链的三种变化的消融研究。
图5:使用LaMDA 137B和PaLM 540B进行提示的不同变体的消融研究。其他数据集的结果在附录表6和表7中给出。
- 仅使用方程式:
- 思维链提示可能有用的原因之一是它产生要评估的数学方程式,因此我们测试了一种变体,其中模型被提示在给出答案之前仅输出数学方程式。
- 图5显示,仅方程提示对于 GSM8K 的帮助不大,这意味着在没有思维链中的自然语言推理步骤的情况下,GSM8K 问题的语义直接转化为方程式太具有挑战性。
- 然而,对于一步或两步问题的数据集,我们发现仅方程提示确实改善了性能,因为方程式可以很容易地从问题中推导出来(请参见附录表6)。
- 仅使用变量计算:
- 另一个直觉是,思维链条允许模型在更困难的问题上花费更多的计算(即中间标记)。为了将可变计算的影响与思维链条推理隔离开来,我们测试了一种配置,其中提示模型仅输出一系列点(. . .),点的数量等于解决问题所需的方程式中的字符数。
- 这个变体表现和 Benchmark 差不多,这表明仅仅是变量计算并不是思维链成功的原因,而且通过自然语言表达中间步骤似乎有用。
- 问题解决后的思维链:
- 思维链提示的另一个潜在优点可能仅仅是这样的提示允许模型更好地访问预训练期间获得的相关知识。
- 因此,我们测试了一种另类配置,其中思维链提示仅在回答后给出,以确定模型是否真正依赖于产生的思维链来给出最终答案。
- 这个变体表现和基线相同,这表明思维链中体现的顺序推理对于激活知识以外的其他原因也是有用的。
3.4 COT 的鲁棒性(Robustness of Chain of Thought)
对样本的敏感性是提示方法的一个关键考虑因素——例如,改变少量示例的排列顺序会导致 GPT-3 在 SST-2 上的准确性从接近于随机(54.3%)到接近于最先进水平(93.4%)(Zhao 等,2021)。在这个最后的小节中,我们评估了对由不同注释者编写的思维链的鲁棒性。除了上面的结果外,这些结果使用了由本文的两位共同作者(注释者 B 和 C)独立编写的相同的少量示例的思维链(在附录H中显示)。注释者A 还写了另一条比原来更简洁的思维链,遵循 Cobbe 等人(2021)提供的解决方案的风格。
图6 显示了这些结果,用于 GSM8K 和 MAWPS 的 LaMDA 137B(其他数据集的消融结果在附录表6 /表7 中给出)。虽然在使用基于示例的提示时会出现不同的思维链注释之间的差异(Le Scao 和Rush,2021;Reynolds 和 McDonell,2021;Zhao等,2021),但所有思维链提示集合都大幅优于标准基线。这个结果意味着成功使用思维链不依赖于特定的语言风格。
图6:思维链提示对于不同提示示例具有差异(如预期),但在各种注释者以及不同实例中均优于标准提示。
为了确认成功的思维链提示对其他例子集的有效性,我们还对从 GSM8K 训练集中随机抽取的三组八个例子进行了实验,这是一个独立的数据源(该数据集中的示例已经包含像思维链一样的推理步骤)。图6 显示,这些提示的表现与我们手动编写的例子相当,同时明显优于标准提示。除了对注释者、独立编写的思维链、不同的例子和各种语言模型具有鲁棒性之外,我们还发现算术推理的思维链提示对不同的例子顺序和不同数量的例子也具有鲁棒性(见附录 A.2)。
4 常识推理(Commonsense Reasoning)
思路链虽然特别适合数学问题,但它的基于语言的特性使其适用于广泛类别的常识推理问题,这些问题涉及在一般背景知识的前提下推理物理和人类交互。常识推理对于与世界交互至关重要,但目前的自然语言理解系统仍无法达到这一境地(Talmor等人,2021)。
- 基准(Benchmark),我们考虑五个数据集,涵盖各种常识推理类型:
- 流行的 CSQA(Talmor等人,2019)提出关于世界的常识问题,涉及复杂的语义,通常需要先前的知识;
- StrategyQA(Geva等人,2021)要求模型推断一个多跳策略来回答问题;
- 我们从 BIG-bench 合作(BIG-bench collaboration, 2021)中选择了两个专门的评估集:
- 日期理解,涉及从给定上下文推断日期;
- 运动理解,涉及确定与运动相关的句子是否合理
- 最后,SayCan 数据集(Ahn 等人,2022)涉及将自然语言指令映射到来自离散集机器人动作序列。图3 显示了所有数据集的思路链注释示例。
- 提示(Prompts):我们遵循前一部分的相同实验设置。对于 CSQA 和 StrategyQA,我们从训练集中随机选择示例,并手动为它们组成思路链,以用作少样本示例。BIG-bench 的两个任务没有训练集,因此我们选择了前十个示例作为少样本示例,然后在评估集的其余部分上报告数字。对于 SayCan,我们使用 Ahn 等人(2022)所使用的训练集中的六个示例,并手动组合思路链。
- 结果(Results):图7突出显示了 PaLM 的这些结果(LaMDA、GPT-3和不同模型规模的完整结果显示在表4中)。
- 对于所有任务,扩大模型规模改善了标准提示的性能;
- 思路链提示导致进一步的收益,对于 PaLM 540B,改善效果似乎最大。
- 通过思路链提示,PaLM 540B 相对于基准表现取得了强劲的性能,在 StrategyQA 上超过了先前的最优结果(75.6% vs 69.4%),在运动理解上超过了一个未受帮助的运动爱好者(95.4% vs 84%)。
- 这些结果表明,思路链提示也可以提高在需要各种常识推理能力的任务上的性能(但请注意,在 CSQA 上的收益很小)。
图7:思维链提示还可以提高语言模型的常识推理能力。这里显示的语言模型是 PaLM。先前的最佳成绩来自于 CSQA(Talmor等人,2019)和 StrategyQA(Geva 等人,2021)的排行榜(仅限单一模型,截至 2022年5月5日)。使用 LaMDA、GPT-3 和 PaLM不同大小的额外结果在表4中显示。
5 符号推理(Symbolic Reasoning)
我们的最终实验评估考虑符号推理,这对人类来说很简单,但对语言模型来说可能具有挑战性。我们表明,思维链提示不仅使语言模型能够执行在标准提示设置中具有挑战性的符号推理任务,而且还促进了长度泛化,使其能够处理推理时间输入比few-shot示例中看到的更长的情况。
任务,我们使用以下两个小任务:
- 最后一个字母串联。此任务要求模型将名称中的单词的最后一个字母串联起来(例如,“Amy Brown”→“yn”)。它是首字母串联的更具挑战性版本,语言模型已经可以在没有思维链的情况下执行此任务。我们通过随机连接名字人口统计数据中前一千个名字的名字来生成全名(https://namecensus.com/)。
- 抛硬币。此任务要求模型回答硬币在人们抛掷或不抛掷硬币后是否仍然正面朝上的问题(例如,“硬币正面朝上。菲比抛硬币。奥斯瓦尔多不抛硬币。硬币还是正面朝上吗?”→“不是”)。
图8:使用链式思维提示有助于在两个符号推理任务中推广到更长的序列。
由于这些符号推理任务的构建是明确定义的,因此对于每个任务,我们考虑一个领域内测试集,其中示例具有与训练/少量样本相同数量的步骤,以及一个领域外(out-of-domain,OOD)测试集,其中评估示例的步骤比样本中的步骤更多。对于最后一个字母连接,模型只看到具有两个单词的名称示例,然后对具有 3 个和 4 个单词的名称执行最后一个字母连接。我们对硬币翻转任务中的潜在翻转次数也是如此。我们的实验设置使用与前两个部分相同的方法和模型。我们再次为每个任务手动组合少量样本的思维链,这些思维链在图3 中给出。
结果:
这些领域内和 OOD 评估的结果如图8所示,其中 PaLM 的结果显示在附录表5 中 LaMDA 的结果。使用 PaLM 540B,思维链提示可以使解决率接近 100%(请注意,标准提示已经可以解决硬币翻转问题,但对于 LaMDA 137B 则不行)。
请注意,这些领域内评估是“小任务”,因为在少量样本的思维链中已经提供了完美的解决方案结构。所有模型需要做的就是在测试时间示例中重复相同的步骤。然而,即使是小模型也会失败-这三个任务中对看不见的符号进行抽象操作的能力仅在100B模型参数的规模下才会出现。 至于 OOD 评估,标准提示对两个任务都失败了。通过思维链提示,语言模型实现了向上扩展曲线(尽管性能低于领域内设置)。
因此,思维链提示有助于足够规模的语言模型实现长度泛化,超越了已见思维链。
6 讨论
我们探索了链式思维提示作为一种简单机制,用于引出大型语言模型的多步推理行为。
- 我们首先发现,链式思维提示显著提高了算术推理的性能,产生了比去除和鲁棒性更强的改进,而且在不同的注释者、示例和语言模型下具有鲁棒性(第3节)。
- 接下来,对常识推理的实验强调了链式思维推理的语言性质使其具有普适性(第4节)。
- 最后,我们展示了对于符号推理,链式思维提示有助于对长序列长度的 OOD 泛化(第5节)。
在所有实验中,链式思维推理只是通过提示现成的语言模型来引出的。在撰写本文的过程中,没有对语言模型进行微调。
模型规模产生链式思维推理作为结果是一个主题(Wei等人,2022b)。对于许多推理任务,在标准提示具有平坦缩放曲线的情况下,链式思维提示会导致显著增加的缩放曲线。链式思维提示似乎扩展了大型语言模型可以成功执行的任务集合,换句话说,我们的工作强调了标准提示只提供了大型语言模型能力的下限。这一观察结果可能引发更多问题,例如,我们可以期望推理能力在模型规模进一步增加时有多大的提高?哪些其他提示方法可以扩展语言模型可以解决的任务范围?
至于局限性,我们首先说明,尽管思维链模拟了人类推理者的思维过程,但这并不能回答神经网络是否真正“推理”,这是我们留给开放问题。
其次,尽管在少样本情况下手动增强示例的成本很小,但这些注释成本可能会限制微调的使用(尽管这可能可以通过合成数据生成或零样本泛化来克服)。
第三,没有正确推理路径的保证,这可能会导致正确和不正确的答案;改进语言模型的事实生成是未来工作的开放方向(Rashkin等人,2021;Ye和Durrett,2022;Wiegreffe等人,2022,等等)。
最后,链式思维推理仅在大规模模型下出现,这使得在实际应用中提供代价高昂;进一步的研究可以探索如何在较小的模型中诱导推理。
7 相关工作
这项工作受到许多研究领域的启发,我们在扩展的相关工作部分(附录C)详细介绍了这些领域。这里我们描述了两个方向和相关的论文,可能与本文最相关。第一个相关方向是使用中间步骤来解决推理问题。Ling 等人(2017)首创使用自然语言合理性通过一系列中间步骤来解决数学问题。他们的工作与使用形式语言推理的文献形成了鲜明的对比(Roy 等人,2015;Chiang 和 Chen,2019;Amini 等人,2019;Chen 等人,2019)。Cobbe 等人(2021)通过创建一个更大的数据集并使用它来微调预训练的语言模型,扩展了 Ling 等人(2017)的工作,而不是从头开始训练模型。在程序合成领域,Nye 等人(2021)利用语言模型预测 Python 程序的最终输出,通过首先逐行预测中间计算结果,并展示了他们的逐步预测方法比直接预测最终输出更好。自然地,本文也与最近大量的提示工作密切相关。自 Brown 等人(2020)推出少样本提示以来,有几种通用方法提高了模型的提示能力,例如自动学习提示(Lester 等人,2021)或向模型提供描述任务的指令(Wei 等人,2022a;Sanh 等人,2022;Ouyang 等人,2022)。虽然这些方法改进或增强了提示的输入部分(例如,添加到输入之前的指令),但我们的工作采取了正交方向,即用一系列思考链增强语言模型的输出。
8 结论
我们已经探索了思维链提示作为一种简单而广泛适用的方法,以增强语言模型的推理能力。
通过对算术、符号和常识推理的实验,我们发现思维链推理是模型规模的涌现属性(Emergent Property),允许足够大的语言模型执行否则具有平坦缩放曲线的推理任务。
扩大语言模型可以执行的推理任务范围,希望能激发更多关于基于语言的推理方法的工作。
Reference、附录等内容请见原文,在此不做翻译