1.2.1 GPT系列模型
GPT模型是由OpenAI于2018年提出的,其基础结构采用Transformer的解码器部分,也是首个采用Transformer结构的预训练语言模型(Pretrain Language Model,PLM)。与传统的语言模型一样,当前时刻的所有信息仅来源于前面所有时刻的信息,与后面的信息无关。预训练是自监督学习的一种特殊情况,其目的是找到一个良好的模型初始化参数,早期主要应用于计算机视觉任务,在NLP任务上常用的Word2Vec技术也属于预训练的一种。虽然Word2Vec在神经网络时代也取得了较好的效果,但由于模型中的参数没有经过大量数据训练,导致模型初始化时没有良好的起点。GPT模型采用Transformer结构,再充分利用大量未标记的文本数据进行生成式预训练,使得预训练过的模型在每个特定的任务上仅需要少量数据进行微调就可以取得较为优异的效果。具体如图1-3所示。
图1-3 GPT模型示意
预训练是一个标准的语言模型任务,损失函数如下:
当进行下游任务微调时,将最后一个时刻的节点作为整个句子的向量表征,损失函数如下:
在完成下游任务时,如果将语言模型任务与下游特定任务一起优化,会使得模型的泛化更好,收敛速度更快。
在预训练时,GPT模型仅采用Books Corpus数据集,并使用字节对编码(Byte Pair Encoding,BPE)方法获取大小为40 000的词表。模型仅包含12层,参数量为11 700万。在训练时,采用Adam优化器,学习率为2.5×10-4,使用GeLU(Gaussian error Linear Units,高斯误差线性单元)激活函数,模型的最大输入长度为512。
但不幸的是,在BERT(Bidirectional Encoder Representation from Transformer,来自Transformer的双向编码器表示)模型(基础结构采用Transformer的编码器部分)出现后,GPT模型逐渐被人遗忘。OpenAI坚持认为Transformer的解码器结构才是正道,于是,在2019年OpenAI又提出了15亿参数量的GPT-2模型。GPT-2模型可以在无监督数据预训练后,在下游任务中不进行微调而获得较好的效果。在GPT-2模型的开发者看来,无监督数据中包含很多有监督的任务内容。如果在无监督数据上学习得足够充分,就不需要下游任务进行微调,只需对任务输入进行转化,增加对应的提示信息,就能够进行下游任务预测。例如,在完成英译法的翻译任务时,将输入变成“翻译成法语,[英文文本],[法语文本]”;在完成机器阅读理解任务时,将输入变成“回答问题,[文档内容],[问题],[答案]”。
因此,无监督数据的规模和质量显得尤为重要。GPT-2模型构建了一个高质量的、多领域的、带有任务性质的WebText数据集。该数据集主要爬取Reddit网站中Karma大于3的网页,并从中抽取文本内容,最终获取了800万个文档,总计40GB文本。以英译法的翻译任务为例,如图1-4所示,在WebText数据集中可以发现相似内容的表达,也充分证明了在无监督数据中包含各种有监督任务数据,但这些数据以片段或者隐含的方式体现。
图1-4 无监督WebText数据集中存在英译法的翻译任务的片段数据
GPT-2模型也采用Transformer的解码器结构,但做了一些微小的改动,具体如下。
●将归一化层移动到每个模型的输入前,并在每个自注意力模块后额外添加了一个归一化层。
●采用了更好的模型参数初始化方法,残差层的参数初始化随着模型深度的改变而改变。具体缩放值为,其中N为层数。
●采用了更大的词表,将词表大小扩展到50 257。此外,模型能接受的最大长度由512扩展到1024,并在模型训练时将批次扩大到512。
随着模型的增大,无论是文本摘要任务还是问答任务,其完成效果都随之增加。秉承着数据至上、参数至上的思想,OpenAI于2020年又推出了GPT-3模型,为大型语言模型时代的到来打下坚实的基础。
GPT-3模型的结构与GPT-2模型的一致,包括模型初始化方法、归一化标准、分词器等。然而GPT-3在全连接和局部带状稀疏注意力模块方面借鉴了Sparse Transformer模型,并设计了8个大小不同的模型,模型参数细节如表1-1所示。在这些模型中,模型越大,训练的批次就越大,而学习率减小。
表1-1 GPT-3模型的不同尺度的模型参数细节
训练一个拥有1750亿参数量的庞大模型需要更大规模的训练语料,数据主要来自Common Crawl数据集,但由于该数据集质量偏低,因此需要进行数据清洗,具体步骤如下。
步骤1:对原始Common Crawl数据集进行过滤,即通过GPT-2的高质量数据集和现有的Common Crawl数据集构建正负样本,使用逻辑回归分类器训练,再使用分类器对Common Crawl数据集进行判断,获取质量较高的数据集。
步骤2:对过滤后的内容进行重复数据过滤,即通过Spark中的MinHashLSH方法,找出一个与现有数据集相似的文档,并将模糊、重复内容删除,进一步提高模型训练数据质量和防止过拟合。
步骤3:加入已知高质量GPT-2模型所使用的训练数据集。
最终从45TB的Common Crawl数据集中清洗了570GB,相当于4000亿个Token,用于GPT-3模型的训练。在模型预训练过程中,训练集数据的采样并不是按照数据集大小进行的,而是质量较高的数据集的采样频率更高。各数据集分布情况如表1-2所示,Common Crawl和Books2数据集在训练过程中采样小于1次,其他数据集采样2~3次。
表1-2 GPT-3模型预训练过程中各数据集分布情况
GPT-3模型训练采用Adam优化器,其中β1和β2的值分别为0.9和0.95,采用余弦将学习率衰减到10%。模型能接受的最大总长度为2048,当文档中句子的总长度小于2048时,将多个文档采用停止符拼接,以提高模型的训练效率。模型在微软提供的高带宽V100 GPU集群上进行训练。
为了更好地挖掘预训练语言模型本身的能力,GPT-3模型在下游任务中不使用任何数据进行模型微调,通过情景学习或上下文学习来完成任务。在不更新语言模型参数的前提下,仅通过给定的自然语言指示和任务上的几个演示示例预测真实测试示例的结果。根据演示示例的个数,可以将其分为3种,如图1-5所示。
●少样本学习(Few-Shot),允许在给定上下文窗口范围内尽可能多地放入演示示例。
●单样本学习(One-Shot),仅允许放入一个演示示例。
●零样本学习(Zero-Shot),即不允许放入任何演示示例,仅给模型一个自然语言指令。
图1-5 GPT-3模型中少样本学习、单样本学习、零样本学习及传统微调的训练流程
最终在无训练的情况下,GPT-3模型在很多复杂的NLP任务上效果超过了微调之后的SOTA方法,例如机器翻译等。除了传统的NLP任务,GPT-3模型在数学计算、文章生成、编写代码等领域也取得了非常惊人的效果。
如果说GPT-3模型是将大家带入大型语言模型时代的先驱者,那么ChatGPT模型就是让大型语言模型得到广泛认可的推动者。ChatGPT模型因其流畅的对话表达、极强的上下文存储、丰富的知识创作及全面解决问题的能力而风靡全球,刷新了大众对人工智能的认知,并使人们对人工智能的发展重拾信心。ChatGPT模型是在GPT-3模型的基础上,让大型语言模型更好地遵循用户意图,避免生成编造的信息、偏见或具有安全隐患的文本。它主要是通过人类反馈进行模型微调,按照用户的意图(明确意图和隐含意图)进行模型训练,使得语言模型与用户意图在广泛的任务中保持一致,并具有3H特性,即Helpful(有用的,可以帮助用户完成任务)、Honest(真实的,不应该编造信息误导用户)和Harmless(无害的,不应该对人造成身体、心理或社会伤害),具体流程如图1-6所示。
图1-6 ChatGPT模型训练流程图
步骤1:监督微调(Supervised Fine-Tuning,SFT)阶段,收集示例数据并训练一个监督学习模型。从提示数据集中抽取一个提示内容,由标注人员编写答案,最后使用监督学习方法微调GPT-3模型。
步骤2:奖励模型(Reward Modeling,RM)阶段,收集比较数据并训练一个奖励模型。对于一个提示内容,使用模型预测多个结果,然后由标注人员对答案进行排序,最后将这些数据用于训练奖励模型,以判断答案的具体分值。
步骤3:强化学习阶段,通过强化学习的近端策略优化(Proximal Policy Optimization,PPO)方法进行模型优化。从提示数据集中抽取一些新的提示,然后根据模型策略生成一些结果,再根据奖励模型打分,最后采用PPO方法更新模型生成策略。这使得GPT-3模型生成的内容与特定人群(标注人员)的偏好一致。
所有步骤均可持续迭代,其中步骤3收集到更多的比较数据时,可以用于训练一个新的奖励模型,并将其用于新的策略更新。
对于奖励模型来说,采用SFT模型进行参数初始化,并将原来的LM输出层替换成一个线性全连接层,在接受提示和响应作为输入后,输出一个标量的奖励值。在训练过程中,采用Pair-Wise方法进行模型训练,即对于同一个提示内容x来说,比较两个不同回答yw和yl之间的差异。假设yw在真实情况下好于yl,那么希望x+yw经过模型后的分数比x+yl经过模型后的分数高,反之亦然。而对于奖励模型来说,标注人员对每个提示内容生成的K个(取值为4到9之间)回答进行排序,那么对于一个提示,就存在个对,具体损失函数如下:
其中,rθ(x,y )为提示内容x和回答y经过RM模型的标量奖励值,D为人工比较数据集。
对于强化学习部分,在环境中通过PPO策略优化SFT模型。在环境中,对于随机给出的提示内容进行回复,并根据RM模型决定环境中优化的模型的奖励值,从而对模型进行更新;在SFT模型的每个Token输出上增加KL散度惩罚,以防止奖励模型的过度优化。具体优化如下:
其中,为强化学习策略,πSFT为监督训练模型,Dpretrain为预训练分布。加入预训练部分参数进行整体优化,可以使模型效果更优。
经过上述大型语言模型与用户指示的对齐操作后,虽然在现在的NLP任务榜单上模型效果没有明显变化,但通过用户的真实评价可以发现,输出结果远远优于原始1750亿参数量的GPT-3模型的输出结果。这也说明在当前的NLP任务中,很多任务数据和评价指标与真实世界的用户使用感受存在较大的差距。
2023年3月14日,OpenAI又发布了GPT-4模型,GPT-4模型是一个多模态模型,相比于ChatGPT模型,它不仅可以接受文本输入,还可以接受图像输入,并输出文本内容。GPT-4模型可以很好地理解输入图片所包含的语义内容。此外,GPT-4模型在生成编造内容、偏见内容及生成内容安全方面均有较大的改善,并且可以以排名前10%的成绩通过模拟律师资格考试。
时代在发展,GPT系列模型也会迎来新的成员,GPT-5模型可能会在不久的将来发布。