本文改自我的某课程作业陈述,特别参阅了 跟李沐学AI 的系列视频,在此表明由衷感谢
鉴于本人的知识水平,此文可能有过错或不严谨之处,如有发现,敬请指正

前语

去年 12 月,ChatGPT 火遍全网,其优异的对话才干和广泛的运用才干让人惊叹。不知为何,最近它又一次广泛传播起来。秉持着蹭个热度的情绪,我把这篇文章测验发到了上。在这篇文章中,咱们将从 ChatGPT 往回看,回忆 GPT 的发展进程,看看这一神奇技能背面的变迁前史。

鉴于截至现在,ChatGPT 论文没有宣布,本文内容将包括 GPT、GPT-2、GPT-3 以及 InstructGPT。

GPT

GPT 提出于 2018 年 6 月,彼时,据大名鼎鼎的 Transformer 论文宣布正好接近一周年。在 GPT 论文的摘要里,作者指出,现在的 NLP 范畴中存在许多无符号的数据,其数量远远大于有符号的数据。因而,作者提出了 GPT,一种根据 Transformer 的言语模型,其目的是利用许多无符号数据来预练习言语模型(Generative Pre-Training),之后在方针使命上做微调,然后完结对应的使命。GPT 的中心思维是,经过 Transformer 的解码器来学习上下文信息,经过 Transformer 的解码器来生成下一个词。在练习进程中,GPT 经过最大化下一个词的概率来学习言语模型。

困难

相较于之前的模型,GPT 在练习时面临着两个首要困难:一是因为 NLP 使命的多样性,损失函数很难挑选。虽然有多种现有的方针函数可以挑选,但它们在不同的使命上的体现有很大的差异性,难以被用在这样一个更宽泛的使命中;二是不同的使命关于文本有不同的表明,如何把同一个文本表明用于终究的子使命中也成了值得考虑的事情。 关于上述的两个困难,作者均测验找到了相应的解决办法:关于方针函数,作者将其分为了两个部分,归纳后做终究成果;而关于不同使命,作者经过加入“开端/结尾/抽取”符号来把文本构形成相对统一的方式,以此使得模型可以更好的泛化。

练习

GPT 的模型是根据 Transformer 构建的,有趣的是,可能因为当时 Transformer 没有被广泛运用,作者还独自解说了为什么要挑选它而不是传统的 RNN 系列模型。作者发现,相较于 RNN,Transformer 模型所学到的内容更具有鲁棒性,可以更好的抽取出语句和段落中的语义信息。

损失函数

正如上文已提到过的,GPT 的损失函数为两部分,具体包括无监督预练习和有监督微调。

无监督的预练习

关于给定的无标示数据,咱们按词将其分为 u1,u2,…,unu_1, u_2, …, u_n,n 为总词数。咱们可以练习一个言语模型,对参数进行最大似然估计,如下:

L1(U)=∑ilog⁡P(ui∣u1,…,uk−1;)L_1(U)=∑_i\log P(u_i|u_1,…,u_{k−1};)

式中,P 为条件概率,k 为窗口的巨细。关于上面的式子,咱们给定 u1,u2,…,uk−1u_1, u_2, …, u_{k-1} 和模型,测验去猜测第 k 个词呈现的概率。把这个进程重复,并将得到的概率的对数相加(取对数后概率自身就相乘,也便是联合概率),就可以得到第一个方针函数。

具体到 GPT 上,作者运用了 Transformer 的解码器来做模型。相较于编码器可以看到一切的文本,解码器因为 Mask 的存在,导致仅能看到猜测词及之前的输入,与文本猜测的使命相契合。

有监督的微调

预练习之后,咱们还需要针对特定使命做微调。在这里,给定文本序列 x1,x2,…,xmx^1,x^2,…,x^m 和标签 yy ,咱们结构:

P(y∣x1,…,xm)=softmax(hlmWy)L2(C)=∑x,ylog⁡P(y∣x1,..,xm)P(y|x^1,…,x^m)=softmax(h_l^mW_y) \\ L_2(C)=\sum\limits_{x,y}\log P(y|x^1,..,x^m)

咱们把 x1,x2,…,xmx^1,x^2,…,x^m 输入 Transformer 模型,得到最上层终究一个时刻的输出 hlmh_l^m ,将其经过 Softmax 层(参数为 WyW_y )进行分类,终究用穿插熵核算损失,而这也等价于最大似然 L2L_2

作者说,虽然咱们其实只关怀分类精度,不过假如把 L1L_1 也放进来,作用也很好。这也能前进练习速度和模型的泛化才干。因而,作者运用了 Multi-Task Learning,在微调的时分也考虑预练习的损失函数,让它一起最大似然 L1 和 L2。这便是终究的方针函数:

L3(C)=L2(C)+∗L1(C)L_3(C)=L_2(C)+\lambda*L_1(C)

这里运用的 L1 还是之前言语模型的损失,不过运用的数据不是前面无监督的数据 U ,而是运用当前使命的数据 C ,而且只运用其间的 X ,而不需要标签 y。

不同使命的统一表明

损失函数有了,接下来便是第二个困难:把不同子使命的输入表明为相同的方式。作者很奇妙的经过插入分隔符完结了这一使命,如下图所示:

从 ChatGPT 往回看:GPT 们

上图给出了 NLP 使命中常见的四种方式:分类、蕴含、核算相似度和多选一,并展示了如何把它们构形成相似的方式。比方关于核算相似度的使命,输入就被表明为两个对称的序列,别离经过 Transformer 后将成果相和送入到线性层中,得到终究的输出成果。

试验

数据集

GPT 练习所用的数据集被称为 BooksCorpus,这是一个包括 7000 篇未宣布的、不同范畴的书籍构成的数据集。

模型

GPT 运用了 12 层的 Transformer 的解码器,每一层的维度为 768。

成果

GPT 在推理、问题回答、语义相似度、分类等多种使命上均取得了很好的成果,在多个数据集的多项成果上均取得了最高的精度。

作者还研讨了传递不同数量的无监督层到后面的微调层对终究成果的影响,并在终究测验讨论了 Zero-Shot 下模型的体现。这也引出了之后的 GPT-2。

GPT-2

GPT-2 发布于 2019 年 2 月,而夹在它与 GPT 之间的,还有一项重要的成果:BERT。有趣的是,假如看 BERTBASEBERT_{BASE} 模型的结构,会发现它与 GPT 有几分相像:解码器换成了编码器,而层数和维度均与 GPT 设置的相同;而关于更大的 BERTLARGEBERT_{LARGE} 模型,它的模型层数相关于 BERTBASEBERT_{BASE} 翻倍、维度变成了它的 1.3 倍,终究总参数到达了前者的约 3 倍——而它的练习数据集则到达了 GPT 的 4 倍。在这样“大力出奇观”的比较下,BERT 取得了超过了 GPT 的成果,这也让 GPT-2 在这一方面更进一步。

改变

相较于 GPT,GPT-2 首要有下面的改变:

  • 大: 练习所用的数据集和模型都更大了。
  • Zero-Shot: GPT-2 对下流使命运用 Zero-Shot,而不是 GPT 的有监督学习
  • Prompt: 关于样本的处理不再运用分隔符来统一表明,而是直接运用相似自然言语方式,即 Prompt

下面别离从这三方面做讲述。

数据集

谈到数据集,作者说,前面的研讨所运用的材料包括新闻、维基百科、小说等,而要结构更大的数据集,则需要向别的的方向想办法。在这里,作者运用 Common Crawl 项目所爬取的网站,并且依据 Reddit(新闻聚合网页,由用户提交并由别人经过 “karma” 的方式来判断内容的优质程度)上 “karma” 大于等于 3 的标准进行爬取,终究得到了大约 4500 万个网页,抽取它们的内容得到终究的数据集。终究,数据集大约包括了 800 万个文本,巨细到达了 40 GB。

模型

GPT-2 的模型在结构上基本相似于 GPT,不过在一些小的地方做了更改,添加了相似于残差网络中的 Layer Normalization。相较于前一代,GPT-2 的首要差异就在于模型更大了。作者练习的 4 种模型如下表:

从 ChatGPT 往回看:GPT 们

可以看到,最大的模型中层数现已到达了 48 层,宽度也到了 1600,总参数更是到达了 15 亿之多。

Zero-Shot

之前的模型(比方 GPT)对下流使命需要运用有标示数据集做微调,这带来了两个问题:一是对不同的下流使命,重新练习不可短少;二是有标号的数据集搜集起来较无标示的会难许多。GPT-2 在下流使命中直接去掉了微调的进程,而是运用预练习模型来完结使命,并且在多项数据上获得了和 GPT、BERT 等近似的成果。

Prompt

因为采用了 Zero-Shot 的办法,GPT-2 并没有像它的前一代一样,运用分隔符统一表明方式——后者因为会呈现模型从未见过的符号(分隔符),可能会影响模型的作用。相反,作者运用了相似自然言语的方式表明使命,比方,关于一个翻译使命,它可能被表明为:

translate to Chinese, English text, Chinese text

上述例子中的最前面部分(translate to Chinese)即表明此使命的大约提示,在后面的文献中被称为 Prompt。

作者也花了部分篇幅评论这样的 Prompt 有用的原因。他说,一是假如模型满足强壮,它应该可以了解 Prompt 并正确给出成果;二是这样的表明自身也在数据会集有相似的例子,模型可以学习到。

试验

论文对 GPT-2 进行了许多不分方向的试验,包括 Children’s Book Test、LAMBADA、Winograd Schema Challenge、Reading Comprehension、Summarization、Translation 等多种子使命。成果表明了 GPT-2 优异的通用性,在多项测验中均取得了杰出的成果。在附录中,论文还给出了许多样例,明晰的展示出 GPT-2 生成的作用。

评论

虽然 GPT-2 在许多使命上体现不俗,作者也指出,它在许多其他使命上也仍有很大的前进空间,Zero-Shot 的实践体现还不足以用到实践的生产中。即便在一些他们现已评估过的项目中,GPT-2 也只有在特定情况下才干到达基线水平。

Zero-Shot 的办法虽然展示了 GPT-2 的基础水平,但倘若加上微调,它的天花板现在仍未可知。作者在终究说,他们预备讨论在某些数据集上微调后的体现,以期解决一些 BERT 中存在着的问题。而下一步,便是 GPT-3。

GPT-3

运用 Zero-Shot 的 GPT-2 在有用性上略有欠缺,而 GPT-3 则又再次转回了相似 GPT 的战略,只是运用 Few-Shot ,即给样本但控制数量。一起,GPT-3 延续了“做大做强”的情绪,再一次拉高了模型的参数,到达了最大 1750 亿的程度;也因为这样巨大的参数数量,GPT-3 在微调时并不更新模型参数(也便是不核算梯度),以下降整个练习进程的杂乱度。

从成果来看,GPT-3 在许多 NLP 数据集上都取得了优异的成果,展现出了强壮的才干;它乃至能用来编撰一些虚伪的文章,并使得人类都难以差异它们是由 AI 还是真人完结。

问题

论文列举了三点当前 NLP 模型中遇到的问题:一是许多范畴难以搜集许多有标示的数据;二是较大的模型不必定就在某些规模外数据集上体现好,它们之所以在某些使命上体现得比较好,有可能是因为练习的数据集与测验集有必定重合性;三是人类并不需要许多的有监督数据来学习,一些简短的提示和示例就可能到达作用。

Few-Shot

针对上面的问题,GPT-3 运用了 Few-Shot 的模式。论文中有一张图很好地解说了 Few-Shot、One Shot 和 Zero-Shot 间的差异,如下:

从 ChatGPT 往回看:GPT 们

如上图,Zero-Shot 在使命描述和 Prompt 之间没有任何样例,而 One-Shot 有一条,Few-Shot 有多条(但并不许多)。

模型

GPT-3 的基本结构相似于 GPT-2,但将其做了相似于 Sparse Transformer 的改动。相似于 GPT-2,GPT-3 也有多个版别的模型,它们有着不同的层数和总参数。如下表所示:

从 ChatGPT 往回看:GPT 们

如上,GPT-3 的模型从 12 层一直到最大的 96 层,模型深度从 768 到 12288,总参数更是从 1.25 亿飙升至 1750 亿,足足比 GPT-2 大了 100 倍!

练习数据

因为模型的巨大,GPT-3 的数据集也相应的十分巨大。作者在 Common Crawl 数据的基础上,首要过滤出和另一个高质量数据集(也便是 GPT-2 过滤过的数据集)相似的数据,并将相似度较高的文章做去重,终究再加上之前已有的高质量数据集,得到了终究的数据集。

试验

GPT-3 的论文运用了许多篇幅描述不同试验和成果,简而言之,在许多使命上,GPT-3 取得了高于其他一切模型的成果,乃至在某些成果上现已十分接近人类。相似于 GPT-2,模型越大,其各项成果就越好。作者还展示了一些由 GPT-3 生成的文本,在阅读时现已能明显的感触到其流通度与可读性。

现实上,因为 GPT-3 的超卓水平,在其敞开 API 后,依托其发生的运用就层出不穷,从作诗、问答、写代码,GPT-3 带来了大规模的运用开发与社会评论度。我也是从这时分开端了解到 GPT 系列的存在的。

局限

在文章终究,作者也列出了不少 GPT-3 存在的局限性。部分如下所示:

  • 长文本生成较弱,上下文无法做到连续
  • 猜测词时权重均衡,即关于不重要的助词和重要的关键词没法做差异
  • 仅学习文本材料,短少视频材料和真实的物理交互
  • 低效。GPT-3 的预练习文本远远大于人类学习所需要的样本
  • 无法解说性

终究,作者也评论了更深远的影响。作者指出,GPT-3 可能被用于生成虚伪消息、垃圾邮件、论文造价等非法行为,而且因为语料库中材料的问题,GPT-3 在比方性别、种族、地域等问题上会有必定程度的歧视。终究,因为 GPT-3 巨大的模型,其练习带来的能耗问题也不容小觑。

InstructGPT

正如上面现已提到的,单纯把模型变大并不能让它们真实契合用户的预期,模型可能会生成虚伪、有毒或许无用的成果。因而,InstructGPT 运用人类的反应来使模型和人类的目的对齐。在终究成果上,作者发现,在人类评判下,13 亿参数的 InstructGPT 乃至要好于 1750 亿参数的 GPT-3。它生成的成果更真实可行、有毒成果更少,并且在公开 NLP 数据集上也没有性能上的明显下降。

练习进程

InstructGPT 的练习大约分为三个阶段,如下所示:

从 ChatGPT 往回看:GPT 们

过程一

在问题(Prompt)数据会集随机抽取一条(比方“向一个 6 岁小孩解说什么是 NLP”),让标示员针对这一问题写下答案,并将得到的数据用于 GPT-3 的微调傍边,得到模型 SFT。

过程二

关于一个 Prompt,让模型生成多个答案,然后让标示员针对生成的答案由好到坏排序,运用这些数据练习一个模型 RM,使得它可以对它们打分,并且打分后的排序契合人类评判的排序。

具体来说,RM 模型的结构是在 GPT-3 的基础上去掉终究的 Unembedding Layer,并加上线性层得到的,运用的模型参数量为 60 亿(削减核算量,而且作者发现 1750 亿的模型不稳定)。

为了使排序正确,RM 运用 Pairwise Ranking Loss 作为损失函数,并运用 K = 9 进行两两比较,总共 36 对。

过程三

微调模型 SFT,当它生成新的答案时,运用 RM 模型对其打分,成果会用于优化 STF 的参数,使得终究的得分升高。

数据集

练习初始模型时用到的 Prompt 来自三个方面:标示人员编写的恣意使命、标示人员编写的指令和多个问答对、用户希冀的运用场景相关 Prompt。在开端练习出第一个 InstructGPT 后,OpenAI 将其放在了网页的 Playground 上,搜集用户的问题并按必定规矩做筛选,得到了更多的 Prompt。

搜集到的 Prompt 被分为了 3 个数据集,别离用于练习 SFT、RM 和 PPO,练习集巨细别离为 13k、33k 和 31k。

成果

总的来说,InstructGPT 的成果在许多方面优于 GPT-3,具体如下:

  • 研讨人员明显地倾向于 InstructGPT 生成的文本
  • InstructGPT 在成果的真实性上好于 GPT-3
  • InstructGPT 相较 GPT-3 更不简略输出有毒的成果,但是在偏见上没有提升
  • 未参加数据标示的人员也以为 InstructGPT 的成果更好
  • InstructGPT 显示出了杰出的泛化性,比方在“代码解说”这一使命上体现杰出

不过,InstructGPT 仍然会犯一些简略的过错,比方过错执行指令、假造现实、给出不确定的答案等。

局限

论文作者也指出了一些模型的局限性。首要是办法上,因为整个数据的标示人员为 OpenAI 协作的 40 名人员,和真实的用户上还是存在必定差异(比方 90% 以上的标示言语为英文,因而在其他言语上可能就相对较弱);其次是模型也并非彻底的与人类意愿对齐、也可能会发生有毒的或许过错的数据,在某些问题上还持有歧视的情绪。

总结

总的来说,GPT 作为一系列模型,在 Transformer 的基础上做改进,经过不同的微调方式和巨大的数据集,逐渐发展壮大,获得了愈来愈令人惊讶的成果。GPT 1 -> 3 的发展让人感触到了“做大做强”的暴力美学,而 InstructGPT 又让我们看到了“质大于量”的作用。现在,ChatGPT 蓬勃发展、火速出圈,微软乃至现已开端将 GPT-4 集成于 Bing 中,为下一代搜索引擎探出了新的一步。作为一名一般的 ChatGPT 用户,一名深受 Copilot 协助的 Coder,我对 GPT 的未来充溢期待,更对 AI 的未来充溢期待。从 AlexNet 到现在,短短 10 年,深度学习的技能已是一日千里;我很猎奇,下一个十年后,这些神经网络编织成的杂乱模型会结构出怎样令人惊奇的旷世之作。

参阅材料

[1] Radford A, Narasimhan K, Salimans T, et al. Improving language understanding by generative pre-training[J]. 2018.

[2] Radford A, Wu J, Child R, et al. Language models are unsupervised multitask learners[J]. OpenAI blog, 2019, 1(8): 9.

[3] Brown T B , Mann B , Ryder N , et al. Language Models are Few-Shot Learners[J]. 2020.

[4] Ouyang L, Wu J, Jiang X, et al. Training language models to follow instructions with human feedback[J]. arXiv preprint arXiv:2203.02155, 2022.

上述四篇即为 GPT~InstrcutGPT 对应论文

[5] HeptaAI. ChatGPT内核:InstructGPT,根据反应指令的PPO强化学习[EB/OL]. (2022-12-07)[2023-01-15]. zhuanlan.zhihu.com/p/589747432.

[6] 跟李沐学AI. 【视频合集】AI论文精读[EB/OL]. (2023-01-12)[2023-01-15]. space.bilibili.com/1567748478/….

[7] 中森. GPT系列论文阅读笔记[EB/OL]. (2022-02-08)[2023-01-15]. zhuanlan.zhihu.com/p/412351920.

[8] yimenren. GPT-1,GPT-2和GPT-3发展进程及中心思维,GTP-4展望[EB/OL]. (2022-01-03)[2023-01-15]. blog.csdn.net/yimenren/ar….