大家好,我是半虹,这篇文章来讲 GPT\text{GPT} (GenerativePre-Training\textbf{G}\text{enerative}\ \textbf{P}\text{re-}\textbf{T}\text{raining})
实际上,GPT\text{GPT} 包括一系列论文,具体有 :
- GPT-1\text{GPT-1}:ImprovingLanguageUnderstandingbyGenerativePre-Training\text{Improving Language Understanding by Generative Pre-Training}
- GPT-2\text{GPT-2}:LanguageModelsareUnsupervisedMultitaskLearners\text{Language Models are Unsupervised Multitask Learners}
- GPT-3\text{GPT-3}:LanguageModelsareFew-ShotLearners\text{Language Models are Few-Shot Learners}
0 概述
GPT\text{GPT} 本质上便是一个预练习言语模型,其用大规划无标示语料、以自回归的方式进行预练习
GPT\text{GPT} 经过不断添加模型参数以及预练习语料规划进行更新迭代,并终究取得令人惊艳的作用
值得一提的是,GPT\text{GPT} 的模型参数以及预练习语料规划非常夸大,咱们来看一组数据就会清楚
注意量级换算,K(Kilo)=103,M(Mega)=106,G(Giga)=109,T(Tera)=1012\text{K}(\text{Kilo}) = 10^3,\ \text{M}(\text{Mega}) = 10^6,\ \text{G}(\text{Giga}) = 10^9,\ \text{T}(\text{Tera}) = 10^{12}
-
GPT-1
模型参数量为117M
,预练习语料有5GB
-
GPT-2
模型参数量为1.5G
,预练习语料有40GB
-
GPT-3
模型参数量为175G
,预练习语料有45TB
终究再来简略回忆一下,GPT\text{GPT} 系列模型及其相关模型的发展进程
20172017 年 0606 月,Transformer\text{Transformer} 横空出世,在自然言语处理范畴中掀起轩然大波
20182018 年 0606 月,GPT-1\text{GPT-1} 正式发布,其用 Transformer\text{Transformer} 的解码器练习单向言语模型,引领预练习模型
20182018 年 1010 月,BERT\text{BERT} 随之发布,其用 Transformer\text{Transformer} 的编码器练习掩码言语模型,作用超越 GPT-1\text{GPT-1}
20192019 年 0202 月,GPT-2\text{GPT-2} 沿着原有路线,添加更多数据,扩展更大模型,测验处理零样本使命
20202020 年 0505 月,GPT-3\text{GPT-3} 是暴力出奇观,深度挖掘预练习言语模型潜力,且终究在少样本使命体现优异
下面咱们将会逐个介绍,GPT\text{GPT} 系列模型的具体内容及其细节
1 介绍 GPT-1
关键词:无标示文本、自监督学习
1.1 动机
在自然言语处理范畴,存在各式各样的使命,这些使命都需求许多的标示数据进行练习才有不错的模型作用
但针对特定使命的高质量标示数据难以获得,一般都需求花费许多的人力物力才干得到数量不多的有用数据
另一方面,在现在的互联网上有海量的文本,但这些文本是没有针对特定使命做标示的,被称为无标示文本
所以很难将这些文本应用到特定使命的练习,这未免有些遗憾和浪费
基于此情,GPT-1\text{GPT-1} 将预练习和微调的范式引进到自然言语处理范畴,使模型可以运用海量的无标示文本
具体来说便是先让模型在大规划无标示数据上针对通用使命进行练习,使模型具有了解言语的根底才能
然后将预练习好的模型在特定的有标示数据上针对下流使命进行微调,使模型可以习气不同的下流使命
其间最重要的是规划预练习使命让模型可以运用无标示文本进行练习,这联系到预练习模型根底才能的强弱
怎样运用无标示文本呢?GPT-1\text{GPT-1} 的主意便是做言语模型,简略来说便是依据之前的词语猜测下一个词语
这是一个自监督的学习,因而不需求对文本做特别的标示,只需求把要猜测的词语掩盖就行
1.2 模型结构
事实上,GPT-1\text{GPT-1} 可以看作是 Transformer\text{Transformer} 的解码器,然后在此根底上去掉解码层中的多头外注意力机制
解码器由若干个解码层堆叠而成,而且模型中上一个解码层的输出会作为下一个解码层的输入
解码层包括带掩码的多头自注意力机制和前馈神经网络两个子模块,每个子模块后有残差衔接和层正则化
因为咱们在之前的文章中已经具体介绍过各个模块细节,所以这儿就不再重复了,整体的结构如下图所示
具体来说,GPT-1\text{GPT-1} 包括 1212 个改过的 Transformer\text{Transformer} 的解码层,这些解码层会堆叠起来
终究一个解码层的输出表明会经过线性猜测层得到要猜测单词的概率散布
而第一个解码层的输入表明由词元嵌入和方位嵌入相加得到,这儿的嵌入是可学习向量,要经过数据练习
输入表明的示意图如下所示:
1.3 模型练习
GPT-1\text{GPT-1} 的思维是先在无标示语料上预练习言语模型,再用预练习模型在有标示语料对下流使命进行微调
GPT-1\text{GPT-1} 首先要处理的问题是:怎样预练习言语模型
注意这儿的言语模型是单向的,简略来说便是要模型依据之前若干个词语猜测未来下一个词语是什么
形式化表达如下:
给定一个无标示语料库 U\mathcal{U},其间包括文本序列 {u1,…,un}\{u_1, …, u_n\}
言语模型的优化目标是最大化下面的似然函数,其间 kk 表明上下文窗口巨细
GPT-1\text{GPT-1} 面临的下一个问题是:怎样对下流使命微调
所谓微调便是用预练习模型在有标示的数据集对特定下流使命继续练习,使得模型可以习气不同下流使命
形式化表达如下:
给定一个有标示数据集 C\mathcal{C},其间每个样本包括文本序列 {x1,…,xm}\{x^1,…,x^m\} 和对应的标签 yy
微调模型的优化目标是最大化下面的似然函数
具体来说,咱们会将预练习模型用于初始化,并在此根底上添加一个额定的线性猜测层用于标签猜测
输入序列经过预练习模型后,取序列终究一个单词在模型终究一层输出作为整个序列的特征向量表明
终究这个特征向量经过新增的线性猜测层后,就能得到猜测标签的概率散布
在对下流使命进行微调时,将言语模型作为辅助目标,有利于加速模型收敛,而且提高模型的泛化性
因而,终究微调目标如下,其间 \lambda 为使命的权重系数
上述介绍的微调进程可直接用于分类使命,以此类推,咱们可以拓展出怎么处理其他类型的下流使命
中心是将不同类型下流使命的输入都转化为文本序列,下面是几个比如:
-
文本分类:给定单个语句,判别这个语句的类别
处理方法:将这个语句直接输入预练习模型得到特征向量,然后经过猜测层做分类
-
文本蕴涵:给定两个语句,判别两个语句的联系
处理方法:将两个语句拼接输入预练习模型得到特征向量,然后经过猜测层做分类
-
语义类似:给定两个语句,核算两个语句类似度
处理方法:将两个语句前和后两次拼接输入预练习模型得到两个特征向量
将两个特征向量逐元素相加后经过猜测层核算类似度得分
-
多项挑选:给定问题和多个选项,挑选一个作为正确答案
处理方法:将问题和多个选项别离拼接输入预练习模型得到多个特征向量
将多个特征向量别离经过猜测层核算匹配得分后选最大值作为答案
文本序列在输入模型微调前都需求添加特别符号,GPT-1\text{GPT-1} 中运用的特别符号如下:
- 开始符号
<s>
添加在输入文本开头 - 结束符号
<e>
添加在输入文本结束 - 切割符号
$
添加在拼接文本之间
下面是示意图:
2 介绍 GPT-2
关键词:零样本使命、多使命学习
2.1 动机
GPT-1\text{GPT-1} 已具有很强壮的才能,但仍存在着一些缺乏,其间最重要的一点是:下流使命不能泛化
GPT-1\text{GPT-1} 面临不同的下流使命,都需求从头进行练习,这要求各种下流使命要有对应的标示数据
从另一方面来说,GPT-1\text{GPT-1} 呈现后不久,BERT\text{BERT} 以更多的数据、更大的模型全面超越了 GPT-1\text{GPT-1}
而为了进行反击,GPT-2\text{GPT-2} 添加了数据和模型规划,并测验处理更困难的零样本使命 (zero-shot\text{zero-shot})
2.2 模型结构
GPT-2\text{GPT-2} 的模型结构与之前相比根本没变,仅仅做了一些纤细的修正
归纳来说,层正则化被移动到子模块之前,还有一个新的层正则化被添加到终究的自注意力模块之后
GPT-2\text{GPT-2} 并没有对模型结构有太大的创新,其最重要的改动在于运用了更大的数据和更多的模型参数
具体来说,作者规划了以下几种模型巨细:
模型总参数 | 解码层数量 | 隐藏层维度 | 备注 |
---|---|---|---|
117M117\ \text{M} | 1212 | 768768 | 与 BERTBASE\text{BERT}_\text{BASE}、GPT-1\text{GPT-1} 对标 |
345M345\ \text{M} | 2424 | 10241024 | 与 BERTLARGE\text{BERT}_\text{LARGE} 对标 |
762M762\ \text{M} | 3636 | 12801280 | 无 |
1542M1542\ \text{M} | 4848 | 16001600 | 称 GPT-2\text{GPT-2} |
2.3 模型练习
GPT-2\text{GPT-2} 的思维是在大规划无标示语料上预练习言语模型,然后直接把预练习模型应用到各种下流使命
这样的使命设定可以进一步引申为零样本使命
所谓零样本使命便是说预练习模型对下流使命进行猜测时,不供给下流使命的练习样本,而是直接开始猜测
这意味着预练习模型需求有泛化性,不用经过微调就可以应对各种下流使命
怎样使得预练习模型具有此才能呢?要从预练习进程入手,作者引进多使命学习的概念
所谓多使命学习便是说练习模型时,用多个使命的数据集,而且保证模型在各个使命的数据集上都可以收敛
说回模型,GPT-2\text{GPT-2} 还是将单向言语模型作为预练习使命,其练习方式还是和 GPT-1\text{GPT-1} 相同
不同在于,GPT-2\text{GPT-2} 会在更大型更丰富的语料上进行练习,可以以为这些语料隐式包括翻译、问答等使命
与之对应,GPT-2\text{GPT-2} 的模型参数也添加了许多,使其能拥有更强壮的学习才能
作者以为,当言语模型的容量足够大且练习语料的数量足够多时,经过无监督练习就能掩盖所有有监督使命
换句话说,所有有监督使命都是言语模型的子集,直观的解释是:理想的言语模型能真实了解言语
终究还有一点,预练习模型进行猜测时,是不能呈现特别符号的,因为模型无法了解预练习时没见过的东西
模型在猜测时的输入应该是纯自然言语,用于明确待做使命类型,这在后来的文献中称为提示 ( prompt\text{prompt} )
下面是示意图,GPT-2\text{GPT-2} 所做的工作是:依据提示和输入来续写,然后完结各种下流使命
3 介绍 GPT-3
关键词:少样本使命、上下文学习
3.1 动机
从 GPT-2\text{GPT-2} 的试验结果能看到:跟着模型参数和练习语料的添加,模型的功能会不断提升
故 GPT-3\text{GPT-3} 继续沿着原有路途,进一步添加模型参数和练习语料,在大规划预练习模型上越走越远
另一方面,GPT-3\text{GPT-3} 不再寻求零样本使命,而是转为少样本使命 (few-shot\text{few-shot})
这与人类的习气愈加类似,具有一定常识的人类,在给出若干个比如后,就可以学会某种才能
3.2 模型结构
GPT-3\text{GPT-3} 的模型结构与之前相比根本没变, 仅仅做了一些纤细的修正
归纳来说,便是用 SparseTransformer\text{Sparse Transformer} 中提出的稀疏自注意力机制代替原有的自注意力机制
GPT-3\text{GPT-3} 也没有对模型结构有太大的创新,最重要的改动在于运用了更大的数据和更多的模型参数
具体来说,作者规划了以下几种模型巨细:
称号 | 模型总参数 | 解码层数量 | 隐藏层维度 |
---|---|---|---|
GPT-3Small\text{GPT-3 Small} | 125M125\ \text{M} | 1212 | 768768 |
GPT-3Medium\text{GPT-3 Medium} | 350M350\ \text{M} | 2424 | 10241024 |
GPT-3Large\text{GPT-3 Large} | 760M760\ \text{M} | 2424 | 15361536 |
GPT-3XL\text{GPT-3 XL} | 1.3B1.3\ \text{B} | 2424 | 20482048 |
GPT-32.7B\text{GPT-3 2.7B} | 2.7B2.7\ \text{B} | 3232 | 25602560 |
GPT-36.7B\text{GPT-3 6.7B} | 6.7B6.7\ \text{B} | 3232 | 40964096 |
GPT-313B\text{GPT-3 13B} | 13B13\ \text{B} | 4040 | 51405140 |
GPT-3175B\text{GPT-3 175B} / GPT-3\text{GPT-3} | 175B175\ \text{B} | 9696 | 1228812288 |
3.3 模型练习
GPT-3\text{GPT-3} 的思维是在大规划无标示语料上预练习言语模型,然后直接把预练习模型应用到各种下流使命
这和 GPT-2\text{GPT-2}是相同的,不同之处在于 :GPT-2\text{GPT-2} 设定为零样本使命,GPT-3\text{GPT-3} 设定为少样本使命
所谓少样本使命便是说预练习模型对下流使命进行猜测时,只供给极少量的使命样本供预练习模型运用
一般 GPT-3\text{GPT-3}不会将这些极少量的使命样本用于微调模型,而是会将其当作提示输入到预练习模型
这是因为对参数量如此大的模型进行微调也是非常困难的
这样在猜测时将使命样本放到提示中给模型来学习的行为,可以称作是上下文学习 (in-contextlearning\text{in-context learning})
简略来说便是预练习模型需求在提示的上下文语境中学习要完结的下流使命
因而关于运用者来说,运用预练习模型完结下流使命最需求考虑的工作便是:怎么规划提示
下面是一个比如:
GPT-3\text{GPT-3} 的终究作用虽然已非常惊艳,但仍不可避免地存在一些局限性,下面来简略评论下:
- 假设存在许多使命样本,如果以拼接的方式输入预练习模型,那么会使得提示文本很长,难以了解
- 预练习模型每次猜测时,都会直接从给定的上下文获得信息,但是每次得到的信息都没有保存下来
好啦,本文到此结束,感谢您的阅览!
如果你觉得这篇文章有需求修正完善的地方,欢迎在评论区留下你名贵的定见或许建议
如果你觉得这篇文章还不错的话,欢迎点赞、收藏、关注,你的支持是对我最大的鼓励 (/\)