3 框架

我们的训练过程包含两个阶段。第一阶段是在大量文本语料库上学习一个高容量的语言模型。随后是微调阶段,我们在此阶段使用带标签的数据将模型适配到一个判别任务上。

3.1 无监督预训练

给定一个无监督的标记序列语料库 U = {u1, ..., un},我们使用标准的语言建模目标来最大化以下似然值:

人工智能论文GPT v1(2):Improving Language Understanding by Generative Pre-Training 2018.6;架构;实验_分隔符

其中 k 是上下文窗口的大小,条件概率 P 使用带有参数 Θ 的神经网络进行建模。这些参数使用随机梯度下降[51]进行训练。

在我们的实验中,我们使用多层Transformer解码器[34]作为语言模型,它是Transformer[62]的一个变体。该模型对输入上下文标记进行多头自注意力操作,然后通过位置感知的前馈层产生目标标记的输出分布:

人工智能论文GPT v1(2):Improving Language Understanding by Generative Pre-Training 2018.6;架构;实验_语言模型_02

其中 U = (u-k, ..., u-1) 是标记的上下文向量,n 是层数,We 是标记嵌入矩阵,Wp 是位置嵌入矩阵。

3.2 有监督微调

在利用等式1中的目标训练模型后,我们将参数调整至有监督的目标任务。我们假设有一个带标签的数据集C,其中每个实例包括一系列输入标记x1, ..., xm,以及一个标签y。输入数据通过我们预训练的模型传递,以获取最终Transformer块的激活hm^l,然后将其输入一个带有参数Wy的线性输出层,以预测y:

人工智能论文GPT v1(2):Improving Language Understanding by Generative Pre-Training 2018.6;架构;实验_gpt_03

这给我们提供了以下需要最大化的目标:

人工智能论文GPT v1(2):Improving Language Understanding by Generative Pre-Training 2018.6;架构;实验_gpt_04

我们还发现,将语言建模作为微调阶段的辅助目标有助于学习,具体表现在(a)提高了有监督模型的泛化能力,以及(b)加速了收敛速度。这与先前的工作[50, 43]一致,这些工作也观察到使用此类辅助目标可以提高性能。具体来说,我们优化以下目标(带权重λ):

人工智能论文GPT v1(2):Improving Language Understanding by Generative Pre-Training 2018.6;架构;实验_分隔符_05

总的来说,在微调阶段,我们唯一需要的额外参数是Wy和分隔符标记的嵌入(在3.3节中描述)。

人工智能论文GPT v1(2):Improving Language Understanding by Generative Pre-Training 2018.6;架构;实验_gpt_06

图1:(左)本工作中使用的Transformer架构和训练目标。(右)在不同任务上的微调输入转换。我们将所有结构化输入转换为标记序列,以供预训练模型处理,之后是一个线性+softmax层。

3.3 针对特定任务的输入转换

对于某些任务,如文本分类,我们可以按照上述描述直接对模型进行微调。然而,某些其他任务,如问答或文本蕴含,具有结构化的输入,如有序的句子对,或文档、问题和答案的三元组。由于我们的预训练模型是在连续的文本序列上进行训练的,因此我们需要进行一些修改才能将其应用于这些任务。先前的工作提出在迁移表示的基础上学习特定于任务的架构[44]。这种方法重新引入了大量的任务特定定制,并且没有为这些额外的架构组件使用迁移学习。相反,我们使用一种遍历式的方法[52],将结构化输入转换为有序序列,以便我们的预训练模型可以处理。这些输入转换允许我们在不同任务之间避免对架构进行大量更改。下面我们简要描述这些输入转换,图1提供了可视化说明。所有转换都包括添加随机初始化的开始和结束标记(h_si,h_ei)。

文本蕴含Textual entailment 对于蕴含任务,我们将前提p和假设h的标记序列进行连接,并在它们之间添加一个分隔符标记($)。

相似度Similarity 对于相似度任务,需要比较的两个句子之间没有固有的顺序。为了反映这一点,我们修改输入序列以包含两种可能的句子顺序(中间加一个分隔符),并分别处理它们以产生两个序列表示h_m^l,这些表示在输入线性输出层之前会逐元素相加。

问答和常识推理Question Answering and Commonsense Reasoning 对于这些任务,我们得到的是一个上下文文档z、一个问题q和一组可能的答案{a_k}。我们将文档上下文和问题与每个可能的答案连接起来,并在它们之间添加一个分隔符标记,得到[z; q; $; a_k]。这些序列中的每一个都会使用我们的模型进行独立处理,然后通过softmax层进行归一化,以产生可能的答案上的输出分布。

4 实验

4.1 设置

无监督预训练 我们使用BooksCorpus数据集[71]来训练语言模型。该数据集包含超过7000本各种题材的未发表书籍,包括冒险、奇幻和浪漫等类型。重要的是,它包含了大段的连续文本,这使得生成模型能够学习依赖长距离信息。另一个数据集,即1B Word Benchmark,被类似的方法ELMo[44]所使用,其大小大致相同,但它在句子层面进行了混洗,破坏了长距离结构。我们的语言模型在这个语料库上实现了非常低的令牌级别困惑度,为18.4。

人工智能论文GPT v1(2):Improving Language Understanding by Generative Pre-Training 2018.6;架构;实验_人工智能_07

模型规格 我们的模型在很大程度上遵循了原始Transformer工作[62]。我们训练了一个12层的仅解码器Transformer,带有掩码自注意力头(768维状态和12个注意力头)。对于位置感知的前馈网络,我们使用了3072维的内部状态。我们使用了Adam优化方案[27],最大学习率为2.5e-4。学习率在前2000次更新中从0线性增加到最大值,然后使用余弦调度退火到0。我们在小批量大小为64、包含512个令牌的随机采样连续序列上进行100个周期的训练。由于在整个模型中广泛使用了层归一化[2],因此简单的N(0, 0.02)权重初始化就足够了。我们使用了具有40,000个合并的字节对编码(BPE)词汇表[53],以及用于正则化的残差、嵌入和注意力丢弃,丢弃率为0.1。我们还采用了[37]中提出的L2正则化的修改版本,对所有非偏置或增益权重使用w = 0.01。对于激活函数,我们使用了高斯误差线性单元(GELU)[18]。我们使用学习的位置嵌入,而不是原始工作中提出的正弦版本。我们使用ftfy库2来清理BooksCorpus中的原始文本,标准化一些标点符号和空格,并使用spaCy分词器。

微调细节 除非另有说明,否则我们重用无监督预训练的超参数设置。我们在分类器上添加了丢弃率为0.1的丢弃层。对于大多数任务,我们使用6.25e-5的学习率和32的批量大小。我们的模型微调速度很快,大多数情况下训练3个周期就足够了。我们使用线性学习率衰减调度,并在训练的0.2%时间内预热。λ被设置为0.5。

4.2 监督微调

我们在各种监督任务上进行了实验,包括自然语言推理、问答、语义相似性和文本分类。其中一些任务是最近发布的GLUE多任务基准[64]的一部分,我们对此进行了利用。图1提供了所有任务和数据集的概述。

自然语言推理 自然语言推理(NLI)任务,也称为识别文本蕴含,涉及读取一对句子并判断它们之间的关系,这种关系可以是蕴含、矛盾或中立。尽管近年来有很多研究兴趣[58, 35, 44],但由于存在词汇蕴含、共指消解、词汇和句法歧义等多种现象,该任务仍然具有挑战性。我们在五个具有不同来源的数据集上进行了评估,包括图像标题(SNLI)、转录语音、流行小说和政府报告(MNLI)、维基百科文章(QNLI)、科学考试(SciTail)或新闻文章(RTE)。

表2详细列出了我们的模型与之前最先进的方法在不同NLI任务上的各种结果。我们的方法在五个数据集中的四个上显著优于基线,在MNLI上实现了高达1.5%的绝对提升,在SciTail上提升了5%,在QNLI上提升了5.8%,在SNLI上提升了0.6%,超过了之前的最佳结果。这证明了我们的模型在多个句子上的推理能力以及对语言歧义方面的处理能力更强。在RTE上,我们评估的其中一个较小的数据集(2490个示例),我们实现了56%的准确率,低于多任务biLSTM模型报告的61.7%。鉴于我们的方法在更大的NLI数据集上的强大性能,我们的模型也可能从多任务训练中受益,但目前我们还没有探索这一点。

人工智能论文GPT v1(2):Improving Language Understanding by Generative Pre-Training 2018.6;架构;实验_分隔符_08

人工智能论文GPT v1(2):Improving Language Understanding by Generative Pre-Training 2018.6;架构;实验_分隔符_09

问答与常识推理

另一个需要单句和多句推理能力的任务是问答。我们使用了最近发布的RACE数据集[30],该数据集包含来自中学和高中考试的英语段落及其相关问题。与其他数据集(如CNN[19]或SQuaD[47])相比,这个语料库包含更多推理类型的问题,为我们的模型提供了完美的评估环境,该模型经过训练可以处理长距离上下文。此外,我们还在Story Cloze Test[40]上进行了评估,该测试需要从两个选项中选出多句故事的正确结尾。在这些任务上,我们的模型再次以显著优势超过了之前的最佳结果——在Story Cloze上提高了8.9%,在RACE上总体提高了5.7%。这证明了我们模型有效处理长距离上下文的能力。

语义相似性

语义相似性(或释义检测)任务涉及预测两个句子是否语义上等价。挑战在于识别概念的重新表述、理解否定以及处理句法歧义。我们为此任务使用了三个数据集——微软释义语料库(MRPC)[14](从新闻来源收集)、Quora问题对(QQP)数据集[9]和语义文本相似性基准(STS-B)[6]。我们在三个语义相似性任务中的两个上获得了最先进的结果(表4),在STS-B上获得了1个百分点的绝对提升。在QQP上的性能提升非常显著,比单任务BiLSTM + ELMo + Attn提高了4.2%的绝对值。

分类

最后,我们还对两个不同的文本分类任务进行了评估。语言可接受性语料库(CoLA)[65]包含专家对句子是否语法正确的判断,并测试了训练模型的固有语言偏见。另一方面,斯坦福情感树库(SST-2)[54]是一个标准的二分类任务。我们的模型在CoLA上获得了45.4的分数,这比之前的最佳结果35.0有了显著的提升,展示了我们的模型所学习的固有语言偏见。该模型在SST-2上也达到了91.3%的准确率,这与最先进的结果相当。此外,我们在GLUE基准测试上也获得了72.8的总体分数,这显著优于之前的最佳成绩68.9。

人工智能论文GPT v1(2):Improving Language Understanding by Generative Pre-Training 2018.6;架构;实验_数据集_10

总体而言,我们的方法在评估的12个数据集中的9个上取得了新的最先进结果,并且在许多情况下优于集成方法。我们的结果还表明,我们的方法在不同大小的数据集上都表现良好,从较小的数据集如STS-B(≈5.7k个训练样本)到最大的数据集SNLI(≈550k个训练样本)。

Ankie的评论:

1,本篇介绍了框架和各种任务的实现。

2,GPT只使用了transformer的解码器,不用编码器。12层768维状态和12个注意力头

3,各种结果对比。