title: 【转载】深入理解语言模型的突现能力 & 拆解追溯 GPT-3.5 各项能力的起源 tags: [] id: '2585' categories:
根据转载协议,在文章的开头标明出处:深入理解语言模型的突现能力和拆解追溯 GPT-3.5 各项能力的起源转载自符尧、彭昊、Tushar Khot在notion上的文章,翻译李如寐、郭志江。
注:本文完成于 ChatGPT 上线之前的一个月,当时我意识到大模型非同小可,所以写下本文,希望引起更多人关注到大模型有可能带来的研究范式转变。一个月之后,ChatGPT 上线,全网轰动,范式从此转变。
最近,人们对大型语言模型所展示的强大能力(例如思维链、便签本)产生了极大的兴趣,并开展了许多工作。我们将之统称为大模型的突现能力,这些能力可能只存在于大型模型中,而不存在于较小的模型中,因此称为“突现”。其中许多能力都非常令人印象深刻,比如复杂推理、知识推理和分布外鲁棒性,我们将在后面详细讨论。值得注意的是,这些能力很接近 NLP 社区几十年来一直寻求的能力,因此代表了一种潜在的研究范式转变,即从微调小模型到使用大模型进行上下文学习。对于先行者来说,范式转变可能是很显然的。然而,出于科学的严谨性,**我们确实需要非常明确的理由来说明为什么人们应该转向大型语言模型,即使这些模型昂贵、难以使用,并且效果可能一般。**在本文中,我们将仔细研究这些能力是什么,大型语言模型可以提供什么,以及它们在更广泛的 NLP / ML 任务中的潜在优势是什么。
前提:我们假设读者具备以下知识:
图片来自于 Wei. et. al. 2022. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models。X 轴为模型大小。GSM8K是是一个小学水平的数学问题集。
在以上的效果图中,我们可以观察到模型的表现:
这从根本上说明,某些能力可能不存在于小模型中,而是在大模型中获得的。
有很多种突现能力,比如 Wei 等人在 2022年 所梳理的。有些能力很有意思,但我们在本文不会讨论,比如把一串单词的最后一个字母拼起来,我们认为这是 Python 而不是语言模型要做的任务;或者3位数加法,我们认为这是计算器而不是语言模型要做的事。
在本文中,我们主要对以下能力感兴趣:
很多有意思的能力都可以归到上文提到的类别里,在它们之中,我们主要讨论以下三种典型能力:
接下来让我们一个个详细讨论。
下面是一个 GSM8K 数据集中,用提示词显著超过精调的例子:
虽然这道题对于10岁的孩子来说很容易,但对语言模型来说却很难,主要是由于数学和语言混合在一起。
GSM8K 最初由 OpenAI 于 2021 年 10 月提出。当时他们用第一版GPT3在全部训练集上进行了精调,准确率约为 35%。这个结果让作者相当悲观,因为他们的结果显示了语言模型的缩放规律:随着模型大小呈指数增长,性能呈线性增长(我之后会讨论)。因此,他们在第 4.1 节中思考:
“175B 模型似乎需要至少额外两个数量级的训练数据才能达到 80% 的求解率。”
三个月后,即 2022 年 1 月,Wei 等人基于 540B PaLM 模型,仅使用了 8 个思维链提示示例便将准确率提高到 56.6%(无需将训练集增加两个数量级)。之后在 2022 年 3 月,Wang 等人基于相同的 540B PaLM 模型,通过多数投票的方法将准确率提高到 74.4%。当前的 SOTA 来自我自己在 AI2 的工作(Fu et. al. Nov 2022),我们通过使用复杂的思维链在 175B Codex 上实现了 82.9% 的准确率。从以上进展可以看到,技术进步确实呈指数级增长。
思维链提示是一个展示模型随着规模突现出能力的典型例子:
有些同学可能会认为模型能做小学数学代表不了什么(从某种意义上说,他们确实没有那么酷)。但 GSM8K 只是一个开始,最近的工作已经把前沿问题推向了高中、大学,甚至是国际数学奥林匹克问题。现在更酷了吗?
下一个例子是需要知识的推理能力(例如问答和常识推理)。在这种情况下,对大型模型进行提示不一定优于精调小型模型(哪个模型更好还有待观察)。但是这个情况下的注释效率被放大了,因为:
图片来自于 Yu et. al. 2022. 以前的 SOTA 模型需要从外部知识源中检索。 GPT-3 的性能与以前的模型相当/优于以前的模型,且无需检索。
如表中所示,与数学题的例子不同,GPT-3 并没有明显优于之前的精调模型。但它不需要从外部文档中检索,本身就包含了知识。
为了理解这些结果的重要性,我们可以回顾一下历史:NLP 社区从一开始就面临着如何有效编码知识的挑战。人们一直在不断探究把知识保存在模型外部或者内部的方法。上世纪九十年代以来,人们一直试图将语言和世界的规则记录到一个巨大的图书馆中,将知识存储在模型之外。但这是十分困难的,毕竟我们无法穷举所有规则。因此,研究人员开始构建特定领域的知识库,来存储非结构化文本、半结构化(如维基百科)或完全结构化(如知识图谱)等形式的知识。通常,结构化知识很难构建(因为要设计知识的结构体系),但易于推理(因为有体系结构),非结构化知识易于构建(直接存起来就行),但很难用于推理(没有体系结构)。然而,语言模型提供了一种新的方法,可以轻松地从非结构化文本中提取知识,并在不需要预定义模式的情况下有效地根据知识进行推理。下表为优缺点对比:
构建
推理
结构化知识
难构建
需要设计体系结构并解析
容易推理
有用的结构已经定义好了
非结构化知识
容易构建
只存储文本即可
难推理
需要抽取有用的结构
语言模型
容易构建
在非结构化文本上训练
容易推理
使用提示词即可
我们讨论的第三种能力是分布外的鲁棒性。在 2018 年至 2022 年期间,NLP、CV 和通用机器学习领域有大量关于分布偏移/对抗鲁棒性/组合生成的研究,人们发现当测试集分布与训练分布不同时,模型的行为性能可能会显著下降。然而,在大型语言模型的上下文学习中似乎并非如此。Si 等人在2022年的研究显示:
数据来自于 Si et. al. 2022. 虽然 GPT-3 在同分布设置下比 RoBERTa 要差,但在非同分布设置下优于 RoBERTa,性能下降明显更小。
同样,在此实验中,同分布情况下基于提示词的 GPT-3 的效果并没有精调后的 RoBERTa要好。但它在三个其他分布(领域切换、噪声和对抗性扰动)中优于 RoBERTa,这意味着 GPT3 更加鲁棒。
此外,即使存在分布偏移,好的提示词所带来的泛化性能依旧会继续保持。比如:
图片来自于 Fu et. al. 2022. 即使测试分布与训练分布不同,复杂提示也始终比简单提示的表现更好。
Fu 等人2022年的研究显示,输入提示越复杂,模型的性能就越好。这种趋势在分布转移的情况下也会继续保持:无论测试分布与原分布不同、来自于噪声分布,或者是从另一个分布转移而来的,复杂提示始终优于简单提示。
在上文中,我讨论了只有大型模型才有的三种突现能力。它们是:
鉴于上文列出的优点,大家可能会开始觉得大型语言模型确实很好了。在进一步讨论之前,让我们再回顾一下之前的工作,就会发现一个很奇怪的问题:GPT-3 在 2020 年就发布了,但为什么直到现在我们才发现并开始思考范式的转变?
这个问题的答案就藏在两种曲线中:对数线性曲线和相变曲线。如下图:
左图: 比例定律. 当模型大小呈指数增长时,相应的模型性能呈线性增长。右图: 当模型尺寸达到一定规模时,会出现突现能力,让性能急剧增加。
最初,(OpenAI)的研究者认为语言模型的性能与模型尺寸的关系可以通过对数线性曲线预测,即模型尺寸呈指数增长时,性能会随之线性增加。这种现象被称为语言模型的缩放定律,正如 Kaplan 等人在2020年最初的GPT3文章中讨论的那样。重要的是,在那个阶段,即便最大的 GPT-3 在有提示的情况下也不能胜过小模型精调。所以当时并没有必要去使用昂贵的大模型(即使提示词的标注效率很高)。直到2021年,Cobbe 等人发现缩放定律同样适用于精调。这是一个有点悲观的发现,因为它意味着我们可能被锁定在模型规模上——虽然模型架构优化可能会在一定程度上提高模型性能,但效果仍会被锁定在一个区间内(对应模型规模),很难有更显著的突破。
在缩放定律的掌控下(2020年到2021),由于GPT-3无法胜过精调 T5-11B,同时T5-11B微调已经很麻烦了,所以NLP社区的关注点更多的是研究更小的模型或者高效参数适应。Prefix tuning就是提示和适应交叉的一个例子,后来由 He 等人在 2021统一。当时的逻辑很简单:如果精调效果更好,我们就应该在高效参数适应上多下功夫;如果提示词的方法更好,我们应该在训练大型语言模型上投入更多精力。
之后在 2022 年 1 月,思维链的工作被放出来了。正如作者所展示的那样,思维链提示在性能-比例曲线中表现出明显的相变。当模型尺寸足够大时,性能会显著提高并明显超越比例曲线。
当使用思维链进行提示时,大模型在复杂推理上的表现明显优于微调,在知识推理上的表现也很有竞争力,并且分布鲁棒性也存在一定的潜力。要达到这样的效果只需要8个左右的示例,这就是为什么范式可能会转变(注:本文完成于 ChatGPT 上线之前的一个月;在 ChatGPT 上线之后,整个领域为之震撼,意识到范式已经转变了)。
范式转变究竟意味着什么?下面我们给出精调和提示词方法的对比:
模型规模
小模型
大模型
学习方法
微调
上下文学习
学习范式
监督学习
监督学习??
数据
完整训练数据集
少量上下文学习样本
泛化
分布内泛化
同时泛化到分布内 + 分布迁移
提示词的好处很明显:我们不再需要繁琐的数据标注和在全量数据上进行精调,只需要编写提示词并获得满足要求的结果,这比精调要快很多。
另外要注意的两点是:
上下文学习是监督学习吗?
上下文学习真的比监督学习效果要好吗?
再回顾一下前文提到的的逻辑:如果精调更好,我们应该努力研究如何进行参数高效的优化;如果提示词更好,我们应该努力去训练更好的大型语言模型。
所以,尽管我们相信大型语言模型有巨大的潜力,仍然没有确凿的证据表明精调和提示词哪种方法更好,因此我们不确定范式是否真的应该转变、或应该转变到什么程度。仔细比较这两种范式,使我们对未来有一个清晰的认识,是非常有意义的。我们将更多讨论留到下一篇文章。
两个数字:62B 和 175B。
62B这个数字来自于 Chung 等人 2022 年工作的第五张表。
对于所有小于62B的模型,直接用提示词都好于思维链。第一个用思维链更好的模型是 Flan-cont-PaLM 62B 在BBH上的结果。540B的模型使用思维链会在更多任务上得到好的效果,但也不是全部任务都好于精调。另外,理想的尺寸可以小于 540B,在 Suzgun 等人2022年的工作中,作者展示了175B的 InstructGPT 和 175B的 Codex 使用思维链都好于直接用提示词。综合以上结果,我们得到了63B和175B两个数字。所以,如果想要参与这场游戏,首先要有一个大于平均尺寸的模型。
不过,还有其他大型模型在思维链下的表现差了很多,甚至不能学到思维链,比如 OPT、BLOOM 和 GPT-3 的第一个版本。他们的尺寸都是175B。这就引出了我们下一个要讨论的问题。
不是。
规模是一个必要但不充分的因素。有些模型足够大(比如 OPT 和 BLOOM,都是 175B),但并不能做思维链。
有两种模型可以做思维链:
为什么会有突现能力目前还不清楚,但我们找出了一下可能产生突现能力的因素:
然而,所有这些因素在现阶段都是推测。揭示如何训练才能让模型产生突现能力是非常有意义的,我们将更多讨论留到下一篇文章。
在本文中,我们仔细研究了语言模型的突现能力。我们强调了复杂推理、知识推理和分布外鲁棒性的重要性和其中存在的机会。突现能力是非常令人兴奋的,因为它们可以超越比例定律,并在比例曲线中表现出相变。我们详细讨论了研究范式是否会真的从精调转向上下文学习,但我们目前还没有确切答案,因为精调和上下文学习在分布内、分布外场景下的效果仍有待对比。最后,我们讨论了产生突现能力的三个潜在因素:指令精调、代码精调和思维链精调。非常欢迎大家提出建议和讨论。
另外我们还提到了两个尚未讨论的有趣问题:
对于这两个问题,我们会在之后的文章中进行讨论。
最近,OpenAI的预训练模型ChatGPT给人工智能领域的研究人员留下了深刻的印象和启发。毫无疑问,它又强又聪明,且跟它说话很好玩,还会写代码。它在多个方面的能力远远超过了自然语言处理研究者们的预期。于是我们自然就有一个问题:ChatGPT 是怎么变得这么强的?它的各种强大的能力到底从何而来?在这篇文章中,我们试图剖析 ChatGPT 的突现能力(Emergent Ability),追溯这些能力的来源,希望能够给出一个全面的技术路线图,来说明 GPT-3.5 模型系列以及相关的大型语言模型是如何一步步进化成目前的强大形态。
我们希望这篇文章能够促进大型语言模型的透明度,成为开源社区共同努力复现 GPT-3.5 的路线图。
“多年以后,面对行刑队,奥雷里亚诺·布恩迪亚上校将会回想起父亲带他去见识冰块的那个遥远的下午”
—— 《百年孤独》 加西亚·马尔克斯
初代GPT-3展示了三个重要能力:
那么这些能力从何而来呢?
基本上,以上三种能力都来自于大规模预训练:在有3000亿单词的语料上预训练拥有1750亿参数的模型( 训练语料的60%来自于 2016 - 2019 的 C4 + 22% 来自于 WebText2 + 16% 来自于Books + 3%来自于Wikipedia)。其中:
令人好奇的是,初代的GPT-3有多强。 其实比较难确定初代 GPT-3(在 OpenAI API 中被称为davinci
)到底是“强”还是“弱”。一方面,它合理地回应了某些特定的查询,并在许多数据集中达到了还不错的性能;另一方面,它在许多任务上的表现还不如 T5 这样的小模型(参见其原始论文)。在今天(2022 年 12 月)ChatGPT 的标准下,很难说初代的 GPT-3 是“智能的”。Meta 开源的 OPT 模型试图复现初代 GPT-3,但它的能力与当今的标准也形成了尖锐的对比。许多测试过 OPT 的人也认为与现在的text-davinci-002
相比,该模型确实 “不咋地”。尽管如此,OPT 可能是初代 GPT-3 的一个足够好的开源的近似模型了(根据 OPT 论文和斯坦福大学的 HELM 评估)。
虽然初代的 GPT-3 可能表面上看起来很弱,但后来的实验证明,初代 GPT-3 有着非常强的潜力。这些潜力后来被代码训练、指令微调 (instruction tuning) 和基于人类反馈的强化学习 (reinforcement learning with human feedback, RLHF) 解锁,最终体展示出极为强大的突现能力。
从最初的 GPT-3 开始,为了展示 OpenAI 是如何发展到ChatGPT的,我们看一下 GPT-3.5 的进化树:
在 2020 年 7 月,OpenAI 发布了模型索引为的 davinci
的初代 GPT-3 论文,从此它就开始不断进化。在 2021 年 7 月,Codex 的论文发布,其中初始的 Codex 是根据(可能是内部的)120 亿参数的 GPT-3 变体进行微调的。后来这个 120 亿参数的模型演变成 OpenAI API 中的code-cushman-001
。在 2022 年 3 月,OpenAI 发布了指令微调 (instruction tuning) 的论文,其监督微调 (supervised instruction tuning) 的部分对应了davinci-instruct-beta
和text-davinci-001
。在 2022 年 4 月至 7 月的,OpenAI 开始对code-davinci-002
模型进行 Beta 测试,也称其为 Codex。然后code-davinci-002
、text-davinci-003
和ChatGPT
都是从code-davinci-002
进行指令微调得到的。详细信息请参阅 OpenAI的模型索引文档。
尽管 Codex 听着像是一个只管代码的模型,但code-davinci-002
可能是最强大的针对自然语言的GPT-3.5 变体(优于 text-davinci-002
和 -003
)。code-davinci-002
很可能在文本和代码上都经过训练,然后根据指令进行调整(将在下面解释)。然后2022 年 5-6 月发布的text-davinci-002
是一个基于code-davinci-002
的有监督指令微调 (supervised instruction tuned) 模型。在text-davinci-002
上面进行指令微调很可能降低了模型的上下文学习能力**,但是增强了模型的零样本能力**(将在下面解释)。然后是text-davinci-003
和 ChatGPT
,它们都在 2022 年 11 月发布,是使用的基于人类反馈的强化学习的版本指令微调 (instruction tuning with reinforcement learning from human feedback) 模型的两种不同变体。text-davinci-003
恢复了(但仍然比code-davinci-002
差)一些在text-davinci-002
中丢失的部分上下文学习能力(大概是因为它在微调的时候混入了语言建模) 并进一步改进了零样本能力(得益于RLHF)。另一方面,ChatGPT 似乎牺牲了几乎所有的上下文学习的能力来换取建模对话历史的能力。
总的来说,在 2020 - 2021 年期间,在code-davinci-002
之前,OpenAI 已经投入了大量的精力通过代码训练和指令微调来增强GPT-3。当他们完成code-davinci-002
时,所有的能力都已经存在了。很可能后续的指令微调,无论是通过有监督的版本还是强化学习的版本,都会做以下事情(稍后会详细说明):
text-davinci-003
,有些更擅长对话,如ChatGPT
。code-davinci-002
在基准测试中实现了最佳性能(但模型不一定符合人类期望)。 在code-davinci-002
上进行指令微调后,模型可以生成更加符合人类期待的反馈(或者说模型与人类对齐),例如:零样本问答、生成安全和公正的对话回复、拒绝超出模型它知识范围的问题。在code-davinci-002和text-davinci-002之前,有两个中间模型,分别是 davinci-instruct-beta 和 text-davinci-001。两者在很多方面都比上述的两个-002模型差(例如,text-davinci-001 链式思维推理能力不强)。所以我们在本节中重点介绍 -002 型号。
我们关注code-davinci-002
和text-davinci-002
,这两兄弟是第一版的 GPT3.5 模型,一个用于代码,另一个用于文本。它们表现出了四种与初代 GPT-3 不同的重要能力:
这些能力从何而来?
与之前的模型相比,两个主要区别是指令微调和代码训练。具体来说
另外还要注意一些细节差异:
在这个阶段,我们已经确定了指令微调和代码训练的关键作用。一个重要的问题是如何进一步分析代码训练和指令微调的影响?具体来说: 上述三种能力是否已经存在于初代的GPT-3中,只是通过指令和代码训练触发 / 解锁? 或者这些能力在初代的 GPT-3 中并不存在,是通过指令和代码训练注入? 如果答案已经在初代的 GPT-3 中,那么这些能力也应该在 OPT 中。 因此,要复现这些能力,或许可以直接通过指令和代码调整 OPT。 但是,code-davinci-002 也可能不是基于最初的 GPT-3 davinci,而是基于比初代 GPT-3 更大的模型。如果是这种情况,可能就没办法通过调整 OPT 来复现了。研究社区需要进一步弄清楚 OpenAI 训练了什么样的模型作为 code-davinci-002 的基础模型。
我们有以下的假设和证据:
在当前阶段(2022 年 12 月), text-davinci-002、text-davinci-003 和 ChatGPT之间几乎没有严格的统计上的比较 ,主要是因为
所以在这些模型之间的比较更多是基于研究社区的集体经验 (统计上不是很严格)。不过,我们相信初步的描述性比较仍然可以揭示模型的机制。
我们首先注意到以下 text-davinci-002,text-davinci-003 和 ChatGPT 之间的比较:
这意味着大多数新模型的行为都是 RLHF 的产物。
那么让我们看看 RLHF 触发的能力:
有两件事情值得注意:
幕后发生的事情可能是:
到目前为止,我们已经仔细检查了沿着进化树出现的所有能力,下表总结了演化路径:
能力
OpenAI模型
训练方法
OpenAI API
OpenAI论文
近似的开源模型
GPT-3系列
语言生成 + 世界知识 + 上下文学习
GPT-3初始版本 **大部分的能力已经存在于模型中,尽管表面上看起来很弱。
语言建模
Davinci
GPT-3论文
Meta OPT
+ 遵循人类的指令 + 泛化到没有见过的任务
Instruct-GPT初始版本
指令微调
Davinci-Instruct-Beta
Instruct-GPT论文
T0论文Google FLAN论文
+ 代码理解 + 代码生成
Codex初始版本
在代码上进行训练
Code-Cushman-001
Codex论文
Salesforce CodeGen
GPT-3.5系列
++ 代码理解 ++ 代码生成 ++ 复杂推理 / 思维链 (为什么?) + 长距离的依赖 (很可能)
现在的Codex **GPT3.5系列中最强大的模型
在代码+文本上进行训练 在指令上进行微调
Code-Davinci-002 (目前免费的版本 = 2022年12月)
Codex 论文
++ 遵循人类指令 - 上下文学习 - 推理能力 ++ 零样本生成
有监督的Instruct-GPT **通过牺牲上下文学习换取零样本生成的能力
监督学习版的指令微调
Text-Davinci-002
Instruct-GPT论文, 有监督的部分
T0论文 Google FLAN论文
+ 遵循人类价值观 + 包含更多细节的生成 + 上下文学习 + 零样本生成
经过RLHF训练的Instruct-GPT **和002模型相比,和人类更加对齐,并且更少的性能损失
强化学习版的指令微调
Text-Davinci-003
Instruct-GPT论文, RLHF部分,从人类反馈中的学习摘要。
DeepMind Sparrow 论文AI2 RL4LMs
++ 遵循人类价值观 ++ 包含更多细节的生成 ++ 拒绝知识范围外的问题 (为什么?) ++ 建模对话历史的能力 -- 上下文学习
ChatGPT ** 通过牺牲上下文学习的能力换取建模对话历史的能力
使用对话数据进行强化学习指令微调
DeepMind Sparrow论文 AI2 RL4LMs
我们可以得出结论:
davinci
)Davinci-instruct-beta
)code-davinci-002
)text-davinci-002
text-davinci-003
ChatGPT
),具体来说它牺牲了上下文学习的能力,来换取:
虽然GPT-3.5是自然语言处理研究中的重要一步,但它并没有完全包含许多研究人员(包括 AI2)设想的所有理想属性。以下是GPT-3.5不具备的某些重要属性:
在这篇博文中,我们仔细检查了GPT-3.5系列的能力范围,并追溯了它们所有突现能力的来源。初代GPT-3模型通过预训练获得生成能力、世界知识和in-context learning。然后通过instruction tuning的模型分支获得了遵循指令和能泛化到没有见过的任务的能力。经过代码训练的分支模型则获得了代码理解的能力,作为代码训练的副产品,模型同时潜在地获得了复杂推理的能力。结合这两个分支,code-davinci-002似乎是具有所有强大能力的最强GPT-3.5模型。接下来通过有监督的instruction tuning和 RLHF通过牺牲模型能力换取与人类对齐,即对齐税。 RLHF 使模型能够生成更翔实和公正的答案,同时拒绝其知识范围之外的问题。
我们希望这篇文章能够帮助提供一个清晰的GPT评估图,并引发一些关于语言模型、instruction tuning和code tuning的讨论。最重要的是, 我们希望这篇文章可以作为在开源社区内复现GPT-3.5的路线图。
“因为山就在那里。”
——乔治·马洛里,珠穆朗玛峰探险先驱