论文地址:https://arxiv.org/pdf/2201.11903.pdf
相关博客 【自然语言处理】【ChatGPT系列】WebGPT:基于人类反馈的语言引导浏览器辅助问答 【自然语言处理】【ChatGPT系列】ChatGPT的智能来自哪里? 【自然语言处理】【ChatGPT系列】Chain of Thought:从大模型中引导出推理能力 【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型 【自然语言处理】【ChatGPT系列】大模型的涌现能力 【自然语言处理】【文本生成】CRINEG Loss:学习什么语言不建模 【自然语言处理】【文本生成】使用Transformers中的BART进行文本摘要 【自然语言处理】【文本生成】Transformers中使用约束Beam Search指导文本生成 【自然语言处理】【文本生成】Transformers中用于语言生成的不同解码方法 【自然语言处理】【文本生成】BART:用于自然语言生成 、翻译和理解的处理t从出推降噪Sequence-to-Sequence预训练 【自然语言处理】【文本生成】UniLM:用于自然语言理解和生成的统一语言模型预训练 【自然语言处理】【多模态】OFA:通过简单的sequence-to-sequence学习框架统一架构 、任务和模态
语言模型为自然语言处理带来了革命,而扩大语言模型规模可以提高下游任务效果 、列C理能力样本效率等一系列的大模好处。然而,单纯扩大语言模型的语言引导尺寸并不能够使算术 、常识和符号推理获得更好的处理t从出推表现 。文本尝试使用简单的系型中方法来解锁大规模语言模型的推理能力,该方法主要来自于两个想法:(1) 算术推理能够从自然语言论据中受益,从而得到最终的答案。先前的列C理能力研究通过从头训练或者微调预训练模型从而赋予模型生成自然语言中间步骤的能力。(2) 大规模语言模型通过prompting\text{prompting}prompting提供了few-shot learning\text{few-shot learning}few-shot learning的大模能力。也就是语言引导说,不需要为每个任务微调单独的语言弄下checkpoint,而是通过任务相关的"输入-输出"示例来提示模型。
然而,上面的处理t从出推想法有一些限制。论据增强的系型中训练和微调方法需要大量的高质量论据,这比简单的"输入-输出"样本对复杂的多 。传统的列C理能力few-shot prompting\text{few-shot prompting}few-shot prompting方法在需要推理能力的任务上表现很差,并且不会随着语言模型规模的增加而改善。在本文中,作者以某种方式合并两个想法中的大模能力来避免这些限制。具体来说,给定一个由三元组组成的prompt:⟨input, chain of thought, output⟩\text{prompt}:\langle\text{input, chain of thought, output}\rangleprompt:⟨input, chain of thought, output⟩,探索大模型在推理任务上的few-shot prompting\text{few-shot prompting}few-shot prompting效果。chain of thought\text{chain of thought}chain of thought是由一系列自然语言推理中间步骤组成,并最终给出答案,将该方法称为chain-of-thought prompting\text{chain-of-thought prompting}chain-of-thought prompting 。图1是一个示例prompt\text{prompt}prompt。
本文给出了一个在算法、常识和符号推理基准上的评估,结果显示Chain-of-thought prompting\text{Chain-of-thought prompting}Chain-of-thought prompting显著优于标准的prompting\text{prompting}prompting,有时能够达到惊人的程度。上图展示了chain-of-thought prompting\text{chain-of-thought prompting}chain-of-thought prompting在GSM8K\text{GSM8K}GSM8K数学应用题基准上的结果,PaLM 540B\text{PaLM 540B}PaLM 540B大幅度超越了标准的prompt\text{prompt}prompt并实现了新的state-of-the-art\text{state-of-the-art}state-of-the-art 。prompt\text{prompt}prompt方法很重要,因为其不需要大的训练集并且能够不失一般性地在单个模型checkpoint执行很多任务 。本文的目标是赋予语言模型生成类似chain of thought\text{chain of thought}chain of thought的能力,即一系列中间推理步骤,从而得到问题最终的答案。本文展示了,在few-shot prompting\text{few-shot prompting}few-shot prompting中提供一些chain-of-thought\text{chain-of-thought}chain-of-thought推理的示例,足够大的语言模型就能生成chains of thought\text{chains of thought}chains of thought。
回想一下人类解决数学应用题这种复杂推理任务的过程。典型的做法是将问题分解为中间步骤并逐步解决并给出最终的答案:“Jane将2朵花送给她妈妈后还剩10朵…然后再送给她爸爸3朵后还有7朵…所以答案是7” 。
考虑一下我们自己解决像数学应用题这样复杂推理任务的过程。典型的做法是将问题分解为中间步骤并逐步解决并给出最终的答案:“Jane将2朵花送给她妈妈后还剩10朵…然后再送给她爸爸3朵后还有7朵…所以答案是7” 。本文的目标是赋予语言模型生成类似chain of thought\text{chain of thought}chain of thought的能力,即一系列中间推理步骤,从而得到问题最终的答案。我们将会展示,若在few-shot prompting\text{few-shot prompting}few-shot prompting提供一些chain-of-thought\text{chain-of-thought}chain-of-thought推理的示例,足够大的语言模型就能生成chains of thought\text{chains of thought}chains of thought 。
图1展示了一个模型产生chain of thought\text{chain of thought}chain of thought来解决数学应用题的示例。在该例子中,chain of thought\text{chain of thought}chain of thought类似于一种解决方案,其能够一步一步思考并给出最终答案 。
Chain-of-thought prompting\text{Chain-of-thought prompting}Chain-of-thought prompting作为利用语言模型推理能力的方法,有几个吸引人的性质:
首先通过数学应用题来衡量语言模型的数学推理能力。虽然数学推理能力对人类很简单,但是对模型来说十分挣扎。当具有540B\text{540B}540B参数语言模型上使用chain-of-thought prompting\text{chain-of-thought prompting}chain-of-thought prompting,其能与在几个任务上微调的效果相当,甚至在具有挑战性的GSM8K\text{GSM8K}GSM8K基准实现了新的state-of-the-art\text{state-of-the-art}state-of-the-art。
基准
考虑5个数学应用题基准:(1) 数学应用题基准GSM8K\text{GSM8K}GSM8K; (2) 具有不同结构的数学应用题基准SVAMP\text{SVAMP}SVAMP; (3) 具有多种数学应用题的基准ASDiv\text{ASDiv}ASDiv; (4) 代数应用题数据集AQuA\text{AQuA}AQuA;(5) MAWPS\text{MAWPS}MAWPS基准。
标准prompting\text{prompting}prompting
baseline是标准的few-shot prompting\text{few-shot prompting}few-shot prompting,给模型一个"输入-输出"对示例,然后模型就可以在测试时给出答案。
Chain-of-thought prompting\text{Chain-of-thought prompting}Chain-of-thought prompting
本文提出的方法是通过一个关联了答案的chain of thought\text{chain of thought}chain of thought来增强few-shot prompting\text{few-shot prompting}few-shot prompting示例 。由于大多数的数据集仅有一个评估集,作者手动构建了8个具有chain of thought\text{chain of thought}chain of thought的few-shot\text{few-shot}few-shot示例集合,图1右侧展示了一个chain of thought\text{chain of thought}chain of thought示例。在除了AQuA\text{AQuA}AQuA以外的所有基准上是使用了这8个示例集合 。对于AQuA\text{AQuA}AQuA,这使用来自训练集的4个示例。
语言模型
本文评估了5个大模型。
(1) GPT-3\text{GPT-3}GPT-3,使用的版本为text-ada-001\text{text-ada-001}text-ada-001、text-babbage-001\text{text-babbage-001}text-babbage-001、text-curie-001\text{text-curie-001}text-curie-001和text-davinci-002\text{text-davinci-002}text-davinci-002,大致对应InstructGPT\text{InstructGPT}InstructGPT模型的350M 、1.3B 、6.7B 、175B\text{350M、1.3B、6.7B、175B}350M 、1.3B 、6.7B 、175B参数量;
(2) LaMDA\text{LaMDA}LaMDA,其具有442M 、2B 、8B 、68B 、137B\text{442M 、2B 、8B 、68B、137B}442M、2B 、8B、68B、137B参数量的版本;
(3) PaLM\text{PaLM}PaLM,其具有8B 、62B 、540B\text{8B、62B 、540B}8B、62B、540B参数量;
(4) UL2 20B\text{UL2 20B}UL2 20B;
(5) CodeX\text{CodeX}CodeX。
通过贪心解码的方法来采样。对于LaMDA\text{LaMDA}LaMDA,本文报告了5个随机种子的平均结果,且每个种子都对应不同的样本顺序。由于LaMDA\text{LaMDA}LaMDA在不同种子中并没有显示出大的方差,为了节省计算,对所有的其他模型仅报告单个样本的结构。
chain-of-thought prompting\text{chain-of-thought prompting}chain-of-thought prompting最优的结果如上图所示,这里有三个关键要点 。
首先 、上图展示了chain-of-thought prompting\text{chain-of-thought prompting}chain-of-thought prompting是模型规模的涌现能力,即chain-of-thought prompting\text{chain-of-thought prompting}chain-of-thought prompting对于小模型不会有正面的影响,仅当模型参数达到∼100B\sim\text{100B}∼100B参数才会有效果上的收益。作者定性的发现,较小的模型产生流畅但不合逻辑的chain-of-thought\text{chain-of-thought}chain-of-thought,导致其会比标准的prompting\text{prompting}prompting更差的表现 。
第二 、对于更复杂的问题chain-of-thought prompting\text{chain-of-thought prompting}chain-of-thought prompting具有更大的效果收益。例如,对于GSM8K\text{GSM8K}GSM8K,最大的GPT\text{GPT}GPT和PaLM\text{PaLM}PaLM模型效果翻了一倍 。对于MAWPS\text{MAWPS}MAWPS基准中最简单的子集SingleOP\text{SingleOP}SingleOP,该子集中的问题仅需要一步就能解决,那么chain-of-thought prompting\text{chain-of-thought prompting}chain-of-thought prompting对于性能的改善要么是负的、要么非常小 。
第三、基于GPT-3 175B\text{GPT-3 175B}GPT-3 175B和PaLM 540B\text{PaLM 540B}PaLM 540B的chain-of-thought prompting\text{chain-of-thought prompting}chain-of-thought prompting优于先前在标注的训练集上进行任务相关微调的state of the art\text{state of the art}state of the art模型 。上图展示了PaLM 540B\text{PaLM 540B}PaLM 540B如何使用chain-of-thought prompting\text{chain-of-thought prompting}chain-of-thought prompting来在GSM8K,SVAMP,MAWPS\text{GSM8K,SVAMP,MAWPS}GSM8K,SVAMP,MAWPS实现新的state of the art\text{state of the art}state of the art。在AQuA\text{AQuA}AQuA和ASDiv\text{ASDiv}ASDiv这两个数据集上,PaLM\text{PaLM}PaLM能够达到state of the art\text{state of the art}state of the art。
为了更好的理解chain-of-thought\text{chain-of-thought}chain-of-thought为什么有效,作者手动检查了LaMDA 137B\text{LaMDA 137B}LaMDA 137B为GSM8K\text{GSM8K}GSM8K生成的chain-of-thought\text{chain-of-thought}chain-of-thought 。在模型返回的50个正确的例子中,除了有两个是巧合得到答案外,所有生成的chain of thought\text{chain of thought}chain of thought都在逻辑和数学上是正确的。此外,作者也检查了模型返回的50个错误的例子,46%的chain of thought\text{chain of thought}chain of thought几乎是正确的,处理一些小的错误,其余54%的chain of thought\text{chain of thought}chain of thought在语义理解或一致性上有主要错误 。为了能够深入理解规模能够改善chain of thought\text{chain of thought}chain of thought推理能力,作者对PaLM 62B\text{PaLM 62B}PaLM 62B所犯的错误提供了相似的分析,但模型放大至PaLM 540B\text{PaLM 540B}PaLM 540B是可以修复这些错误 。总的来说,将PaLM\text{PaLM}PaLM放大至540B\text{540B}540B能够修复62B\text{62B}62B模型中大部分的单步错误和语义理解错误 。
chain of thought prompting\text{chain of thought prompting}chain of thought prompting能够带来效果上的收益,那么自然会期望知道是否可以通过其他类型的prompting\text{prompting}prompting来获得相同的性能改善 。上图展示了chain of thought\text{chain of thought}chain of thought三个变体的消融实验 。
Equation only
chain of thought prompting\text{chain of thought prompting}chain of thought prompting有效的可能原因是产生了数学方程式