论文泛读:GPT-1

前言

GPT-1: Improving Language Understanding by Generative Pre-Training
Attention Is All You Need
其他经典论文链接:Transformer介绍

对 Transformer Decoder 模型的探索在在很大程度上是由 OpenAI 带头进行的,通过使用更大的数据集进行预训练,以及将模型的规模扩大,纯 Decoder 模型的性能也在不断提高。
GPT:GPT-1是于2018年发布的第一个版本,它使用了12个Transformer编码器层和1.5亿个参数。GPT-1的训练数据包括了互联网上的大量文本。

引言

从原始文本有效地学习的能力对于减轻自然语言处理 (NLP) 中监督学习的依赖至关重要。大多数深度学习方法需要大量的手动标记数据,这限制了它们在许多缺乏注释资源的领域的适用性。在这种情况下,可以利用未标记数据中的语言信息的模型为收集更多注释提供了有价值的替代方案,这可能既耗时又昂贵。此外,即使在有大量监督的情况下,以无监督的方式学习好的表示也可以提供显着的性能提升。到目前为止,最引人注目的证据是广泛使用预训练的词嵌入来提高一系列NLP任务的性能。

然而,由于两个主要原因,利用来自未标记文本的词级信息具有挑战性。首先,尚不清楚哪种类型的优化目标在学习对迁移有用的文本表示方面最有效。最近的研究着眼于各种目标,例如语言建模 、机器翻译 和话语连贯性 ,每种方法在不同的任务上优于其他目标。 其次,对于将这些学习表示转移到目标任务的最有效方法没有共识。现有技术涉及使用复杂的学习方案 和添加辅助学习目标 组合对模型架构 进行特定于任务的更改。这些不确定性使得开发有效的半监督学习方法变得困难。

在本文中,我们探索了一种半监督方法,用于语言理解任务,结合无监督预训练和监督微调。我们的目标是学习一个通用表示,它转移很少适应广泛的任务。我们假设可以访问大量未标记文本和几个带有手动注释的训练示例的数据集(目标任务)。我们的设置不需要这些目标任务与未标记语料库位于同一域中。我们采用两阶段训练程序。首先,我们在未标记的数据上使用语言建模目标来学习神经网络模型的初始参数。随后,我们使用相应的监督目标将这些参数适应目标任务。

难点如论文所述主要有两点:如何为所谓的可迁移的语言学能力或信息制定目标函数?即我们的优化目标是什么(如语言模型好坏,机器翻译结果或辩论的一致性)?其次学习到的能力将以何种形式迁移?

模型框架

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

原文翻译
For our model architecture, we use the Transformer , which has been shown to perform strongly on various tasks such as machine translation , document generation , and syntactic parsing . This model choice provides us with a more structured memory for handling long-term dependencies in text, compared to alternatives like recurrent networks, resulting in robust transfer performance across diverse tasks. During transfer, we utilize task-specific input adaptations derived from traversal-style approaches , which process structured text input as a single contiguous sequence of tokens. As we demonstrate in our experiments, these adaptations enable us to fine-tune effectively with minimal changes to the architecture of the pre-trained model.对于我们的模型架构,我们使用 Transformer ,它已被证明在机器翻译、文档生成 和句法解析 等各种任务上表现良好。与循环网络等替代方案相比,该模型选择为我们提供了更结构化的内存来处理文本中的长期依赖关系,从而在不同的任务之间产生稳健的传输性能。在传输过程中,我们利用从遍历式方法 派生的特定于任务的输入适应,它将结构化文本输入处理为单个连续的标记序列。正如我们在我们的实验中所展示的,这些适应使我们能够以最小的变化有效地微调预训练模型的架构。

值得一提的是我们需要对不同任务简单的构造成一个遍历式的单项文本(traversal style). 比如对于QA问答里的多选题,会根据选项多寡如上图所示构造成几个不同的输入文本对,然后单独做处理最后映射成概率。

模型的训练主要由两个阶段构成(之后的一系列基于TRANSFORMER的大模型预训练如bert/albert/roberta或者transfromer-xl,xl-net等都没有脱离这个框架):
第一阶段是在大量的充足语料上用无监督的方式训练一个语言模型(并且在这个阶段根据优化目标融入各式的语言能力,这点在这篇开山之作里似乎没有体现。但对模型进行多任务的预训练,将十分有利于模型在下游任务里的表现提升。
第二阶段是根据下游的任务进行有监督式的微调。之所以叫微调是因为在这个阶段用的数据量远远小于第一阶段,并且基本没有更改模型架构和引入过多新的参数。

第一阶段:无监督预训练

原文:
在这里插入图片描述

翻译:

给定一个无监督的语料库(无标签的tokens语料库)U = {u1,…, un},我们使用LM标准语言模型目标函数(即根据前 k 个词预测下一个词),语言模型的优化目标是最大化下面的似然函数:
在这里插入图片描述

其中,k为token的上下文滑动窗口的大小,P条件概率是使用参数为Θ的神经网络建模的。这些参数是用SGD随机梯度下降训练优化得到的。
如果看过CBOW和SKIP-GRAM论文,看到这行公式的第一反应便是,如果用一个自回归的仅依赖于前文的滑动上下文窗口建模语言模型,那左右双向的上下文语言模型建模可不可以实现?而事实上BERT论文就是在做这件事。

在我们的实验中,我们对语言模型使用了一个多层Transformer解码器,它是Transformer的一个变体。该模型在输入上下文tokens上应用了一个多头自注意力操作,然后是按位置的前馈层,以在目标tokens上产生输出分布:
其中U = (U−k,…, u−1)为标记的上下文向量,n为层数,We为标记嵌入矩阵,Wp为位置嵌入矩阵。
其中U = (U−k,…, u−1)为token的上下文向量,n为层数,We为标记嵌入矩阵,Wp为位置嵌入矩阵。

注意有别于基础transformer用的三角函数来做位置嵌入,该论文用的是可学习的位置矩阵来表征位置信息

在GPT-1中,使用了12个transformer块的结构作为解码器,每个transformer块是一个多头的自注意力机制,然后通过全连接得到输出的概率分布。该模型的训练过程,其实就是将输入文本中每个词的Embedding作为输入,输出预测的下一个词。

第二阶段:有监督的微调

第二阶段的微调是以有监督的形式进行。将文本输入放进第一阶段训练所得的模型,取最后一层的隐层输出,加一个简单的线性层做映射,最后以SOFTMAX转化为概率形式,并顺势得到我们需要最大化的似然函数表达形式。

原文:
在这里插入图片描述
翻译:
当得到无监督的预训练模型之后,我们将它的值直接应用到有监督任务中。在用公式1中的目标训练模型后,我们将参数适应监督目标任务。我们假设,有一个带标签的数据集C,其中每个实例样本都包含有m个输入(tokens序列):{x1,x2,xm},和对应的标签y组成,输入通过我们预先训练的模型,得到最终transformer 块的激活状态 h l m h_l^{m} hlm,然后,将其输入到一个附加的线性输出层,带参数Wy来预测y:
在这里插入图片描述

这为我们提供了以下最大化目标:
在这里插入图片描述

我们还发现,将语言建模作为微调的辅助目标有助于(a)、提高监督模型的泛化,(b)加速收敛。
这与之前的工作一致[50,43],他们也观察到使用这种辅助目标可以提高性能。具体来说,我们优化了以下目标(权值λ):
在这里插入图片描述
总的来说,我们在微调过程中需要的唯一额外参数是Wy和分隔符tokens 的嵌入

小结

在这个章节中,作者主要提到了两个关键点。首先,作者发现模型的泛化能力与模型解码器的层数直接相关。截至发文时,模型在数据集上仍然存在欠拟合的情况,这意味着模型可以继续扩大规模进行训练。这揭示了未来几年学术界将继续竞争算力资源,在越来越大的数据集上使用更多的参数来取得更好的效果。
其次,文章测试了在不进行微调(zero-shot)的情况下,模型在各个任务中的表现,揭示了为什么大模型的预训练对于捕捉语言的本质信息是有益的。具体可以去原文中阅读第4实验部分。
此外,使用LSTM模型所得到的结果整体上不如使用Transformer模型得到的结果。换句话说,这些发现强调了预训练的重要性以及Transformer相对于LSTM的优势。

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值