第10.14节 GPT-2与GPT-3模型

第10_14节 GPT-2与GPT-3模型

各位朋友大家好,欢迎来到月来客栈,我是掌柜空字符。

围观掌柜朋友圈每日干货分享,来不及发公众号的内容都在这里,更有客栈礼包(内含多个PDF学习资源和ChatGPT使用教程)等你来拿!

扫码加掌柜本人微信

第10_14节 GPT-2与GPT-3模型

本期推送内容目录如下,如果本期内容对你有所帮助,欢迎点赞、转发支持掌柜!

  • 10.14 GPT-2与GPT-3模型
    • 10.14.1 GPT-2动机
    • 10.14.2 GPT-2结构
    • 10.14.3 GPT-2使用
    • 10.14.4 GPT-3结构
    • 10.14.5 GPT-3的局限性与安全性
    • 10.14.6 小结
  • 引用

10.14 GPT-2与GPT-3模型

10.13节内容中我们详细介绍了GPT-1模型的相关原理。尽管它是基于Transformer中解码器来进行构建的,但是从整个模型的构建流程来看GPT-1似乎仍旧将它当做是“编码器”在使用,并没有用到解码独有的序列生成能力。在本节内容中,我们将从另外一个视角来介绍GPT-1的迭代版本GPT-2模型。

10.14.1 GPT-2动机

传统的自然语言模型在面对不同的任务场景时总是需要重新设计网络结构,例如问题回答、机器翻译等。尽管在GPT-1中基于预训练模型的微调方法已经极大限度上减少了对网络结构的修改,但是在不同的下游任务中依旧需要在原有网络的基础上再加入一个线性层。因此,在引入了新的模型参数后还要通过少量标注数据来训练这部分模型参数。

基于这样的动机,2019年2月OpenAI团队在GPT-1模型的基础之上提出了GPT-2模型[1] [2]。GPT-2模型最大的一个改进点就是没有再针对每个下游任务进行有监督微调,而是使用同一个预训练语言模型依靠它自身学习到的生成能力来完成不同的下游任务。从一定程度上看,这也标志着自然语言处理领域中一个新流派的出现。尽管最后GPP-2在各项下游任务中的表现还远不如现有的有监督模型,但是OpenAI研究发现随着模型规模的扩大其表现结果有还有明显的增长趋势,而这也为后续的GPT-3埋下了伏笔。

10.14.2 GPT-2结构

从整体上看GPT-2模型依旧延续了GPT-1中的网络结构,仅仅只是对各个模块间的归一化形式和残差连接层里的权重参数缩放进行了修改,同时上下文窗口也从512增加到了1024的长度。GPT-2的训练方法也同GPT-1一样,都是通过以给定前个词来预测第个词的形式来进行建模求解得到权重参数。尽管这一目标函数看似简单,但由于训练数据集的多样性——它天然地包含有不同领域、不同场景下的语义环境——使得训练得到的模型在生成能力上同样具有这样的多样性。

在GPT-2中,模型的改进主要体现在模型规模和训练数据质与量的扩大上。一方面,为了提高模型的生成能力以适应不同的下游任务,GPT-2设计了4种规格的模型结构,其中具有48个解码层的模型更是拥有超过15亿参数,是GPT-1的10倍。

表10-1 GPT-2模型参数规模(原始论文中作者参数量计算有误,已在[2]中进行了修正)

第10_14节 GPT-2与GPT-3模型

注:M表示百万

如表10-1所示是GPT-2中4种不同规格模型的配置情况,其中最小的12层用于从模型规模上同GPT-1进行对比,而最大的48层则是用来探索模型的生成能力。

学习一个算法就好比遍历一棵大树,算法越复杂对应的枝叶也就越繁茂。掌柜依据自身经历将一个算法的学习归结成了5个层次(3个阶段),始终秉持“先学会用,再探究为什么”的理念来进行写作。本专栏将使你轻松步入机器学习的大门,从原理到使用再到实现,都能让你轻松掌握!代码仓库:https://github.com/moon-hotel/MachineLearningWithMe

第10_14节 GPT-2与GPT-3模型

另一方面,为了能够训练得到更大规模的GPT-2模型,其对应的数据集也相应扩大了近10倍。在训练GPT-1中所使用到的数据集是包含有超过7000本未出版的电子书籍BookCorpus数据集,总大小接近5G。在GPT-2的训练过程中为了使得生成内容更加准确和多样,模型使用了来自Reddit中的4500万个经过人工筛选过的网页文本,经去重和清理后构建得到了一个近800万篇文档总共近40G的高质量数据集WebText。

在GPT-2的工作中之所以如此重视训练数据的质量是因为作者认为,高质量数据集内部本身就可能存在各个任务场景下的自然语言描述,因此如果将这些数据用于训练最终得到的模型便同样能够生成类似的文本内容。

In a now-deleted post from Aug. 16, Soheil Eid, Tory candidate in the riding of Joliette, wrote in French: ”Mentez mentez, il en restera toujours quelque chose,” which translates as,”Lie lie and something will always remain.

If listened carefully at 29:55, a conversation can be heard between two guys in French: “-Comment on fait pour aller de l’autre cote ́? -Quel autre cote ́?”, which means “- How do you get to the other side? - What side?”.

例如对于上述作者从数据集中所摘录出的2个示例来说,每个示例中均含有从法语到英语的翻译过程,并且整个文本的表述方式也就是我们交流时的自然表达形式。因此,GPT-2模型尝试从数据的角度来提高模型的生成能力。最后,在不同下游任务的推理场景中,我们只需要给定相应的提示词(Prompt)便可以生成对应的输出结果。例如在英语到法语的翻译任务中,我们可以通过构建类似“英语1 = 法语1 \n 英语2 = ”这样的输入来完成英语2到法语的翻译任务。不过遗憾的是我们按照论文中所描述的方法经过反复尝试后依旧没能得到预期的结果,各位读者可自行试验。

10.14.3 GPT-2使用

出于担心大型语言模型被用来大规模生成欺骗性、偏见或辱骂性的语言,在GPT-2发布之初OpenAI只公布了最小的124M版本预训练模型。不过随着时间的推移9个月以后[5]OpenAI便公布了最大的1558M版本预训练模型,我们可以通过[2]中的方式来下载与使用。此处建议使用本书所注释的版本[6],其依旧克隆自[2]只是对部分代码进行了注释同时补充了环境按照的依赖文件。

首先进入该项目仓库并将其克隆到本地;然后创建一个Python版本为3.6的环境(该项目只支持这一版本),并依照项目中的requirements.txt安装整个运行环境;接着通过如下命令来下载模型文件:

1 python download_model.py 124

其中最后一个参数表示指定的模型,可选的有124M、355M、774M和1558M,其中124M大小约497M,1558MB大小约为4.9GB。

上述代码执行完毕后会在当前目录生成一个models目录,里面会以模型名生成对应的模型目录。例如上面会生成一个名为124M的目录,目录里面将会有7个模型文件,其中model.ckpt.data-00000-of-00001便是对应的模型权重文件。这里需要注意的是,由于网络原因运行代码时模型可能会下载失败,因此我们可以将download_model.py文件中第18行里model.ckpt.data-00000-of-00001给去掉,然后手动在浏览器中通过如下链接[7]下载该模型文件,并放到对应的模型目录中。

上述工作准备完毕后,我们便可以通过如下方式来使用GPT-2根据我们的输入生成对应的文本:

1 python src/interactive_conditional_samples.py

# 输入
In a shocking finding, scientist discovered a herd of unicorns living in a remote, previously unexplored valley, in the Andes Mountains. Even more surprising to the researchers was the fact that the unicorns spoke perfect English.
# 输出:
Having studied the experiment since the 2015, Sivary-Dylan looked for clues as to why those mighty unicorns are immodest.
But to her dismay, there weren't even that many.
"What'
s surprising is the general pattern of language," Sivary-Dylan told Gizmodo. "We've known about the deluge and around 6,000 instances of awarding money to orphan cheering wildlife groups for their Galaxy baby." ...

这里需要注意的是,interactive_conditional_samples.py中默认使用的是124M这个模型,如果换成1558M则需要将其中interact_model()函数中的model_name参数指定为'1558M'

从上述生成结果可以看出,尽管GPT-2看似根据提示生成了对应的文本序列,但是很大程度上它更像是在自说自话,整个上下文并没有太强的逻辑关系。因此尽管GPT-2模型的动机非常新颖,试图完全的去掉下游模型微调的过程,但是从模型的表现结果来看它并不十分出众。不过尽管如此,它依旧在这一方向迈出了重要的一步,并且作者通过实验发现随着模型规模的扩大模型在一些任务上的表现还有明显的增长趋势,而这一发现也为GPT-3的诞生提供了动机。

道不贱卖,师不顺路。为你认可的知识付费,欢迎订阅本专栏阅读近百篇优质内容!

10.14.4 GPT-3结构

返回:第10.14节 GPT-2与GPT-3模型

本文由“公众号文章抓取器”生成,请忽略上文所有联系方式或指引式信息。有问题可以联系:五人工作室,官网:www.Wuren.Work,QQ微信同号1976.424.585