引言
今天带来思维链论文 Chain-of-Thought Prompting Elicits Reasoning in Large Language Models的笔记。
作者探索了如何通过生成一系列中间推理步骤的思维链,显著提升大型语言模型在进行复杂推理时的能力。
1 总体介绍
语言模型的规模扩大已被证明能够带来一系列好处,如提高性能和样本效率。然而,仅仅扩大模型规模并不足以在挑战性任务(如算术、常识和符号推理)上取得高性能。
本篇工作探索了一种简单的方法,通过两个思路来解锁大型语言模型的推理能力。首先,算术推理技术可以通过生成导致最终答案的自然语言解释来受益。之前的工作通过从头训练或微调预训练模型赋予模型生成自然语言中间步骤的能力,以及使用形式语言而不是自然语言的神经符号方法。其次,大型语言模型通过提示的方式提供了在上下文中进行少样本学习的令人兴奋的前景。也就是说,与其为每个新任务微调单独的语言模型检查点,我们只需用一些输入-输出示例来提示模型展示任务。这在一系列简单的问答任务上取得了成功。
然而,上述两种思路都存在关键的局限性。对于基于解释增强的训练和微调方法,创建一组大量高质量的解释是昂贵且复杂的,这比通常的机器学习中使用的简单输入-输出对要复杂得多。对于Brown等人中使用的传统少样本提示方法,在需要推理能力的任务上表现不佳,并且随着语言模型规模的增加往往没有大幅改进。在本文中,作者以避免这些局限性的方式结合了这两种思路的优点。
具体而言,探索了语言模型在推理任务中执行少样本提示的能力,给定一个由三元组组成的提示:<input, chain of thougth, output>
。思维链(chain of thought)是一系列导致最终输出的中间自然语言推理步骤,将这种方法称为思维链提示。图1展示了一个示例提示。
在算术、常识和符号推理基准测试上进行了实证评估,结果显示思维链条提示优于标准提示,有时优势非常显著。图2展示了一个这样的结果,在数学问题基准测试GSM8K上,使用PaLM 540B的思维链条提示大幅超越标准提示,并实现了新的最先进性能。仅使用提示的方法很重要,因为它不需要大规模的训练数据集,并且单个模型检查点可以执行许多任务而不失去泛化能力。这项工作强调了大型语言模型如何通过少量自然语言数据学习任务的能力。
2 思维链提示
考虑一个人解决复杂推理任务(如多步骤数学问题)时的思维过程。通常会将问题分解为中间步骤,并在给出最终答案之前解决每个步骤:"Jane给了妈妈2朵花后,她剩下10朵...然后她给爸爸3朵花后,她剩下7朵...所以答案是7"。本工作的目标是赋予语言模型生成类似的思维链条的能力,即一系列连贯的中间推理步骤,这些步骤得到问题的最终答案。如果在少样本提示的示范中提供了思维链条推理的演示,足够大的语言模型可以生成思维链。
图1显示了一个模型生成的思维链,用于解决一个本来会回答错误的数学问题。在这种情况下,思维链集成了一个解决方案,但我们仍然选择称之为思维链,以更好地捕捉到它模拟了逐步思考过程以得出答案的思想(此外,解决方案/解释通常出现在最终答案之后)。
作为促进语言模型推理的方法,思维链提示具有几个有吸引力的特点:
- 首先,思维链原则上允许模型将多步骤问题分解为中间步骤,这意味着可以为需要更多推理步骤的问题分配更多计算资源。
- 其次,思维链提供了对模型行为的可解释窗口,提示了它可能是如何得出特定答案的,并提供了排查推理路径错误的机会。
- 第三,思维链条推理可用于数学问题、常识推理和符号操作等任务,并且可能适用于任何人类可以通过语言解决的任务。
- 最后,在足够大的现成语言模型中,通过将思维链条示例包含在少样本提示的示范中,可以很容易地引发思维链推理。
3 算术推理
首先考虑图1所示形式的数学问题,这些问题衡量了语言模型的算术推理能力。虽然对人类来说很简单,但算术推理常常是语言模型难以处理的任务。令人惊讶的是,当与540B参数的语言模型结合使用时,思维链提示在多个任务上的表现与特定任务微调模型相当,甚至在具有挑战性的GSM8K基准测试中达到了新的最先进水平。
3.1 实验设置
在多个基准测试中探索了不同语言模型的思维链条提示方法。
基准测试 考虑以下五个数学问题基准测试:(1)GSM8K数学问题基准测试、(2)具有不同结构的数学问题的SVAMP数据集、(3)多样化数学问题的ASDiv数据集、(4)代数数学问题的AQuA数据集,以及(5)MAWPS基准测试。
标准提示:作为基准,考虑了Brown等人广泛采用的标准少样本提示方法,其中语言模型在输出测试样例的预测之前,在上下文中使用输入-输出示例进行训练。示例被格式化为问题和答案。模型直接给出答案,如图1左所示。
思维链提示 作者提出的方法,在少样本提示中为每个示例增加一条与答案相关的思维链,如图1右所示。由于大多数数据集只有一个评估集,作者手动组成了一个包含八个少样本示例和思维链条的集合,图1右展示了一个思维链示例。
语言模型 评估了五个大型语言模型。第一个是GPT-3,使用text-ada-001、text-babbage-001、text-curie-001和text-davinci-002,这些模型预计对应于350M、1.3B、6.7B和175B参数的InstructGPT模型。第二个是LaMDA,它有422M、2B、8B、68B和137B参数的模型。第三个是PaLM,它有8B、62B和540B参数的模型。第四个是UL2 20B,第五个是Codex。通过贪婪解码从这些模型中采样。对于LaMDA,对五个随机种子进行了平均化的结果,每个种子都有一个不同的随机打乱示例顺序。
3.2 结果
思维链提示的最强结果总结如图4所示。有三个关键要点。
首先,图4显示思维链提示是模型规模的一种新兴能力。也就是说,思维链提示对小型模型的性能没有积极影响,只有在使用约100B参数的模型时才能获得性能提升。在定性上发现,规模较小的模型生成的思维链流畅但不合逻辑,导致性能低于标准提示。
其次,思维链提示在更复杂的问题上有更大的性能提升。例如,在GSM8K上,最大的GPT和PaLM模型的性能提升超过了两倍。另一方面,在MAWPS的最简单子集SingleOp中,只需要一个步骤即可解决问题,性能改进要么为负值,要么非常小。
第三,通过GPT-3 175B和PaLM 540B进行思维链提示与以往的最先进方法相比表现良好,以往的方法通常是在标记的训练数据集上对特定任务进行微调。
图4显示了PaLM 540B如何使用思维链条提示在GSM8K、SVAMP和MAWPS上达到了新的最先进水平。在另外两个数据集AQuA和ASDiv上,带有思维链提示的PaLM达到了与最先进方法相差不到2%的水平。
为了更好地理解为什么思维链条提示有效,手动检查了LaMDA 137B在GSM8K上生成的思维链。在50个模型返回正确最终答案的随机示例中,除了两个巧合性得出正确答案的链外,所有生成的思维链在逻辑和数学上都是正确的。还随机检查了50个模型给出错误答案的随机样本。这个分析的总结是,在几乎正确的思维链条中,有46%存在次要错误(计算器错误、符号映射错误或缺少一个推理步骤),而其他54%的思维链在语义理解或连贯性方面存在重大错误。为了提供一点关于为什么扩大规模会改善思维链推理能力的见解,对PaLM 62B产生的错误进行了类似的分析,并观察扩大到PaLM 540B是否能够修复这些错误。总结是将PaLM扩大到540B可以修复62B模型中大部分缺少一个步骤和语义理解错误。
3.3 消融研究
使用思维链提示的观察到的好处引发了一个自然的问题,即是否可以通过其他类型的提示获得相同的性能改进。图5显示了一个消融研究,包括下面三种思维链的变种。
仅方程式 思维链条提示可能有用的一个原因是它生成要评估的数学方程式,测试了一种变体,即在给出答案之前,模型仅被提示输出数学方程式。图5显示,仅方程式提示对GSM8K的帮助不大,这意味着GSM8K中的问题语义太复杂,无法直接将其翻译成方程式,需要借助思维链中的自然语言推理步骤。然而,对于只有一个步骤或两个步骤问题的数据集,仅方程式提示确实改善了性能,因为方程式可以很容易地从问题中推导出来。
仅变量计算 另一个直觉是,思维链使得模型可以在更难的问题上花费更多的计算资源(即更多的中间标记)。为了从思维链推理中分离出变量计算的影响,测试了一种配置,其中模型被提示仅输出与解决问题所需的方程式中的字符数相等的连续点(...)。这个变种的性能与基准相当,这表明仅仅变量计算并不是思维链条提示成功的原因,而通过自然语言表达中间步骤似乎是有用的。
答案之后的思维链 思维链提示的另一个潜在好处可能只是这样的提示可以使模型更好地访问在预训练过程中获取的相关知识。因此,测试了一种替代配置,即仅在给出答案之后才给出思维链提示,以确定模型是否实际上依赖于生成的思维链来给出最终答案。这个变种的性能与基准相当,这表明思维链中体现的顺序推理对于激活知识以外的原因也是有用的。
3.4 思维链的鲁棒性
对示例的敏感性是提示方法的一个关键考虑因素 ------例如,改变少样本示例的排列可能导致GPT-3在SST-2上的准确率从接近随机到接近最先进水平。这里评估了对不同注释者编写的思维链的稳健性。除了上面使用了由注释者A编写的思维链的结果外,作者独立为相同的少样本示例编写了思维链。还编写了比原始链更简明的另一个思维链,遵循Cobbe等人所给出的解决方案风格。
图6显示了LaMDA 137B在GSM8K和MAWPS上的这些结果。虽然在使用基于示例的提示时,不同的思维链注释之间存在差异是可以预料的,但是所有思维链提示集都显著优于标准基准。这个结果表明,成功使用思维链并不依赖于特定的语言风格。
为了确认成功的思维链提示是否适用于其他示例集,还使用了从GSM8K训练集中随机抽取的三组八个示例,这是一个独立的来源。图6显示,这些提示与动编写的示例具有可比性,也明显优于标准提示。
除了对注释者、独立编写的思维链、不同的示例和各种语言模型的稳健性外,对于算术推理,思维链提示对于不同示例顺序和不同数量的示例也是稳健的。
4 常识推理
虽然思维链特别适用于数学问题,但基于语言的思维链实际上适用于广泛的常识推理问题,涉及对物理和人类交互的推理,假定具有常识背景知识。常识推理对于与世界进行交互非常重要,但目前的自然语言理解系统仍无法达到这个水平。
基准测试 考虑了五个涵盖各种常识推理类型的数据集。流行的CSQA提出了关于世界的常识问题,涉及复杂的语义,通常需要先前的知识。StrategyQA要求模型推断出多步策略来回答问题。从BIG-bench项目中选择了两个专门的评估集:日期理解(Date Understanding),需要根据给定的背景推断出一个日期;体育理解(Sports Understanding),需要确定与体育相关的句子是合理还是不合理。最后,SayCan数据集涉及将自然语言指令映射到离散集合中的机器人动作序列。图3显示了所有数据集的思维链注释示例。
提示 遵循与前一节相同的实验设置。对于CSQA和StrategyQA,从训练集中随机选择示例,并为它们手动编写了思维链,作为少样本示例使用。BIG-bench的两个任务没有训练集,所以将前十个示例作为评估集中的少样本示例,并在其余的评估集上报告结果。对于SayCan,使用了Ahn等人中使用的训练集中的六个示例,并手动编写了思维链。
结果 图7突出显示了PaLM的这些结果。对于所有任务,增加模型规模改善了标准提示的性能;思维链提示进一步提升了性能,对于PaLM 540B而言改进最大。通过思维链提示,PaLM 540B在与基准相比表现出色,在StrategyQA上超过了先前的最先进水平,在体育理解上超过了一个无辅助的体育爱好者。这些结果表明,思维链提示也可以提高在需要各种常识推理能力的任务上的性能。
5 符号推理
符号推理,对人类而言很简单,但对语言模型来说可能具有挑战性。思维链提示不仅使语言模型能够在标准提示设置下执行具有挑战性的符号推理任务,还有助于在推理时处理比少样本示例中更长的输入。
任务 使用以下两个玩具任务。
-
最后一个字母连接。这个任务要求模型将一个姓名中的单词的最后一个字母连接起来(例如,Amy Brown→yn)。这是一个更具挑战性的版本的首字母连接,语言模型已经可以在没有思维链的情况下执行。通过随机从姓名普查数据(https://namecensus.com/)的前1000个名字和姓氏中连接名字来生成完整的姓名。
-
抛硬币 这个任务要求模型回答当人们抛或不抛硬币后硬币是否仍然是正面朝上(例如,一个硬币是正面朝上。菲比抛硬币。奥斯瓦尔多没有抛硬币。硬币还是正面朝上吗?→不是)。
再次为每个任务手动编写少样本示例的思维链,如图3所示。
结果 PaLM的域内和OOD评估结果如图8所示。对于PaLM 540B,思维链提示导致近乎100%的解决率。需要注意的是,这些域内评估是"玩具任务",因为完美的解决方案结构已经由少样本示例中的思维链提供;模型需要做的就是重复相同的步骤,并在测试时的示例中使用新的符号。然而,小型模型仍然失败-对于这三个任务中的未见符号进行抽象操作的能力只在拥有100B模型参数规模的模型中出现。
至于OOD评估,标准提示在这两个任务中失败。通过思维链提示,语言模型实现了上升的性能曲线。因此,思维链提示有助于语言模型在足够规模的情况下进行超过已见思维链的长度推理。
6 讨论
作者探索了作为激发大语言模型多步推理行为的简单机制的思维链提示。思维链提示极大地提高了算术推理的性能,在不同注释者、示例和语言模型的情况下取得了明显的改进。
思维链推理作为模型规模带来的结果已经成为一个主要的主题。对于许多推理任务,标准提示的性能曲线是平的,而思维链提示导致了显著增长的性能曲线。思维链提示似乎扩展了大型语言模型可以成功执行的任务范围 - 换句话说,强调标准提示只是大型语言模型能力的下限。
尽管思维链模拟了人类推理者的思维过程,但这并不能回答神经网络是否真正在"推理",这是一个尚未解答的问题。其次,尽管在少样本情况下手动增加示例的思维链的成本很低,但这样的注释成本可能对微调来说是禁止的。第三,无法保证正确的推理路径,这可能导致正确和错误的答案;最后,思维链推理只在大型模型规模下出现,这在实际应用中成本较高。
7 相关工作
这项工作受到许多研究领域的启发,第一个相关方向是使用中间步骤来解决推理问题。Ling等人首倡使用自然语言推理来通过一系列中间步骤解决数学应用问题。他们的工作与使用形式语言进行推理的文献形成了鲜明对比。Cobbe等人(2021)扩展了Ling等人(2017)的工作,创建了一个更大的数据集,并使用该数据集对预训练的语言模型进行微调,而不是从头训练模型。在程序合成领域,Nye等人利用语言模型通过首先逐行预测中间计算结果来预测Python程序的最终输出,并展示出他们的逐步预测方法比直接预测最终输出性能更好。
自从Brown等人提出少样本提示以来,有几种通用方法改进了模型的提示能力,例如自动学习提示或给模型提供描述任务的指令。而这些方法改进或增强了提示的输入部分(例如,将指令添加到输入之前)。
8 结论
思维链提示通过允许足够大的模型有效地执行更广泛的推理任务来增强语言模型的推理能力。
A FAQ
A.1 为什么增加模型规模可以改善思维链提示?
发现只有在特定的模型规模下才能可靠地实现成功的思维链推理扩大语言模型的规模已被证明具有改善性能和样本效率的好处,但思维链推理是一种新兴的能力,其成功不能仅通过推断小规模模型的性能来预测,因为对于小于10B参数的大多数模型来说,思维链实际上会降低性能。
为什么模型规模可以改善思维链提示是一个复杂的问题,作者通过错误分析进行了初步尝试以增加对此的理解。该小型分析包括人工阅读PaLM 62B产生的45个错误,并将其分类为语义理解错误(20个错误)、缺少一步错误(18个错误)和其他错误(7个错误)。"其他类别"包括幻觉、重复输出和符号映射错误。
如图9所示,将PaLM的规模扩大到540B参数可以修复所有三个类别中的大部分错误。图10给出了扩大PaLM到540B规模后解决的语义理解错误和缺少一步错误的示例。这个结果似乎与一个假设一致,即随着模型规模的增加,语言模型会获得一系列语义理解和逻辑推理技能。
关于为什么小语言模型失败,还有三个值得注意的观察。第一个观察是,即使是相对简单的符号映射任务,小语言模型也无法胜任。如第5节所示,即使是对于只需要在新样本上使用与少样本示例中给出的相同思维链逻辑结构的符号推理任务,小语言模型仍然失败了。第二个观察是,小语言模型似乎固有地具有较弱的算术能力,正如Brown等人所示,进行简单的算术运算需要足够的模型规模。最后,小语言模型通常无法生成可解析的最终答案,要么是由于重复输出,要么是由于逻辑没有得出最终答案。
A.2 提示工程的作用是什么?
提示工程的一个关键考虑因素是对确切提示的敏感性。大量的研究表明,提示以意想不到的方式影响语言模型。作者创建思维链条注释的一般方式是从训练集中选取八个示例,并将推理过程分解为多个步骤,从而得出最终答案。思维链注释的示例见图3,完整的提示见附录G。为了分析思维链对提示工程的敏感性,针对多个因素进行了鲁棒性实验。
-
不同的注释者。首先分析对三个不同注释者的鲁棒性。尽管性能存在显著的差异,但在算术、常识和符号推理的八个数据集中,思维链相对于基准模型的改进幅度都很大。类似于Cobbe等人中的注释过程,注释者在撰写思维链条注释时没有得到关于如何写作的具体指示,除了简单地写下导致最终答案的逐步推理过程。因此,这些注释是根据每个注释者自己的语言表达风格来撰写的思维链。
-
没有机器学习背景的注释者。GSM8K数据集(方便地提供了一个由众包工作者编写的推理链的训练集,这使我们能够研究是否来自独立来源且没有机器学习背景的推理链仍然有效。因此,从GSM8K中随机抽取了三组包含推理链的八个示例。这些思维链注释在四个算术数据集中的性能也远远优于基准模型,这表明思维链不依赖于特定的注释者组。
-
不同的示例。上述GSM8K不同示例的实验还表明思维链提示适用于不同的示例集。值得注意的是,在所有四个算术数据集上测试了每组示例,这表明示例不一定来自与测试样例相同的数据集分布。
-
示例顺序不同。先前的研究表明,在某些情况下,甚至提示的顺序也很重要-改变少样本示例的排列顺序可以导致GPT-3在SST-2上的准确率从接近随机到接近SOTA。在几乎所有情况下,与提示顺序相关的标准差都相对较小。唯一的例外是硬币抛掷任务,示例顺序的标准差较高,可能是因为分类任务中,连续出现同一类别的示例会影响模型的输出。
-
不同数量的示例。即使少样本示例的数量各不相同,思维链提示的增益通常仍然存在。这在图11中展示了五个数据集。在初步实验中,进一步增加标准提示中的示例数量并没有带来显著的收益。
-
不同的语言模型。另一个有趣的问题是,对于一个模型效果更好的提示是否也适用于其他大型语言模型。在相同的提示下,思维链提示在所有三个模型上都提高了性能。
然而,提示工程仍然很重要。尽管对于算术推理来说,结果相对稳定,但我们要明确提示工程仍然很重要,并且在许多情况下可以显著提高性能。尽管大多数思维链注释的性能优于标准提示,但在许多情况下存在较大的变异性。甚至有些任务需要提示工程才能获得良好的性能。
A.3 思维链提示是否会提高我感兴趣的任务的性能?
虽然从原理上讲,思维链条提示可以适用于任何文本到文本的任务,但它对某些任务比其他任务更有帮助。根据本文的实验,我们的直觉是,当满足以下三个条件时,思维链条提示效果最好:(1)任务具有挑战性,需要多步推理;(2)使用大型语言模型;(3)规模曲线相对平缓。相反,当一个或多个条件不满足时,效果会较小。
这些直觉或许可以从算术推理结果中得到支持。在GSM8K上,PaLM 540B在挑战性的多步问题上获得了最大的性能提升(平缓的规模曲线),符合这些条件。对于只需要一两个步骤的MAWPS子集(SingleOP、SingleEq和AddSub),性能提升很小,因为PaLM 540B的性能已经达到90%以上(并且通常情况下,当性能已经很强时,改进空间较小)。
尽管本文重点关注多步推理任务(算术、常识和符号推理),但思维链条提示原则上可以应用于任何人类使用"思维链条"解决的任务(至少在原理上是如此)。对于这种多样化任务的思维链条提示的实证评估(例如机器翻译等),我们将其留给未来的工作来完成。
G 完整提示
总结
⭐ 作者提出了通过生成一系列中间推理步骤的思维链,可以显著提升大型语言模型在进行复杂推理时的能力,但是仅限于100B以上的大模型。