Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
# 思维链提示在大型语言模型中引发推理
# 摘要
我们探索了如何生成一个思想链 -- 一系列中间推理步骤 -- 显著提高大型语言模型执行复杂推理的能力。特别地,我们展示了这种推理能力是如何在足够大的语言模型中通过一种简单的方法 -- 思维链提示 -- 自然产生的,其中提供了几个思维链演示作为提示的例子。
在三个大型语言模型上的实验表明,在一系列算术、常识和符号推理任务上,思维链提示提高了性能。经验上的收益可能是惊人的。例如,仅用 8 个思维链示例就提示一个 PaLM 540B,在数学应用题的 GSM8K 基准上达到了最先进的精度,甚至超过了用验证器微调的 GPT-3。
图 1:思想链提示使大型语言模型能够处理复杂的算术、常识和符号推理任务。突出了思维链推理过程。
# 1. Introduction 引言
NLP 领域最近被语言模型 (Peters 等,2018;Devlin 等,2019;Brown 等,2020) 所革命化。扩大语言模型的规模已经被证明可以带来一系列的好处,例如提高性能和样本效率 (Kaplan 等,2020;Brown 等,2020)。然而,在诸如算术、常识和符号推理 (Rae 等,2021) 等具有挑战性的任务上,仅仅扩大模型大小并不足以实现高性能。
图 2:在 GSM8K 数学应用题测试集上,PaLM 540B 使用了链式思维提示以达到最新的性能。精细调整后的 GPT-3 和先验最优来自 Cobbe 等 (2021)。
这项工作探索了在两种思想的激励下,如何通过简单的方法解锁大型语言模型的推理能力。首先,算术推理技术可以从生成导致最终答案的自然语言理由中受益。除了使用形式语言代替自然语言 (罗伊和罗斯,2015; 蒋殿春、陈斌开,2019;Amini 等,2019;Chen 等,2019) 的神经符号方法外,先前的工作已经赋予模型通过从头训练 (Ling 等,2017) 或微调预训练模型 (Cobbe 等,2021) 生成自然语言中间步骤的能力。其次,大型语言模型提供了通过提示进行语境内小样本学习的令人兴奋的前景。也就是说,不是为每个新任务微调一个单独的语言模型检查点,而是简单地用几个输入 - 输出示例来 "提示" 模型。值得注意的是,这对于一系列简单的问答任务 (布朗等,2020) 来说是成功的。
然而,上述两种思路都存在关键的局限性。对于原理增强训练和微调方法,创建大量高质量的原理是昂贵的,这比普通机器学习中使用的简单输入 - 输出对要复杂得多。对于 Brown et al.(2020) 中使用的传统的小样本提示方法,在需要推理能力的任务上效果不佳,且往往不会随着语言模型规模 (Rae et al, 2021) 的增加而有实质性的提升。在本文中,我们结合了这两种思想的长处,避免了它们的局限性。具体来说,给定一个由三元组〈输入,思维链,输出〉组成的提示,我们探讨语言模型对推理任务进行小样本提示的能力。思维链是导致最终输出的一系列中间自然语言推理步骤,我们将这种方式称为思维链提示。示例提示如图 1 所示。
我们对算术、常识和符号推理基准进行了实证评估,发现思维链提示优于标准提示,有时甚至达到惊人的程度。图 2 展示了这样一个结果 -- 在数学应用题 (Cobbe et al, 2021) 的 GSM8K 测试集上,使用 PaLM 540B 的思维链提示大大优于标准提示,取得了新的性能。仅提示的方法很重要,因为它不需要大型的训练数据集,而且单个模型检查点可以执行许多任务而不失一般性。这项工作强调了如何通过几个关于任务 ( c.f. 通过一个大型的训练数据集自动学习输入和输出的模式) 的自然语言数据的例子来学习大型语言模型。
# 2. Chain-of-Thought Prompting 思维链提示
在解决复杂的推理任务如多步数学应用题时,考虑自己的思维过程。在给出最终答案之前,将问题分解成中间步骤并逐一解决是典型的做法:"简给妈妈 2 朵花后,她有 10 朵... 给爸爸 3 朵花后,她有 7 朵... 所以答案是 7"。本文的目标是赋予语言模型生成类似思想链的能力 -- 一系列连贯的中间推理步骤,从而得出问题的最终答案。我们将证明,足够大的语言模型可以产生思维链,如果在示例中提供思维链推理的演示,以进行少量的提示。
图 1 展示了一个模型的例子,它产生了一个解决数学应用题的思想链,否则它就会变得不正确。这种情况下的思维链类似于一个解决方案,可以这么解释,但我们仍然选择称之为思维链,以更好地捕捉这样的想法,即它模仿了一个逐步的思维过程来得出答案 (此外,解决方案 / 解释通常在最终答案之后 (Narang et al, 2020 ; Wiegreffe et al, 2022 ; 兰皮宁 et al, 2022))。
作为一种促进语言模型中推理的方法,思想链提示具有几个吸引人的特性。
-
首先,原则上,链式思维允许模型将多步问题分解为中间步骤,这意味着额外的计算可以分配给需要更多推理步骤的问题。
-
其次,一连串的思想为模型的行为提供了一个可解释的窗口,表明它可能是如何到达一个特定的答案,并提供机会来调试推理路径出错的地方。
-
第三,思维链推理可以用于数学应用题、常识推理、符号操作等任务,对于人类可以通过语言解决的任何任务都具有潜在的适用性。
-
最后,在足够大的现成语言模型中,只需将思维链序列的例子放入少量提示的例子中,就可以很容易地引出思维链推理。
在实证实验中,我们将观察思维链提示对算术推理 (第 3 节)、常识推理 (第 4 节) 和符号推理 (第 5 节) 的效用。
# 3. Arithmetic Reasoning 算术推理
我们首先考虑图 1 形式的数学应用题,它衡量语言模型的算术推理能力。虽然对于人类来说很简单,但是算术推理是语言模型经常要面对的任务。令人惊讶的是,当与 540B 参数语言模型一起使用时,链式提示在多个任务上表现出与特定任务微调模型相当的性能,甚至在具有挑战性的 GSM8K 基准程序 (Cobbe et al, 2021) 上达到了新的水平。
# 3.1 实验设置
我们在多个基准上探索了不同语言模型的思维链提示。
基准 我们考虑以下五个数学应用题基准:(1) 数学应用题 GSM8K 基准题 ( Cobbe 等人,2021 年),( 2 ) 变结构数学应用题 SVAMP 数据集 ( Patel 等人,2021 年),( 3 ) 不同类型数学应用题 ASDiv 数据集 ( Miao 等人,2020 年),( 4 ) 代数应用题 AQuA 数据集,( 5 ) MAWPS 基准题 ( Koncel - Kedziorski 等人,2016 年)。附录表 12 给出了示例问题。
标准提示 对于基线,我们考虑标准的小样本提示,由 Brown et al (2020) 推广,其中一个语言模型在输出一个测试时间示例的预测之前给出了输入 - 输出对的语境范例。范例被格式化为问题和答案。模型直接给出答案,如图 1 (左) 所示。
** 思想链的提示 ** 我们提出的方法是在少量提示的情况下,以一个关联答案的思路链来增加每个示例,如图 1 (右) 所示。由于大多数数据集仅有一个评估片段,我们手工组成了一组带有提示思想链的 8 个小样本示例 - 图 1 (右) 显示了一个思想链示例,全集示例在附录表 20 中给出。(这些特殊的例子没有经过及时的工程;稳健性研究见 3.4 节和附录 A.2。) 为了考察这种形式的思维链提示能否成功地在一系列数学应用题中引发成功的推理,我们使用了这套 8 个思维链示例,用于除 AQuA 以外的所有基准测试,这是多项选择,而不是自由反应。对于 AQuA,我们从训练集中使用了 4 个示例和解决方案,如附录表 21 所示。
语言模型。我们评估了 5 个大型语言模型。第一种是 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)。第二个是 La MDA (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 et al , 2022b) 的一种涌现能力。也就是说,对于较小的模型,思维链提示并不会对性能产生积极影响,只有在使用了~100B 参数的模型时才会产生性能增益。我们定性地发现,较小规模的模型产生了流畅但不合逻辑的思维链,导致了比标准提示更低的性能。
第二,对于更复杂的问题,思维链提示具有更大的绩效增益。例如,对于 GSM8K (基线性能最低的数据集),最大的 GPT 和 PaLM 模型的性能提高了一倍以上。另一方面,对于 MAWPS 最简单的子集 SingleOp (仅需一个步骤即可解决),性能改进要么是负面的,要么是很小的 (见附录表 3)。
第三,通过 GPT - 3 175B 和 PaLM 540B 的思想链提示优于现有技术,这通常在标记的训练数据集上微调特定任务的模型。图 4 展示了 PaLM 540B 在 GSM8K、SVAMP 和 MAWPS (虽然注意到标准提示对于 SVAMP 已经通过了优先选择) 上如何利用链式提示实现新的技术状态。在另外两个数据集上,AQuA 和 ASDiv,具有链式思维提示的 PaLM 达到了最先进的 (附录表 2) 的 2% 以内。为了更好地理解 "思维链提示" 为什么起作用,我们手工检查了 La MDA 137B 为 GSM8K 制作的模型生成的 "思维链"。在模型返回正确最终答案的 50 个随机例子中,除了 2 个巧合地得到正确答案 (见附录 D.1 , 表 8 为正确的模型生成思想链的例子) 之外,所有生成的思维链在逻辑上和数学上都是正确的。我们还随机检查了 50 个随机样本,其中模型给出了错误的答案。这一分析的总结是,除去 (计算器错误,符号映射错误,或者一个推理步骤缺失) 的微小错误,46% 的思维链是几乎正确的,另外 54% 的思维链在语义上发生了重大错误。为了观察为什么缩放可以提高思维链推理能力,我们对 PaLM 62B 产生的错误进行了类似的分析,以及这些错误是否通过缩放到 PaLM 540B 来修复。总结起来,将 PaLM 缩放到 540B 修正了 62B 模型 (见附录 A.1) 中一步法缺失和语义理解错误的很大一部分。
# 3.3 消融研究
使用思想链提示的观察到的好处提出了一个自然的问题,即是否可以通过其他类型的提示来赋予相同的性能改进。图 5 显示了下面描述的三种不同思路的消融研究。
仅有方程 思维链提示可能有帮助的一个原因是它产生了要评估的数学方程,因此我们测试了一个变式,即在给出答案之前,提示模型只输出一个数学方程。图 5 显示,仅有提示的公式对于 GSM8K 来说帮助不大,这暗示了 GSM8K 中问题的语义太具有挑战性,无法直接转化为公式,而不需要思路链中的自然语言推理步骤。然而,对于一步法或两步法问题的数据集,我们发现只提示方程确实可以提高性能,因为方程可以很容易地从问题 (见附录表 6) 推导出来。
仅变量计算 另一个直觉是,思维链允许模型在更难的问题上花费更多的计算 (即中间 token)。为了将变量计算的影响从思维链推理中分离出来,我们测试了一个配置,在这个配置中,模型被提示输出一个仅有的点序列 (...),等于解决问题所需的方程中的字符数。这一变体的表现与基线大致相同,说明变量计算本身并不是思维链提示成功的原因,通过自然语言表达中间步骤似乎有效用。
回答之后的思路链 思维链提示的另一个潜在好处可能是,这种提示可以让模型更好地获取预训练过程中获得的相关知识。因此,我们测试了一个备选配置,其中思想链提示仅在答案后给出,隔离了模型是否实际依赖于产生的思想链给出最终答案。这个变体的表现与基线大致相同,这表明思想链中体现的顺序推理对于不仅仅是激活知识的原因是有用的。
图 5. 为 La MDA 137B 和 Pa LM 540B 对不同提示变化的消融研究。其他数据集的结果见附录表 6 和表 7。
# 3.4 思维链的健壮性
对样例的敏感性是提示方法的一个重要考虑因素,例如,改变少样本样例的排列可以使 GPT-3 在 SST-2 上的准确率从近机会 (54.3 %) 到近状态 (93.4 %) (Zhao et 等,2021) 不等。在这最后一小节中,我们对不同注释者撰写的思想链进行了稳健性评估。除了上述使用注释者 A 撰写的思维链的结果外,本文的另外两位合著者 (注释者 B 和 C) 也独立为同一篇少量的例证 (如附录 H 所示) 撰写了思维链。注释者 A 还遵循 Cobbe 等 ( 2021) 给出的解的风格,写出了比原文更简洁的另一条思路链。
图 6 为 LaMDA 137B 在 GSM8K 和 MAWPS (其他数据集的消融结果见附录表 6 / 表 7) 上的结果。尽管不同的思维链注释之间存在差异,但正如使用样例提示 ( Le Scao 和 Rush , 2021 年;Reynolds 和 McDonell, 2021 年;Zhao 等人,2021 年) 时所预期的那样,所有的思维链提示都比标准基线有很大的提升。这一结果表明,思维链的成功使用并不依赖于特定的语言风格。
图 6:思维链提示对不同提示样例有差异 (如预期),但对不同注释者和不同示例都优于标准提示。
为了证实成功的思维链提示对其他组样例同样有效,我们还从 GSM8K 训练集中随机抽取了 3 组共 8 个样例进行实验,独立来源 (在这个数据集中的例子已经包括了像思想链一样的推理步骤)。图 6 显示这些提示与我们手工编写的样例表现相当,也明显优于标准提示.
除了对注释者、独立编写的思维链、不同的样例和不同的语言模型具有鲁棒性外,我们还发现,算术推理的思维链提示对不同的样例顺序和不同数量的样例 (见附录 A.2) 具有鲁棒性。
# 4. Commonsense Reasoning 常识推理
虽然思维链特别适用于数学应用题,但思维链基于语言的性质实际上使其适用于广泛的一类常识性推理问题,涉及在一般背景知识的假设下对物理和人类互动的推理。常识推理是与世界交互的关键,目前的自然语言理解系统 (Talmor 等,2021) 还无法实现。
基准 我们考虑了五个涵盖不同常识推理类型的数据集。流行的 CSQA (Talmor 等,2019) 提出了关于世界的常识性问题,涉及复杂的语义,往往需要先验知识。StrategyQA ( Geva 等,2021) 需要模型推断多跳策略来回答问题。我们从 BIG - bench 工作 ( BIG-bench 协作,2021) 中选择了两个专门的评估集:日期理解 ( Date Understanding ) 和体育理解 ( Sports Understanding ),其中 Date Understanding 涉及从给定的上下文中推断日期,Sports Understanding 涉及判断与体育相关的句子是否合理或不合理。最后,Say Can 数据集 ( Ahn 等,2022) 涉及将自然语言指令从离散集合映射到机器人动作序列。图 3 展示了所有数据集的思想链标注示例。
提示 我们遵循与上一部分相同的实验设置。对于 CSQA 和 StrategyQA,我们从训练集中随机选择示例,并为它们手工组成思路链,以使用少量示例。两个 BIG-bench 任务没有训练集,因此我们选择前十个示例作为评估集中的示例,作为少样本示例,并在剩余的评估集中报告编号。对于 SayCan,我们使用了 Ahn 等人 (2022) 中使用的训练集的六个例子,并手工组成了思维链。
结果 图 7 突出了 PaLM (表 4 给出了 LaMDA、GPT-3 和不同模式尺度的完整结果) 的这些结果。对于所有任务,模型规模的扩大都提高了标准提示的性能;"思维链" 的推动带来了进一步的收益,PaLM 540B 的改进幅度最大。在 "思维链" 的推动下,PaLM 540B 取得了相对于基线的强劲表现,在 Strategy QA ( 75.6 % 比 69.4 %) 上超过了现有技术,在运动理解 ( 95.4 % 比 84 %) 上超过了一个独立的运动爱好者。这些结果表明,在需要一系列常识推理能力的任务 (虽然注意到在 CSQA 上增益是最小的) 上,思维链提示也能提高绩效。
图 7:思维链提示也提高了语言模型的常识推理能力。这里展示的语言模型是 PaLM。先前最好的数字来自 CSQA (Talmor 等,2019) 和 StrategyQA ( Geva 等,2021) (仅限单模型,截至 2022 年 5 月 5 日) 的排行榜。使用不同大小的 La MDA、GPT - 3 和 Pa LM 的附加结果如表 4 所示。
# 5. Symbolic Reasoning 符号推理
我们最终的实验评估考虑了符号推理,这对于人类来说很简单,但对于语言模型来说却具有潜在的挑战性。我们表明,思维链提示不仅使语言模型能够执行在标准提示设置中具有挑战性的符号推理任务,而且还能促进长度泛化到比少样本示例中更长的推理时间输入。
任务。我们使用以下两个玩具任务:
• 最后一个字母的拼接 该任务要求模型拼接一个名字 (比如 'Amy Brown'→'yn') 中单词的最后一个字母。这是一个更具挑战性的首字母拼接版本,语言模型已经可以在没有思维链的情况下执行。我们通过从名字普查数据 ( https://namecensus.com/).
• 硬币翻转 该任务要求模型回答人们翻转或不翻转硬币后硬币是否人头面朝上 (例如,' 一枚硬币人头面朝上。菲比翻转硬币。奥斯瓦尔多不抛硬币。硬币还在是人头面朝上吗?'→' 不 ')。
由于这些符号推理任务的构造是定义良好的,对于每个任务,我们考虑一个域内测试集,其中示例具有与训练 / 少样本示例相同的步数,以及一个域外测试集,其中评估示例具有比示例示例更多的步数。对于末尾字母拼接,模型只看到两个单词的人名示例,然后对 3 个和 4 个单词的人名进行末尾字母拼接。4 对于硬币翻转任务中的潜在翻转次数,我们也做了同样的处理。我们的实验设置使用与前两部分相同的方法和模型。我们再次手工合成了每个任务的小样本样本的思维链,如图 3 所示。
结果 PaLM 的域内和 OOD 评估结果如图 8 所示,LaMDA 的结果如附录表 5 所示。在 PaLM 540B 中,思维链提示导致几乎 100% 的解决率 (值得注意的是,标准提示已经解决了硬币翻转与 PaLM 540 , 虽然不是为 LaMDA 137B)。需要注意的是,这些领域内的评估是 "玩具任务",因为在少量的示例中,完美的解决方案结构已经由思维链提供;所有模型所要做的就是用测试时实例中的新符号重复相同的步骤。然而,小模型仍然失效 -- 对这三个任务中看不见的符号进行抽象操作的能力只出现在 100B 模型参数的规模上。
对于 OOD 评估,两种任务的标准提示都失败了。通过思想链的提示,语言模型实现了向上缩放曲线 (尽管性能低于域内设置)。因此,对于足够规模的语言模型,思想链的提示促进了超出所见思想链的长度泛化。
# 6. Discussion 讨论
我们探索了思维链提示作为一种简单的机制,用于在大型语言模型中诱导多步推理行为。我们首先看到,在算术推理方面,思维链的提示大大地提高了性能,产生了比消融更强大的改进,并对不同的注释器、范例和语言模型具有鲁棒性 (第 3 节)。接下来,关于常识推理的实验强调了思维链推理的语言学性质如何使其普遍适用 (第 4 节)。最后,我们证明了对于符号推理,思想链提示有助于 OOD 泛化到更长的序列长度 (第 5 节)。在所有的实验中,通过提示一个现成的语言模型来简单地引出思维链推理。在本文的写作过程中没有对语言模型进行微调。
作为模型规模结果的思想链推理的出现一直是流行的主题 (Wei 等,2022b)。对于许多标准提示具有平坦缩放曲线的推理任务,思想链提示导致缩放曲线急剧增加。思想链提示似乎扩展了大型语言模型能够成功执行的任务集 -- 换句话说,我们的工作强调标准提示只提供了大型语言模型能力的一个下界。这种观察可能会提出比它所回答的更多的问题 -- 比如,随着模型规模的进一步增加,我们还能期望推理能力提高多少?其他的提示方法可能会扩大语言模型所能解决的任务范围?
至于局限性,我们首先限定,虽然思维链模仿了人类推理者的思维过程,但这并不能回答神经网络是否真的是 "推理",我们将其作为一个开放性问题留下。其次,尽管在小样本的情况下,人工增加带有思维链的样本的成本是最小的,但是这种注释成本对于微调 (虽然这可以通过合成数据生成或零样本泛化来克服) 来说可能是高昂的。第三,没有正确推理路径的保证,既可能导致正确答案,也可能导致错误答案;改进语言模型的事实生成是未来工作 (Rashkin 等,2021 ; Ye 和 Durrett, 2022 ; Wiegreffe 等,2022) 的开放方向。最后,仅在大模型规模下的思想链推理的出现使得服务于现实世界的应用代价高昂;进一步的研究可以探索如何在更小的模型中进行推理。
# 7. Related Work 相关工作
这项工作受到许多研究领域的启发,我们在一个扩展的相关工作部分 (附录 C) 中进行了详细介绍。在这里我们描述两个方向和相关的论文,也许是最相关的。
第一个相关的方向是使用中间步骤来解决推理问题。Ling 等人 (2017) 开创性地提出了通过一系列中间步骤使用自然语言理据来解决数学应用题的思想。他们的工作与使用形式语言对 (Roy 等,2015 ; 蒋殿春、陈斌开,2019;Amini 等,2019;Chen 等,2019) 进行推理的文献形成了鲜明对比。Cobbe 等 (2021) 对 Ling 等 (2017) 进行了扩展,创建了一个更大的数据集,并使用它来微调预训练的语言模型,而不是从头开始训练模型。在程序合成领域,Nye 等人 ( 2021 ) 利用语言模型,通过对中间计算结果的逐行预测来预测 Python 程序的最终输出,并表明他们的分步预测方法比直接预测最终输出效果更好。
当然,本文也与最近大量有关激励的工作密切相关。自 Brown 等 (2020) 提出的小样本提示推广以来,几种通用的方法提高了模型的提示能力,如自动学习提示 (李斯特等,2021) 或给出描述任务 (Wei 等,2022a ; Sanh 等,2022 ; Ouyang 等,2022) 的模型说明。虽然这些方法改进或增加了提示 (例如,预先附加到输入的指令) 的输入部分,但我们的工作采取了用一个思路链来增加语言模型输出的正交方向。
# 8. Conclusions 结论
我们探索了思想链提示作为一种简单且广泛适用的增强语言模型推理的方法。通过对算术、符号和常识推理的实验,我们发现思想链推理是模型规模的一个涌现性质,它允许足够大的语言模型执行否则具有平坦缩放曲线的推理任务。拓宽语言模型所能执行的推理任务的范围,有望启发基于语言的推理方法的进一步工作。