Chain of Thought Prompting Elicits Reasoning in Large Language Models

Motivation

虽然语言建模方面,NLP模型表现很好,但是在逻辑推理和数值计算领域(称其为第二类任务,system-2 task),即使是目前最大的模型也难以处理某些推理任务,如数学单词问题、符号操作和常识性推理。

本文探讨了语言模型产生一个连贯的思维链的能力——一系列的短句子,模仿一个人在回答一个问题时可能拥有的推理过程。

Introduction

在本文中,我们探索思维链提示(chain of thought prompting)作为一种提高语言模型执行推理任务的能力的方法。直觉是,一个思维链允许语言模型将一个多步骤的问题分解为可以单独解决的中间步骤,思维链提示是简单的,在标准的少镜头prompt不足的情况下,可以在各种推理任务中提高性能。至关重要的是,我们的实验表明,成功的思维链提示是模型规模的一个突发属性——也就是说,思维链提示的好处只有在足够的模型规模(大约100B个参数)才会实现。

Chain of Thought

在解决第二类任务时,要考虑自己的思维过程,比如多步数学单词问题,通常是将问题分解为中间步骤,并在给出最终答案之前解决每个步骤。本文的目标是赋予语言模型产生一个类似的思维链的能力——一系列连贯的短句子,从而得出一个推理问题的答案。作者证明,如果在范例中提供了思维链推理的演示,那么足够大的语言模型可以生成思维链。

作为促进语言模型中推理的一种方法,思维链提示有几个吸引人的特性:

  • 首先,产生一个思想链,原则上,允许模型将多步骤的问题分解为中间步骤,这意味着可以将额外的计算分配给需要更多推理步骤的问题。
  • 第二,生成的思想链提供了一个可解释的窗口模型的行为,表明它如何可能到达一个特定的答案和提供机会调试推理路径出了问题(尽管完全描述模型的计算支持一个答案仍然是一个悬而未决的问题)。
  • 第三,思维链推理可以用于一系列任务,包括数学单词问题、符号操作和常识推理,并且适用于(至少在原则上)适用于人类可以通过语言解决的任何任务。
  • 最后,通过将思维序列链的示例纳入小样本,在足够大的现成的语言模型中,只需将思维序列链的示例,就可以简单地引出思维链推理。

实验表明,在标准的少镜头提示不足的几个数据集上,思维链提示显著提高了这些数据集的性能。

Arithmetic Reasoning

算术推理。

实验设置

  • 数据集
    • 6个数据集:(1) SingleOp (Roy et al., 2015), (2) SingleE (Koncel-Kedziorski et al., 2015), (3) AddSub (Hosseini et al., 2014), (4)ASDiv (Miao et al., 2020), (5) MultiArith (Roy & Roth, 2015), and (6) GSM8K
  • standard prompting。
    • 作为一种基线方法,我们考虑了由Brown等人(2020)推广的标准少镜头提示,在该模型中,在输出测试时间示例的预测之前,给出输入-输出对的上下文范例。样本在被输入模型之前被格式化为问题和答案,模型直接给出答案。
  • Chain of thought prompting
    • proposed model,在少镜头提示中增加每个范例,并考虑一个相关的答案。

为了研究这种形式的思维链提示是否能够成功地在广泛的数学单词问题中引出成功的推理,我们对所有6个数据集使用了这一组包含8个思维链样本的单一集。对于每个实验,我们报告了5个随机种子的平均结果,其中每个种子都有不同的随机打乱的样本顺序。

实验结果

  • 添加思维链提示只会略微提高较大模型的准确性。
  • 对于两个更具挑战性的数据集(MultiArith and GSM8K),思维提示链的影响变得显著。
  • 对于MultiArith and GSM8K,增加标准提示的模型规模并不能提高这些数据集的性能——缩放曲线大多是平坦的。然而,当添加思维链提示时,模型现在能够实现随着模型规模而提高的性能。值得注意的是,只有在∼100B参数的规模下,思维链提示才比标准提示更好;小规模的模型产生了流畅但不合逻辑的思维链,导致性能低于标准提示。
  • 使用外部计算器是一种改进思想提示链的补充方法。我们使用Python程序作为计算器来评估生成的思想链中的所有方程;当一个思想链中存在多个方程时,我们通过字符串匹配将外部计算器的结果从一个方程传播到下面的方程。我们发现思维链prompting在GSM8K上的性能从14.8%提高到19.5%。

消融实验

探究问题:

  • 为什么chain of thought prompting 有用?
  • 能否通过类似的其他prompt方法提高?

如下三个设置:

  • Equation Only。
    • 在给出答案之前,系统会提示该模型只输出一个数学方程。
    • 虽然仅方程提示对缩放有帮助的四个简单数据集有帮助(结果如附录中的表11所示),但对于两个具有平坦缩放曲线的具有挑战性的数据集,仅方程提示没有帮助
    • 这个结果表明,这些数据集中的问题的语义太具有挑战性了,不能直接转化为一个没有中间推理步骤提供的思维链的方程。
  • Variable Compute Only。
    • 为了将变量计算的影响与思维推理链分离开来,在该配置中,提示模型只输出一系列点(…),数量等于解决问题所需的字符数。
    • 结果与baseline基本相同
    • 模型自身的变量计算并不是chain of thought prompting成功的原因,通过自然语言表达中间步骤似乎有有意义的效用
  • Chain of thought after answer
    • 我们测试了另一种配置,其中思维提示链只在答案之后给出,隔离了模型是否实际上依赖于产生的思维链来给出最终的答案。
    • 表现与baseline基本相同。
    • 体现在思维链中的顺序推理是有用的,而不仅仅是激活知识的原因。

Robustness of Chain of Thought

通过更换标注chain of thought prompting的标注者,和随机产生三组不同的8 exemplars组合,作者发现效果都比标准少样本效果要好。

Symbolic Reasoning

符号推理

符号推理任务

  • Last letter concatenation
  • Reverse List
  • Coin flip

作者将每个任务的数据集分为一个in domain 和两个out-of-domain,其中out-of-domain比in-domain在推理步骤上更多。

实验结果

  • 小模型仍然fail
  • 大模型(137B)在三个任务上表现都不错
posted @ 2022-04-12 10:57  TABball  阅读(2850)  评论(0编辑  收藏  举报