GPT、GPT-2、GPT-3
2023-7-29
| 2023-7-29
0  |  阅读时长 0 分钟
type
status
password
date
slug
summary
category
URL
tags
icon

背景

 
notion image
模型
发布时间
层数
头数
词向量长度
参数量
预训练数据量
GPT-1
2018 年 6 月
12
12
768
1.17 亿
约 5GB
GPT-2
2019 年 2 月
48
-
1600
15 亿
40GB
GPT-3
2020 年 5 月
96
96
12888
1,750 亿
45TB

GPT

自然语言理解包括各种各样的任务,例如文本蕴含,问题回答,语义相似性评估和文档分类。 尽管大型的未标记文本语料库很丰富,但是学习这些特定任务的标记数据却很少。所以本文希望能够使用无标记的数据进行预训练,然后再使用有标记的数据对预训练模型进行微调。微调时,我们只需要在模型结构中做较小的改动,便能利用标记数据获取不错的结果。
GPT的思路与BERT基本相同;与BERT的主要区别是BERT使用的Transformer的Encode模块,GPT使用的Transformer的Dencode模块。

预训练-无监督

给定无监督的分词语料 ,使用标准的语言建模目标,最大化似然估计:
其中 是上下文窗口的大小,以及条件概率 ,这些参数使用随机梯度下降训练。
实验使用多层Transformer解码器作为语言模型。模型对输入上下文分词应用多头自注意操作,继之以位置相关前馈层,在目标分词上产生输出分布:
其中 为上下文分词向量, 为transformer的层数, 是Embedding矩阵, 为位置嵌入矩阵。
💡
12层Transformer,Embeding是768。

微调-有监督

在经过预训练后,将使模型参数适应有监督的目标任务。将标记数据集 ,输入预训练模型,获得最后一层的Transformer-Block的输出 ,最后送入带参数 的线性输出层去预测
然后最大化目标函数:
通过实现还发现,将预训练的损失函数作为微调的辅助目标,有助于通过学习改进监督模型的泛化,加速收敛。具体而言,优化了以下目标:
总之,在微调期间唯一需要的额外参数是 ,以及定界符标记的嵌入。

具体任务的输入

对于某些任务,例如文本分类,可以直接微调模型。其他任务,例如问题解答或文本蕴含,具有结构化的输入,例如有序句子对、<文档,问题, 答案> 三元组。由于我们的预训练模型是在连续的文本序列上训练的,因此我们需要进行一些修改才能将其应用于这些任务。
notion image
💡
Start、Delim、Extract等特定token在微调阶段才加入进行学习

附件

GPT-2

GPT-2是GPT的升级版本,其模型结构与 GPT 相比几乎没有什么变化,其最大的区别在于规模更多,训练数据更多,GPT是12层的transformer,BERT最深是24层的transformer,GPT-2则是48层,共有15亿个参数,其训练数据是一个称为WebText的数据集,该数据集做了一些简单的数据清理,并且覆盖领域十分广阔,论文中指出规模大的模型必须要用更多的数据才能收敛,并且实验结果表明目前模型仍然处于一个欠拟合的情况。
其次作者想通过尽可能地构建和利用足够大的且多样化的数据集,以保证最终的模型能够应用于多个不同的 NLP 任务中。因此在预训练阶段,GPT-2采用了多任务的方式,不单单只在一个任务上进行学习,而是多个,每一个任务都要保证其损失函数能收敛,不同的任务是共享主体transformer参数的,该方案是借鉴了之前微软的MT-DNN,这样能进一步的提升模型的泛化能力,因此在即使没有fine-turning的情况下依旧有非常不错的表现。
💡
这就是GPT-2的主要改进点:多任务预训练(Zero Shot)+超大数据集+超大规模模型

数据集

之前大部分训练语言模型的工作都是采用单一领域的文本,例如新闻,维基百科,小说。我们希望使用尽可能大且多样化的数据集,以便在尽可能多的领域能胜任。
我们通过爬取网页数据,制作了WebText数据集,其中包含了4500万条链接,我们从HTML的相应内容从提取除了文本内容。在这篇论文中,目前所有用的结果都是用的WebText的初版数据,超过8百万个文档总共40G。我们移除了维基百科的文档,因为后面要Zero Shot任务大部分基于维基百科的语料。
 

模型方法&可行性

针对单个任务可以表示为估计一个条件分布:
对于一个通用的系统来说,可以适用于多种任务,它不仅应该以输入为条件,而且还应以要执行的任务为条件:

McCann

McCann et al. (2018)提供了一种灵活的方式来将任务、输入和输出指定为符号序列。例如,翻译训练示例可以写成这样的序列(translate to french, english text, french text)。同样,阅读理解训练的例子可以写成(answer the question, document, question, answer)。McCann等人(2018)证明了训练单一模型的可行性。

Zero Shot

理论上模型不需要像McCann等人(2018使用提示符(translate to french, english text, french text中的translate to french就是提示符)。事实上也证明一个具有足够容量的语言模型能够自行学习推断和执行语句中表达的任务。例如下面这几句话包含了法语、英文互相转换的形式。
notion image
💡
综上也能够学习某些监督学习的任务,并且不需要明确具体的监督符号。而监督学习由于数据量的关系通常只是无监督学习的一个子集,所以无监督学习的全局最小也必定是监督学习的全局最小,所以目前的问题变为了无监督学习是否能收敛。初期的实验表明足够大的语言模型是能够执行多任务的,但是其训练速度明显比监督学习的方法慢很多。

模型输入

在模型输入方面,GPT-2 采用的是 Byte Pair Encoding(以下简称 BPE)的 Subword 算法。BPE 和我们之前的提到的 WordPiece 的区别在于,WordPiece 是基于概率生成 Subword 的,而 BPE 是基于贪心策略,每次都取最高频的字节对。

模型结构

我们的语言模型内部采用的是transformer结构,该模型在很大程度上遵循OpenAI GPT模型的细节只是做了一些修改。在每一个sub-block中只有两个layer normalization层,一个在输入的地方,另一个在最后一个 self-attention block 的后面。
同时考虑到模型深度对残差路径的累积问题,GPT-2 采用了修正的初始化方法。在初始化时将残差层的权重缩放到倍, 为残差层的数量。

附件

GPT-3

我们训练了GPT-3(一种具有1750亿个参数的自回归语言模型,比以前的任何非稀疏语言模型多10倍),并在少量测试中测试了其性能。对于所有任务,应用GPT-3无需进行任何梯度更新或微调,而仅通过与模型的文本交互指定任务和少量演示即可。 GPT-3在许多NLP数据集上均具有出色的性能,包括翻译,问题解答和完形填空任务,以及一些需要即时推理或领域适应的任务。

模型情境学习能力的差异

本文聚焦于系统分析同一下游任务不同设置情况下,模型情境学习能力的差异。下游任务的设置有以下四类:
  1. Fine-Tunning(FT):FT利用成千上万的下游任务标注数据来更新预训练模型中的权重以获得强大的性能。但是,该方法不仅导致每个新的下游任务都需要大量的标注语料,还导致模型在样本外预测的能力很弱。虽然GPT-3从理论上支持FT,但本文没这么做。
  1. Few-Shot(FS):模型在推理阶段可以得到少量的下游任务示例作为限制条件,但是不允许更新预训练模型中的权重。FS的主要优点是并不需要大量的下游任务数据,同时也防止了模型在fine-tune阶段的过拟合。FS的主要缺点是不仅与fine-tune的SOTA模型性能差距较大且仍需要少量的下游任务数据。
  1. One-Shot(1S):模型在推理阶段仅得到1个下游任务示例,同样也不允许更新预训练模型中的权重。把One-Shot独立于Few-Shot和Zero-Shot讨论是因为这种方式与人类沟通的方式最相似。
  1. Zero-Shot(0S):模型在推理阶段仅得到一段以自然语言描述的下游任务说明。优点是提供了最大程度的方便性、尽可能大的鲁棒性并尽可能避免了伪相关性。Zero-Shot的方式是非常具有挑战的,即使是人类有时候也难以仅依赖任务描述而没有示例的情况下理解一个任务。
notion image

模型结构

模型结构、初始化方法、预标准化方法和分词方法与GPT-2完全一致,但是Dense层和Locally Banded Sparse Attention层借鉴自Sparse Transformer。为了探究机器学习性能和模型参数的关系,我们分别训练了包含1.25亿至1750亿参数的8个模型,并把1750亿参数的模型命名为GPT-3。
notion image
💡
几个有意思的点,模型参数越来越多,但是Batch Size越来越大,Learning Rate越来越小

数据集

CommonCrawl数据集,采取了3个步骤来提高数据集的平均质量:(1)CommonCrawl的数据集作为负样本,GPT-2的数据集作为正样本做二分类,筛选CommonCrawl中高质量的文本;(2)使用lsh算法对CommonCrawl中高质量的文本进行去重(3)我们还将已知的高质量参考语料库添加到训练组合中,以增强CommonCrawl并增加其多样性。
notion image
💡
因为任务Common Crawl数据质量降低,所以使用了较低的采样率。Common Crawl数据是WebText2的20倍,但采样只是其3倍。

结果

在某些任务上已经达到了微调模型的精度,例如SOTA数据集上的表现。
notion image

附件

InstructGPT

ChatGPT使用了InstructGPT一样的技术。只要给定一些示例作为输入,LLM就可以完成一系列的NLP任务,然而,这些模型经常给出一些意外的行为,如捏造事实、生成带偏见或有害的文本、不遵循用户给出的指令。这是因为多数LLM的优化目标都是使用网上的文本数据预测的下一个token,这个目标与“有益且安全地遵循用户的指令”是不同的。因此,我们说,LM的目标是misaligned。在真实应用中,避免此类意外行为是非常重要的。

训练过程

我们对齐LM的方式是微调,更准确一点,基于RLHF的方式来微调GPT-3使其能够遵循用户的各种指令,该方法将人类偏好作为奖励信号来微调模型。具体来说,
  1. 首先,我们筛选了40个标注人员;然后,我们收集了一个prompt集合(用户提问的数据),我们让标注人员针对prompt给出合适的回复,并用这些数据对GPT-3模型做了一个微调;
  1. 接下来,在一个更大的API prompt集合上,我们让微调之后的GPT-3模型给出不同的输出并让标注人员标注出不同输出之间的排序,基于这个数据,我们训练了一个奖励模型,用于评判到底哪个输出是标注人员更偏好的;
  1. 最后,采用PPO算法,基于奖励模型,我们继续微调GPT-3,是的GPT-3的得分不断提高。最后得到了InstructGPT。
通过这个过程,我们仅仅做到了将模型和一个群体(标注人员、研究人员)的偏好进行了对齐,而不是和更大范围内的所谓人类价值观进行了对齐。算法流程如下图:
notion image

数据集

notion image
 

Models

模型训练均基于GPT-3,包含了以下三种不同技术:

有监督微调(SFT)

Supervised fine-tuning (SFT):采用demonstration data对GPT-3进行微调,训了16 epoch,采用cosine learning rate decay、residual dropout of 0.2,模型选择是基于验证集上的RM score;我们发现,模型在经过1个epoch后就已经能拟合验证集了,虽然训更久会过拟合,但是模型在RM score以及人类评估上的表现更好

奖励模型(RM)

Reward modeling (RM):以上述SFT模型为基础,去除最后一层(替换为projection layer),我们训了一个RM模型,输入为prompt、response,输出为一个标量奖励;本文中,我们采用的是6B的模型,因为175B的模型计算量太大,而且它训练不稳定因此不适合作为RL阶段的价值函数;针对每个prompt,模型会产生K(4~9)个response,两两之间的比较都作为一个样本的话,理论上可以产生  个样本,如果简单将它们shuffle的话,模型容易过拟合,因为每个response都会出现次,因此我们做了一点改动,在同一个batch中将  个样本送入模型。同时RM模型的损失函数如下:
其中 是提示 和响应 在参数为 的奖励模型下的奖励值; 是labeler更喜欢的响应结果, 是labeler不喜欢的响应结果。 是整个训练数据集。

强化学习模型(PPO)

PPO的训练集完全来自API。它通过第2步得到的奖励模型来指导SFT模型的继续训练。很多时候强化学习是非常难训练的,InstructGPT在训练过程中就遇到了两个问题:
  • 问题1:随着模型的更新,强化学习模型产生的数据和训练奖励模型的数据的差异会越来越大。作者的解决方案是在损失函数中加入KL惩罚项来确保PPO模型的输出和SFT的输出差距不会很大。
  • 只用PPO模型进行训练的话,会导致模型在通用NLP任务上性能的大幅下降,作者的解决方案是在训练目标中加入了通用的语言模型目标,这个变量在论文中被叫做PPO-ptx。
where is the learned RL policy, is the supervised trained model, and is the pretraining distribution. The KL reward coefficient, , and the pretraining loss coefficient, control the strength of the KL penalty and pretraining gradients respectively. For "PPO" models, is set to 0.Unless otherwise specified, in this paper InstructGPT refers to the PPO-ptx mode

结果

标注人员的评估显示,InstructGPT的效果显著优于GPT-3,即使是1.3B的InstructGPT,也强于175B的GPT-3

附件

 
  • NLP
  • Transformers之自定义学习率动态调整基于Transformers库的BERT模型分类任务
    Loading...
    目录