arXiv | https://arxiv.org/abs/2201.11903
摘要:
我们探讨了如何生成思维链(一系列中间推理步骤)显著提高大型语言模型执行复杂推理的能力。在三个大型语言模型上的实验表明,思维链提示提高了一系列算术、常识和符号推理任务的性能。例如,在GSM8K的数学单词问题基准测试中,仅使用八个思维链示例就可以实现最先进的精度,甚至超过了经过微调的带有验证器的GPT-3。
一、引言
NLP领域最近被语言模型彻底改变了。提高语言模型的规模已被证明可以带来一系列好处,例如提高性能和样本效率。然而,单靠提高模型大小还不足以在算术、常识和符号推理等具有挑战性的任务上实现高性能。以往的方法都有关键的局限性:
-
**rationale-augmented training and finetuning:**创建大量高质量的 rationale(一道题的解释或理由)代价很高,比普通机器学习中使用的简单输入输出对要复杂得多。
-
**few-shot prompting:**在需要推理能力的任务上表现不佳,并且通常不会随着语言模型规模的增加而大幅提高。
本文结合两种理念的优势,提出了思维链提示,即一系列导致最终输出的中间自然语言推理步骤,包括三元组: ⟨ input , chain of thought , output ⟩ \langle \text{input}, \text{chain of thought}, \text{output} \rangle ⟨input,chain of thought,output⟩。
二、思维链提示
在解决一个复杂的推理任务,比如一个多步骤的数学单词问题时,典型的做法是将问题分解为中间步骤,并在给出最终答案之前解决每个步骤:“After Jane gives 2 flowers to her mom she has 10 …… then after she gives 3 to her dad she will have 7 …… so the answer is 7”。本文的目标是赋予语言模型产生类似思维链的能力,即一系列连贯的中间推理步骤,推理出问题的最终答案。如果在示例中为 few-shot prompting 提供了思维链推理的演示,那么足够大的语言模型可以生成思维链。
思维链提示作为一种促进语言模型推理的方法有几个特性:
-
思维链原则上允许模型将多步骤问题分解为中间步骤,这意味着可以将额外的计算分配给需要更多推理步骤的问题。
-
思想链为模型的行为提供了一个可解释的窗口,提示它是如何得出特定答案的,并在当推理路径有误时,提供了调试的机会。
-
思维链推理可以用于数学单词问题、常识推理和符号操作等任务,并且可能(至少在原则上)适用于人类可以通过语言解决的任何任务。
-
思维链推理可以很容易地在足够大的现成语言模型中引出,只需将思维链序列的示例增加到 few-shot prompting 的示例中。
三、算术推理 Arithmetic Reasoning
虽然对人类来说很简单,但算术推理是语言模型经常难以完成的任务。当思维链应用于540亿参数的语言模型时,在多个任务上表现与专门针对任务进行微调的模型相媲美,甚至在具有挑战性的 GSM8K 基准测试上达到了最新水平。
3.1 实验设置
基准测试:
**标准提示:**标准 few-shot prompting,在输出预测前给出示例的输入-输出对(a language model is given in-context exemplars of input-output pairs before outputting a prediction for a test-time example)。
思维链提示:
- 使用表20中的8个思维链范例来进行除了AQuA外的基准测试,使用表21中的4个思维链范例来进行AQuA的基准测试。
大语言模型:
- **GPT-3:**text- data -001、text-babbage-001、text-curie-001、text- davincii -002,对应于350M、1.3B、6.7B和175B参数的InstructGPT模型。
- **LaMDA:**422M、2B、8B、68B和137B。
- **PaLM:**8B、62B和540B。
- UL2 20B
- **Codex:**code-davinci-002
3.2 实验结果
- **思维链提示是一种模型尺度的涌现能力。**即思维链提示不会对小模型性能产生积极影响,只有在与参数为~ 100B的模型一起使用时才会产生性能提升。较小规模的模型产生流畅但不合逻辑的思维链,导致性能低于标准提示。
- **思维链提示对于更复杂的问题有更大的性能提升。**对于GSM8K,最大的GPT和PaLM模型的性能增加了一倍以上。对于 MAWPS: SingleOp 性能改进要么是负的,要么是非常小的。
- 通过GPT-3 175B和PaLM 540B进行的思维链提示优于之前最先进的方法,即通过在标记的训练数据集上微调特定于任务的模型。
3.3 样本分析
从通过LaMDA 137B进行的思维链应用于GSM8K中手动筛选了50个正确答案样本和50个错误答案样本:
- **50个正确答案样本:**1个通过错误的推理得出了正确的答案,5个在保持连贯和可理解的逻辑时存在小缺陷(1个有未指定的语句,1个有不相关但正确的陈述,2个逻辑正确但省略了具体步骤,1个颠倒了语义)
- **50个错误答案样本:**46%的思维链几乎是正确的,除了小错误(计算错误,符号映射错误,一个推理步骤的缺失),另外54%的思维链在语义理解或连贯方面有重大错误。
- 仅计算错误 8%:当我们添加一个Python程序作为外部计算器时,LaMDA 137B GSM8K的思维链提示解决率从14.3%上升到17.3%。
- **符号映射错误 16%:**当思维链除了数字符号之外是正确的,并且它可以通过只修改方程而不修改单词而完全正确时。
- **遗漏一步错误 22%:**缺少了一个步骤,即可以通过添加模型错过的额外推理步骤来重写为正确的。
- 语义理解错误 27个:
- **不连贯 8个:**在生成的思维链中,有些语句没有遵循先前的语句或违反了基本的世界知识。
- 仅计算错误 8%:当我们添加一个Python程序作为外部计算器时,LaMDA 137B GSM8K的思维链提示解决率从14.3%上升到17.3%。
3.4 模型规模与错误修复
通过对增加模型规模可以修复错误,将PaLM从62B扩展到540B修复了大部分错误:
3.5 消融实验
- **仅输出方程:**只有方程提示对GSM8K没有多大帮助,这意味着GSM8K中问题的语义太具有挑战性,无法在没有思维链中的自然语言推理步骤的情况下直接转换为方程。然而,对于一步或两步问题的数据集,我们发现只有方程提示确实提高了性能,因为方程可以很容易地从问题中推导出来。
- **仅变量计算:**表现与基线大致相同,这表明变量计算本身并不是思维链提示成功的原因,通过自然语言表达中间步骤似乎是有用的。
- **回答后再给出思维链(思维链提示仅在答案之后给出,从而隔离模型是否实际上依赖于生成的思想链来给出最终答案):**表现与基线大致相同,这表明在思维链中体现的顺序推理在激活知识之外的原因上是有用的。
3.6 稳健性检验
- 注解者B和C编写的思维链
- 注解者A编写的更简洁版本
尽管在使用基于范例的提示时,不同的思维链注释之间存在差异,所有的思维链提示都大大优于标准基线。这一结果表明,思维链的成功运用并不取决于特定的语言风格。
- 从GSM8K训练集随机抽取的三组8个示例进行了实验,与我们手工编写的示例相比的执行情况,也大大优于标准提示。
四、常识推理 Commonsense Reasoning
虽然思维链特别适用于数学单词问题,但思维链基于语言的性质实际上使其适用于广泛的常识推理问题,这些问题涉及在一般背景知识的假设下对物理和人类互动进行推理。常识推理是与世界互动的关键,目前的自然语言理解系统仍然无法实现。
4.1 实验设置
基准测试:
- **CSQA:**一些关于世界的常识性问题,这些问题涉及复杂的语义,通常需要先验知识
- **StrategyQA:**要求模型推断多跳策略来回答问题。
- BIG-bench:日期理解,包括从给定的上下文中推断日期;体育理解,包括确定与体育相关的句子是可信的还是不可信的。
- **SayCan:**涉及将自然语言指令映射到来自离散集合的机器人动作序列。
思维链提示:
- 对于CSQA和StrategyQA,我们从训练集中随机选择示例,并手动组成思维链供它们用作 few-shot 样本。两个BIG-bench任务没有训练集,所以我们选择前10个例子作为评估集中的样本作为 few-shot 样本。对于SayCan,我们使用了原文使用的训练集中的六个示例。
4.2 实验结果
五、符号推理 Symbolic Reasoning
我们最后的实验评估考虑了符号推理,这对人类来说很简单,但对语言模型来说可能具有挑战性。我们表明,思维链提示不仅使语言模型能够执行在标准提示设置中具有挑战性的符号推理任务,而且还有助于长度泛化到比在少数示例中看到的更长的推理时间输入。
5.1 实验设置
任务:
- **最后一个字母连接 Last letter concatenation:**这个任务要求模型连接名字中单词的最后一个字母(“Amy Brown” → “yn”)。这是首字母连接的一个更具挑战性的版本,语言模型已经可以在没有思维链的情况下执行我们通过从姓名普查数据中随机连接前1000个姓和名来生成全名。
- **抛硬币 Coin flip:**这个任务要求模型回答在人们抛硬币或不抛硬币后,硬币是否仍然是正面朝上的(“硬币是正面朝上的,菲比抛硬币,奥斯瓦尔多不抛硬币,硬币还是正面朝上吗” → “不”)
思维链提示:
- 对于每个任务,我们考虑一个域内测试集,其中示例具有与 few-shot 样本相同的步骤数,以及一个域外(OOD)测试集,其中评估样本比示例中的步骤更多。
- 对于最后一个字母连接任务,模型只看到包含2个单词的示例,然后对包含3个和4个单词的执行测试,对抛硬币任务中可能被抛的次数做同样的处理。
5.2 实验结果
mg-gTuNmIve-1739195670221)]
[外链图片转存中…(img-steeow6C-1739195670221)]
5.2 实验结果
[外链图片转存中…(img-Puirl4iM-1739195670221)]
[外链图片转存中…(img-bkQuA40W-1739195670221)]