关注【AI商业精选】,带你早半步认知这个复杂的世界!我们会有专业的团队为你从海量信息中精选AI商业文章。限时免费:我们开发了一款GPT聊天机器人(无需魔法、不限聊天次数),如果你希望免费领取7天试用,可以关注公众号回复【668】。AI主编?要点提炼——AI商业精选1.GPT-3.5系列的语言能力、世界知识和上下文学习能力来自于davinci预训练模型。2.GPT-3.5系列遵循指令和泛化到新任务的能力来源于大规模指令学习。3.GPT-3.5系列的对话能力和生成中立的回答能力来源于与人类的对齐,无论是监督学习方式(text-davinci-002)还是强化学习方式(text-davinci-003)。+1.code-davinci-002似乎是GPT-3.5系列中能力最强的模型,因为它综合了代码训练和指令微调的效果。以下为正文内容,Enjoy:作者:符尧 彭昊 Tushar Khot编辑:LRS 好困最近OpenAI发布的ChatGPT给人工智能领域注入了一针强心剂,其强大的能力远超自然语言处理研究者们的预期。体验过ChatGPT的用户很自然地就会提出疑问:初代GPT 3是如何进化成ChatGPT的?GPT 3.5惊人的语言能力又来自哪?最近来自艾伦人工智能研究所的研究人员撰写了一篇文章,试图剖析 ChatGPT 的突现能力(Emergent Ability),并追溯这些能力的来源,并给出了一个全面的技术路线图以说明 GPT-3.5 模型系列以及相关的大型语言模型是如何一步步进化成目前的强大形态。原文链接:https://yaofu.notion.site/GPT-3-5-360081d91ec245f29029d37b54573756作者符尧是2020年入学的爱丁堡大学博士生,硕士毕业于哥伦比亚大学,本科毕业于北京大学,目前在艾伦人工智能研究所做研究实习生。他的主要研究方向为人类语言的大规模概率生成模型。作者彭昊本科毕业于北京大学,博士毕业于华盛顿大学,目前是艾伦人工智能研究所的Young Investigator,并将于2023年8月加入伊利诺伊大学厄巴纳-香槟分校计算机科学系,担任助理教授。他的主要研究方向包括使语言 AI 更有效率和更容易理解,以及建立大规模的语言模型。作者Tushar Khot博士毕业于威斯康星-麦迪逊大学,目前是艾伦人工智能研究所的研究科学家。他的主要研究方向为结构化机器推理。一、2020 版初代 GPT-3 与大规模预训练初代GPT-3展示了三个重要能力:语言生成:遵循提示词(prompt),然后生成补全提示词的句子。这也是今天人类与语言模型最普遍的交互方式。上下文学习 (in-context learning):遵循给定任务的几个示例,然后为新的测试用例生成解决方案。很重要的一点是,GPT-3虽然是个语言模型,但它的论文几乎没有谈到「语言建模」 (language modeling) —— 作者将他们全部的写作精力都投入到了对上下文学习的愿景上,这才是 GPT-3的真正重点。世界知识:包括事实性知识 (factual knowledge) 和常识 (commonsense)。那么这些能力从何而来呢?基本上,以上三种能力都来自于大规模预训练:在有3000亿单词的语料上预训练拥有1750亿参数的模型( 训练语料的60%来自于 2016 – 2019 的 C4 + 22% 来自于 WebText2 + 16% 来自于Books + 3%来自于Wikipedia)。其中:语言生成的能力来自于语言建模的训练目标 (language modeling)。世界知识来自 3000 亿单词的训练语料库(不然还能是哪儿呢)。模型的 1750 亿参数是为了存储知识,Liang et al. (2022) 的文章进一步证明了这一点。他们的结论是,知识密集型任务的性能与模型大小息息相关。上下文学习的能力来源及为什么上下文学习可以泛化,仍然难以溯源。直觉上,这种能力可能来自于同一个任务的数据点在训练时按顺序排列在同一个 batch 中。然而,很少有人研究为什么语言模型预训练会促使上下文学习,以及为什么上下文学习的行为与微调 (fine-tuning) 如此不同。令人好奇的是,初代的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) 解锁,最终体展示出极为强大的突现能力。二、从 2020 版 GPT-3 到 2022 版 ChatGPT从最初的 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时,所有的能力都已经存在了。很可能后续的指令微调,无论是通过有监督的版本还是强化学习的版本,都会做以下事情(稍后会详细说明):指令微调不会为模型注入新的能力 —— 所有的能力都已经存在了。指令微调的作用是解锁 / 激发这些能力。这主要是因为指令微调的数据量比预训练数据量少几个数量级(基础的能力是通过预训练注入的)。指令微调将 GPT-3.5 的分化到不同的技能树。有些更擅长上下文学习,如text-davinci-003,有些更擅长对话,如ChatGPT。指令微调通过牺牲性能换取与人类的对齐(alignment)。OpenAI 的作者在他们的指令微调论文中称其为「对齐税」 (alignment tax)许多论文都报道了code-davinci-002在基准测试中实现了最佳性能(但模型不一定符合人类期望)。在code-davinci-002上进行指令微调后,模型可以生成更加符合人类期待的反馈(或者说模型与人类对齐),例如:零样本问答、生成安全和公正的对话回复、拒绝超出模型它知识范围的问题。三、Code-Davinci-002和 Text-Davinci-002,在代码上训练,在指令上微调在code-davinci-002和text-davinci-002之前,有两个中间模型,分别是 davinci-instruct-beta 和 text-davinci-001。两者在很多方面都比上述的两个-002模型差(例如,text-davinci-001 链式思维推理能力不强)。所以我们在本节中重点介绍 -002 型号。3.1 复杂推理能力的来源和泛化到新任务的能力我们关注code-davinci-002和text-davinci-002,这两兄弟是第一版的 GPT3.5 模型,一个用于代码,另一个用于文本。它们表现出了三种重要能力与初代 GPT-3 不同的能力:响应人类指令:以前,GPT-3 的输出主要训练集中常见的句子。现在的模型会针对指令 / 提示词生成更合理的答案(而不是相关但无用的句子)。泛化到没有见过的任务:当用于调整模型的指令数量超过一定的规模时,模型就可以自动在从没见过的新指令上也能生成有效的回答。这种能力对于上线部署至关重要,因为用户总会提新的问题,模型得答得出来才行。代码生成和代码理解:这个能力很显然,因为模型用代码训练过。利用思维链 (chain-of-thought) 进行复杂推理:初代 GPT3 的模型思维链推理的能力很弱甚至没有。code-davinci-002 和 text-davinci-002 是两个拥有足够强的思维链推理能力的模型。思维链推理之所以重要,是因为思维链可能是解锁突现能力和超越缩放法则 (scaling laws) 的关键。这些能力从何而来?与之前的模型相比,两个主要区别是指令微调和代码训练。具体来说:能够响应人类指令的能力是指令微调的直接产物。对没有见过的指令做出反馈的泛化能力是在指令数量超过一定程度之后自动出现的,T0、Flan 和 FlanPaLM 论文进一步证明了这一点。使用思维链进行复杂推理的能力很可能是代码训练的一个神奇的副产物。对此,我们有以下的事实作为一些支持:最初的 GPT-3 没有接受过代码训练,它不能做思维链。text-davinci-001 模型,虽然经过了指令微调,但第一版思维链论文报告说,它的它思维链推理的能力非常弱 —— 所以指令微调可能不是思维链存在的原因,代码训练才是模型能做思维链推理的最可能原因。PaLM 有 5% 的代码训练数据,可以做思维链。Codex论文中的代码数据量为 159G ,大约是初代 GPT-3 5700 亿训练数据的28%。code-davinci-002 及其后续变体可以做思维链推理。在 HELM 测试中,Liang et al. (2022) 对不同模型进行了大规模评估。他们发现了针对代码训练的模型具有很强的语言推理能力,包括 120亿参数的code-cushman-001.。我们在 AI2 的工作也表明,当配备复杂的思维链时,code-davinci-002 在 GSM8K 等重要数学基准上是目前表现最好的模型。直觉来说,面向过程的编程 (procedure-oriented programming) 跟人类逐步解决任务的过程很类似,面向对象编程 (object-oriented programming) 跟人类将复杂任务分解为多个简单任务的过程很类似。以上所有观察结果都是代码与推理能力 / 思维链 之间的相关性,但不一定是因果性。这种相关性很有趣,但现在还是一个待研究的开放性问题。目前看来,我们没有非常确凿的证据证明代码就是思维链和复杂推理的原因。此外, 代码训练另一个可能的副产品是长距离依赖,正如Peter Liu所指出:「语言中的下个词语预测通常是非常局部的,而代码通常需要更长的依赖关系来做一些事情,比如前后括号的匹配或引用远处的函数定义」。这里我想进一步补充的是:由于面向对象编程中的类继承,代码也可能有助于模型建立编码层次结构的能力。我们将对这一假设的检验留给未来的工作。另外还要注意一些细节差异:text-davinci-002 与 code-davinci-002Code-davinci-002 是基础模型,text-davinci-002 是指令微调 code-davinci-002 的产物(见 OpenAI 的文档)。它在以下数据上作了微调:(一)人工标注的指令和期待的输出;(二)由人工标注者选择的模型输出。当有上下文示例 (in-context example) 的时候, Code-davinci-002 更擅长上下文学习;当没有上下文示例 / 零样本的时候, text-davinci-002 在零样本任务完成方面表现更好。从这个意义上说,text-davinci-002 更符合人类的期待(因为对一个任务写上下文示例可能会比较麻烦)。OpenAI 不太可能故意牺牲了上下文学习的能力换取零样本能力 —— 上下文学习能力的降低更多是指令学习的一个副作用,OpenAI 管这叫对齐税。001 模型(code-cushman-001 和 text-davinci-001)v.s. 002 模型(code-davinci-002 和 text-davinci-002)001 模型主要是为了做纯代码 / 纯文本任务;002 模型则深度融合了代码训练和指令微调,代码和文本都行。Code-davinci-002 可能是第一个深度融合了代码训练和指令微调的模型。证据有:code-cushman-001 可以进行推理但在纯文本上表现不佳,text-davinci-001 在纯文本上表现不错但在推理上不大行。code-davinci-002 则可以同时做到这两点。3.2 这些能力是在预训练之后已经存在还是在之后通过微调注入?在这个阶段,我们已经确定了指令微调和代码训练的关键作用。一个重要的问题是如何进一步分析代码训练和指令微调的影响?具体来说:上述三种能力是否已经存在于初代的GPT-3中,只是通过指令和代码训练触发 / 解锁?或者这些能力在初代的 GPT-3 中并不存在,是通过指令和代码训练注入?如果答案已经在初代的 GPT-3 中,那么这些能力也应该在 OPT 中。因此,要复现这些能力,或许可以直接通过指令和代码调整 OPT。但是,code-davinci-002 也可能不是基于最初的 GPT-3 davinci,而是基于比初代 GPT-3 更大的模型。如果是这种情况,可能就没办法通过调整 OPT 来复现了。研究社区需要进一步弄清楚 OpenAI 训练了什么样的模型作为 code-davinci-002 的基础模型。我们有以下的假设和证据:code-davinci-002的基础模型可能不是初代GPT-3 davinci 模型。初代的GPT-3在数据集 C4 2016 – 2019 上训练,而 code-davinci-002 训练集则在延长到2021年才结束。因此 code-davinci-002 有可能在 C4 的 2019-2021 版本上训练。初代的 GPT-3 有一个大小为 2048 个词的上下文窗口。code-davinci-002 的上下文窗口则为 8192。GPT 系列使用绝对位置嵌入 (absolute positional embedding),直接对绝对位置嵌入进行外推而不经过训练是比较难的,并且会严重损害模型的性能(参考 Press et al., 2022)。如果 code-davinci-002 是基于初代GPT-3,那OpenAI 是如何扩展上下文窗口的?另一方面,无论基础模型是初代的 GPT-3 还是后来训练的模型, 遵循指令和零样本泛化的能力都可能已经存在于基础模型中,后来才通过指令微调来解锁 (而不是注入)。这主要是因为 OpenAI 的论文报告的指令数据量大小只有 77K,比预训练数据少了几个数量级。其他指令微调论文进一步证明了数据集大小对模型性能的对比,例如 Chung et al. (2022) 的工作中, Flan-PaLM 的指令微调仅为预训练计算的 0.4%。一般来说,指令数据会显著少于预训练数据。然而 ,模型的复杂推理能力可能是在预训练阶段通过代码数据注入。代码数据集的规模与上述指令微调的情况不同。这里的代码数据量足够大,可以占据训练数据的重要部分(例如,PaLM 有 8% 的代码训练数据)如上所述,在 code-davinci-002 之前的模型 text-davinci-001 大概没有在代码数据上面微调过,所以它的推理 / 思维链能力是非常差的,正如第一版思维链论文中所报告的那样,有时甚至比参数量更小的 code-cushman-001 还差。区分代码训练和指令微调效果的最好方法可能是比较 code-cushman-001、T5 和 FlanT5。因为它们具有相似的模型大小(110亿 和 120亿),相似的训练数据集 (C4),它们最大的区别就是有没有在代码上训练过 / 有没有做过指令微调。目前还没有这样的比较。我们把这个留给未来的研究。