大语言模型中的思维链提示引发推理
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
摘要
我们探讨了生成“思维链”(chain of thought)——即一系列中间推理步骤——如何显著提高大语言模型执行复杂推理的能力。特别是,我们展示了这种推理能力如何通过一种称为“思维链提示”(chain-of-thought prompting)的简单方法,在大规模语言模型中自然涌现,即在提示中提供少量思维链演示作为示例。
在三个大型语言模型上的实验表明,思维链提示提高了模型在算术、常识和符号推理等一系列任务上的表现。其经验性增益可能非常显著。例如,仅使用八个思维链示例来提示 PaLM 540B,就能在 GSM8K 数学应用题基准测试中达到最先进的准确率,甚至超过了带有验证器的微调版 GPT-3。
1. 引言
自然语言处理(NLP)领域最近被语言模型彻底改变了(Peters 等人,2018;Devlin 等人,2019;Brown 等人,2020 等)。事实证明,扩大语言模型的规模可以带来一系列好处,例如提高性能和样本效率(Kaplan 等人,2020;Brown 等人,2020 等)。然而,仅靠扩大模型规模并不能足以在算术、常识和符号推理等具有挑战性的任务上实现高性能(Rae 等人,2021)。
本研究探讨了如何通过一种由两个想法驱动的简单方法来解锁大语言模型的推理能力。首先,算术推理技术可以受益于生成导致最终答案的自然语言推理过程(rationales)。先前的工作通过从头开始训练(Ling 等人,2017)或微调预训练模型(Cobbe 等人,2021)赋予了模型生成自然语言中间步骤的能力,此外还有使用形式语言而非自然语言的神经符号方法(Roy 和 Roth,2015;Chiang 和 Chen,2019;Amini 等人,2019;Chen 等人,2019)。其次,大语言模型提供了通过提示(prompting)进行上下文少样本学习(in-context few-shot learning)的令人兴奋的前景。也就是说,无需为每个新任务微调单独的语言模型检查点,只需用几个演示任务的输入-输出示例来“提示”模型即可。值得注意的是,这对于一系列简单的问答任务已经取得了成功(Brown 等人,2020)。
然而,上述两个想法都有关键的局限性。对于推理增强训练和微调方法,创建大量高质量的推理过程成本高昂,这比普通机器学习中使用的简单输入-输出对要复杂得多。对于 Brown 等人(2020)中使用的传统少样本提示方法,它在需要推理能力的任务上表现不佳,并且通常不会随着语言模型规模的增加而显著提高(Rae 等人,2021)。在本文中,我们以一种避免其局限性的方式结合了这两个想法的优势。具体来说,我们探索了语言模型在给定由三元组(输入,思维链,输出)组成的提示时,执行推理任务的少样本提示能力。思维链是一系列导致最终输出的中间自然语言推理步骤,我们将这种方法称为思维链提示。图 1 展示了一个示例提示。
我们对算术、常识和符号推理基准进行了实证评估,结果表明思维链提示优于标准提示,有时程度惊人。图 2 展示了其中一个结果——在 GSM8K 数学应用题基准测试(Cobbe 等人,2021)上,使用 PaLM 540B 进行思维链提示在很大程度上优于标准提示,并达到了新的最先进性能。仅提示的方法之所以重要,是因为它不需要大型训练数据集,而且单个模型检查点可以在不损失通用性的情况下执行许多任务。这项工作强调了大语言模型如何通过关于任务的少量自然语言数据示例进行学习(对比通过大型训练数据集自动学习输入和输出背后的模式)。
2. 思维链提示
考虑一个人在解决复杂推理任务(如多步数学应用题)时的思维过程。通常的做法是将问题分解为中间步骤,并在给出最终答案之前解决每一个步骤:“在简给妈妈 2 朵花后,她有 10 朵……然后在给爸爸 3 朵后,她会有 7 朵……所以答案是 7。” 本文的目标是赋予语言模型生成类似思维链的能力——即导致问题最终答案的一系列连贯的中间推理步骤。我们将展示,如果为少样本提示提供了思维链推理的演示,足够大的语言模型就可以生成思维链。
图 1 展示了一个模型生成思维链来解决它原本会做错的数学应用题的例子。这种情况下的思维链类似于一个解决方案,可以被解释为一个解决方案,但我们仍然选择称之为思维链,以更好地捕捉它模仿得出答案的逐步思维过程这一想法(而且,解决方案/解释通常出现在最终答案之后(Narang 等人,2020;Wiegreffe 等人,2022;Lampinen 等人,2022 等))。
作为一种促进语言模型推理的方法,思维链提示具有几个吸引人的特性:
- 首先,思维链原则上允许模型将多步问题分解为中间步骤,这意味着可以将额外的计算分配给需要更多推理步骤的问题。
- 其次,思维链为模型行为提供了一个可解释的窗口,暗示了它可能如何得出特定答案,并提供了调试推理路径出错位置的机会(尽管完全表征支持答案的模型计算仍然是一个悬而未决的问题)。
- 第三,思维链推理可用于数学应用题、常识推理和符号操作等任务,并且(至少在原则上)适用于人类可以通过语言解决的任何任务。
- 最后,思维链推理可以通过在少样本提示的示例中包含思维链序列的示例,轻松地在足够大的现成语言模型中引发。
在实证实验中,我们将观察思维链提示在算术推理(第 3 节)、常识推理(第 4 节)和符号推理(第 5 节)中的效用。
3. 算术推理
我们首先考虑图 1 形式的数学应用题,它衡量语言模型的算术推理能力。尽管对人类来说很简单,但算术推理是语言模型经常感到困难的任务(Hendrycks 等人,2021;Patel 等人,2021 等)。令人惊讶的是,当与 540B 参数的语言模型一起使用时,思维链提示在多个任务上与特定任务微调模型表现相当,甚至在具有挑战性的 GSM8K 基准测试(Cobbe 等人,2021)上达到了新的最先进水平。
3.1 实验设置
我们探索了思维链提示在多个基准测试中对各种语言模型的效果。
基准测试。我们考虑以下五个数学应用题基准测试:(1)GSM8K 数学应用题基准测试(Cobbe 等人,2021),(2)具有不同结构的 SVAMP 数学应用题数据集(Patel 等人,2021),(3)ASDiv 多样化数学应用题数据集(Miao 等人,2020),(4)AQuA 代数应用题数据集,以及(5)MAWPS 基准测试(Koncel-Kedziorski 等人,2016)。示例问题在附录表 12 中给出。
标准提示。作为基线,我们考虑 Brown 等人(2020)推广的传统少样本提示,其中语言模型在为测试时间示例输出预测之前,被给予上下文中的输入-输出对示例。示例格式化为问题和答案。模型直接给出答案,如图 1(左)所示。
思维链提示。我们提出的方法是在少样本提示中的每个示例中,为相关答案增加一个思维链,如图 1(右)所示。由于大多数数据集只有评估集,我们手动编写了一组八个带有思维链的少样本示例用于提示——图 1(右)展示了一个思维链示例,完整示例集在附录表 20 中给出。(这些特定的示例没有经过提示工程;稳健性在第 3.4 节和附录 A.2 中进行了研究。)为了调查这种形式的思维链提示是否能成功地在一系列数学应用题中引发成功的推理,我们对除 AQuA 之外的所有基准测试都使用了这组单一的八个思维链示例,AQuA 是多项选择题而非自由回答题。对于 AQuA,我们使用了训练集中的四个示例和解决方案,如附录表 21 所示。
语言模型。我们评估了五个大语言模型。第一个是 GPT-3(Brown 等人,2020),我们使用 text-ada-001、text-babbage-001、text-curie-001 和 text-davinci-002,它们大概对应于 350M、1.3B、6.7B 和 175B 参数的 InstructGPT 模型(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)。也就是说,思维链提示对小模型没有积极影响,只有在与 参数的模型一起使用时才会产生性能增益。我们定性地发现,较小规模的模型产生了流利但不合逻辑的思维链,导致性能低于标准提示。


(注:由于篇幅限制,此处省略后续章节的详细翻译,但已严格遵循所有格式要求。)