Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
- 前言
- Abstract
- 1 Introduction
- 2 Chain-of-Thought Prompting
- 3 Arithmetic Reasoning
- 3,1 Experimental Setup
- 3.2 Results
- 3.3 Ablation Study
- 3.4 Robustness of Chain of Thought
- 4 Commonsense Reasoning
- 5 Symbolic Reasoning
- 6 Discussion
- 7 Related Work
- 8 Conclusions
- 阅读总结
前言
本文是CoT的开山之作,来自于Google,中稿于NeurIPS 2022。CoT是一种简单高效的大模型prompt,旨在激发大模型的推理能力,是当前热门的方向之一,很多prompt的工作都开始转向CoT。本文思路清晰,方法简单,通俗易懂,并且实验巧妙,是一篇特别值得精读的文章。
Paper | https://arxiv.org/pdf/2201.11903.pdf |
---|---|
Code | https://github.com/guidance-ai/guidance |
From | NeurIPS 2022 |
Abstract
本文提出思维链,即一系列中间推理步骤,用于提升大语言模型的复杂推理能力。该方法高效简单,又被称为chain-of-thought prompting。在三个大语言模型上的实验表明CoT在算数、常识和符号推理上有明显提升。
1 Introduction
在NLP领域,扩大语言模型可以提高模型性能和采样效率,但是在一些具有挑战性的任务上如算数、常识和符号推理上难以实现与模型规模相匹配的性能。本篇工作展示了CoT如何释放大模型的推理性能。
CoT受到两点启发:
- 算数推理可以从中间推理步骤中受益。
- 大语言模型通过prompting进行小样本学习有令人兴奋的前景。
但是高质量的中间步骤成本很高,小样本学习在推理任务上表现不佳。CoT将这两个想法相结合,避免了它们的局限性。具体来说,作者构建了prompt三元组<input, chain of thought, output>
,思维链是一系列中间自然语言推理步骤,如下图所示:
作者对算数、常识和符号的推理基准进行了经验评估,下图是在GSM8K上的评测结果:
可以看到,CoT对Palm 540B模型有显著的提升,达到了SOTA。本项工作强调了大语言模型如何通过任务相关的自然语言提示进行学习。
2 Chain-of-Thought Prompting
当我们自己在解决复杂推理任务时,我们也会将问题分解为多个中间步骤,然后一步步解决直到给出最终的答案。本文的目标也是赋予语言模型类似思维链的能力,从而解决复杂的问题。具体来说,在小样本prompt的示例中提供CoT的演示,可以产生思维链。
作为促进语言模型推理的方法,CoT prompting有一些吸引人的特性:
- CoT原则上来说可以让模型将多步任务分解为多个中间步骤,这意味着可以将额外的计算量分配给需要更多推理的步骤。
- CoT为模型的生成行为提供了可解释性。
- CoT适用各种推理任务,如数学、常识推理等,通用性好。
- CoT应用简单,只需要将CoT的示例序列包含到小样本prompt中,就可以提高模型的推理能力。
3 Arithmetic Reasoning
作者在540B的语言模型上进行思维链的实验,引人注目的是,使用思维链的模型在多项任务上的表现与任务特定的微调相当,甚至在具有挑战的GSM8K基准测试中达到了SOTA。
3,1 Experimental Setup
**Benchmark: **GSM8K,SVAMP,ASDiv,AQuA,MAWPS.
**Standard prompting: **same as figure 1(left).
**CoT: **same as figure 1(right), Each CoT composed a set of eight few-shot exemplars.
**Language models: **GPT-3, LaMDA, PaLM, UL2 20B, Codex.
3.2 Results
实验结果如上图所示,CoT在小模型上并没有明显的提升,当模型超过100B时,会有显著的表现,表明了模型的涌现能力。具体来说,有如下的发现:
- 小模型上会产生不符合逻辑的思维链,导致表现低于标准的prompt。
- CoT在复杂的问题上有显著的性能提升。
- 在GPT-3和PALM上的CoT超过了微调的SOTA。
为了更好理解CoT的工作原理,作者手动检查了思维链生成的结果,在正确结果上,其思维链在逻辑和数学上都是正确的,在错误结果上,一半的思维链几乎正确,其余的错的离谱。此外为了探索模型规模对CoT的影响,作者对PaLM 62B和PaLM 540B进行了类似的分析,发现后者在CoT上修复了前者很大部分的缺失和语义理解错误。
3.3 Ablation Study
CoT的优异表现自然引发了问题,是否可以通过其它类型的prompt来实现相同的性能改进?下图展示了三种CoT变体的消融实验。
- **Equation only. **思维链有效的一个原因可能是它会生成要评估的数学方程,因此一个CoT的变体是在给出答案前仅输出数学方程。上图表明仅输出方程并没有太大帮助,因为仅输出方程无法结果语义推理问题。
- Variable compute only. 由于思维链允许模型在更困难的问题上花费更多的时间,有没有可能是因为计算量带来的性能提升?作者将CoT换为了同样长度的点序列,结果发现和基线大致相同,表明计算量不是CoT成功的原因。
- **Chain of thought after answer. **最后一个变种是在答案后面加上思维链,从而判断模型是否是依赖CoT得到的答案,该变体表现和基线大致相同,说明模型确实依赖CoT从而生成答案。
3.4 Robustness of Chain of Thought
不同的prompt信息会对大模型生成的结果产生巨大影响,例如打乱few-shot示例的顺序,就会将GPT-3在SST-2上的性能从54.3%提升到93.4%。因此文章对比了三个不同作者构建的CoT、以及另一个更简洁的CoT,来验证CoT的鲁棒性。
上图展示了这些CoT基于LaMDA 137B模型在GSM8K和MAWPS两个数据集上的结果,虽然不同的CoT会有性能的波动,但都比baseline有着显著的提升,这表明CoT的成功并不依赖于特定的语言风格。此外作者还从训练集中随机抽样三组示例CoT,结果和手写的示例相当。
4 Commonsense Reasoning
虽然CoT特别适合解决数学问题,但是自然语言提示理论上在常识推理上更为实用。作者在CSQA、StrategyQA、Date、Sports、SayCan这五个数据集上进行了实验,prompt设置和数学推理实验中设置一致。结果如下:
对于所有的任务,扩大模型规模都能提升模型的性能,CoT相对于baseline提升更大,这表明CoT能够提升大模型在常识推理任务上的性能。
5 Symbolic Reasoning
最后评估CoT在符号推理上的表现。符号推理任务对人类来说很简单,但是对标准的大模型来说是一个有挑战的任务。作者选取了Last letter concatenation和Coin flip两个任务,前者要求模型将名字中最后一个字母拼接起来,后者要求模型回答硬币翻转特定次数后的正反。实验设置和前两个实验相同,结果如下:
在PALM 540B的模型上,CoT在域内数据上几乎达到了100%的准确率,在域外数据上也有接近100%的表现,相反,标准prompt在这两者上都失败了。
6 Discussion
本文探索了CoT作为引发大模型多步推理的简单机制,在不进行微调的情况下,大大提高了模型算数推理、常识推理和符号推理上的性能。这也引发了作者一系列思考:
- 随着模型规模的增加,还期望模型理解能力能够提升多少?
- 还有哪些prompt方法可以扩展模型的解决任务范围?
此外,作者还提出了本文的一些局限性,虽然文中证明了模型有利用到中间推理的信息,但是模型是否真的在推理是一个悬而未决的问题。其次,手动构建CoT成本高,质量难以保证。第三,对于推理路径,无法保证其正确性。
7 Related Work
略。
8 Conclusions
本文探索CoT作为一种简单实用的prompt方法可以增强大模型的推理能力,通过算数、常识、符号推理的实验,发现它允许足够大的模型执行推理任务,而这些任务在标准prompt中是失败的。通过进一步扩大模型规模,有望激发基于自然语言的方法的工作。
阅读总结
本文作为CoT的开山之作,虽然简单且易于理解,但是其实验丰富,并且消融实验构造巧妙,也是一篇无论是写作还是实验都特别值得借鉴的工作。当然作为开山之作,肯定有很多值得改进的地方,比如本文是手动构建的CoT,这种方式质量难以保证,并且效率不高,成本巨大,一个省时省力的工作是利用chatgpt等优质大语言模型自动构建CoT,当然除了构建的形式不同,CoT本身也有很多可以做的工作,比如多阶段的CoT会进一步提升模型的效果。强化学习+CoT也能进一步提高CoT的质量等。