Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

参与:Panda作者:Chenguang Wang、Mu Li、Alexander J. Smola

进一步改进GPT和BERT:使用Transformer的语言模型

BERT 和 GPT-2 是当前 NLP 领域两大最先进的模型,它们都采用了基于 Transformer 的架构。Amazon Web Services 近期一篇论文提出了一些对 Transformer 的新改进,包括架构上的改进、利用先验知识以及一种新的架构搜索方法,能得到更加高效的语言模型

Transformer 在计算效率方面优于基于 RNN 的模型。近期的 GPT 和 BERT已经表明,使用在大规模语料库上预训练的语言模型时,Transformer 能高效地处理多种 NLP 任务。让人惊讶的是,这些 Transformer 架构对于语言模型本身而言是次优的。在 Transformer 中,不管是自注意(self-attention)还是位置编码(positional encoding),都无法整合对语言建模而言至关重要的词级序列上下文(sequential context)。

本论文探索了用于语言模型的高效 Transformer 架构,包括添加额外的 LSTM 层以在保持计算高效的同时获取序列上下文。我们提出了协调式架构搜索(CAS:Coordinate Architecture Search),可通过模型的迭代式优化来寻找高效的架构。在 PTB、WikiText-2 和 WikiText-103 上的实验结果表明 CAS 能在所有问题上实现在 20.42 与 34.11 之间的困惑度,即相比于之前最佳的 LSTM 方法,困惑度平均能提升 12.0。

引言

建模语言中的序列上下文是很多 NLP 任务成功的关键。循环神经网络(RNN)可以将序列上下文记忆在精心设计的单元中。但是,这些模型的序列性使得其计算成本高昂,由此难以扩展用于大型语料库

Transformer 架构使用了自注意和逐点全连接层替代 RNN 单元;这种层是高度可并行化的,因此计算成本更低。搭配上位置编码,Transformer 能通过模糊的相对 token 位置求取长程依赖性。这会得到句子级的粗粒度序列表征。GPT(或 GPT2)和 BERT 等近期研究成果表明在大规模语言建模数据集上学习到的表征既可以有效用于优化句子级任务(比如 GLUE 基准),也能用于优化不依靠上下文中词序依赖性的 token 级任务(比如问答和命名实体识别)。

尽管事实上 GPT 和 BERT 都使用了语言模型来预训练,但它们在语言建模方面都没有实现当前最佳。语言模型的目标是根据之前的上文预测下一个词,这需要细粒度的上下文词序信息。已有的 Transformer 架构中的自注意和位置编码都不能有效地建模这种信息。

第二个挑战(和机会)源自这一事实:我们往往有机会获取在相关但不完全相同的任务上预训练的模型。举个例子,GPT 或 BERT 都没有针对 WikiText 进行调整,也没有直接以最小化困惑度为目标。事实上,这些架构甚至可能没有直接的用处:BERT 提供的是 p(w_i |context) 而非 p(w_i |history) 的估计。这表明,对于可以从这些任务导出(和适应得到)的网络空间,我们需要设计能系统性地探索它们的算法。这能泛化为相关任务使用预训练词嵌入的问题,只是我们这里不是处理向量,而是整个网络

最后,架构搜索问题本身已经受到了很大的关注。但是,为 GPT 或 BERT 训练单个模型所需大小的数据集的成本可能超过 1 万美元,如果要通过完全重新训练来执行完备的模型探索,成本将高得不切实际。相对而言,我们提出以远远更加受限(和经济)的方式来调研如何优化一个经过训练的架构,进而实现架构搜索。这样的成本要低得多。我们务实的方法能提升语言建模问题的当前最佳表现。我们有如下贡献:

  1. 我们提出了一种用于语言模型的 Transformer 架构。在所有 Transformer 模块之后添加 LSTM 层是有效的(这是搜索算法的一个结果)。这能获得细粒度的词级序列上下文。

  2. 我们描述了一种高效的搜索流程:协调式架构搜索(CAS)。这种算法能基于已找到的当前最佳架构随机地生成 Transformer 架构的变体。由于这种贪婪性质,CAS 比之前的架构搜索算法更简单且速度更快。

  3. 我们以 GPT 或 BERT 的形式展示了如何将其用于整合大量先验知识。而使用暴力式架构搜索获取这些信息的成本会非常高。

其中贡献 2 和 3 是通用的,可用于 NLP 领域外的其它很多情况。贡献 1 应该更特定于语言方面。我们在 PTB、WikiText-2 和 WikiText-103 这三个常用语言模型数据集上评估了 CAS。相比于当前最佳的基于 LSTM 的语言模型 AWD-LSTM-MoS,基于 BERT 的 CAS 在困惑度方面实现了平均 12.0 的增益。

用于语言模型的 Transformer

我们的 Transformer 架构基于 GPT 和 BERT。我们将复用在 GPT 和 BERT 中预训练的权重来优化语言模型。我们会修改和再训练 GPT 和 BERT 使用的权重和网络以适应语言模型任务。

GPT 和 BERT 

GPT 使用了 Transformer 架构的一种变体,即它使用了基于多层 Transformer 解码器的语言模型。其原论文提供了一种预训练的架构,其模块仅有 12 层的 Transformer 解码器。每个模块都有 768 的隐藏大小和 12 个自注意头。权重是在 BooksCorpus 上训练的。这使其可生成 p(wi |history),一次一个词。

BERT 是一种多层双向 Transformer 编码器。其原论文提供了两种 BERT 结构:BERT-Base 和 BERT-Large。其中 BERT-Base 由 12 层双向 Transformer 编码器模块构成,有 768 的隐藏大小和 12 个自注意头。BERT-Large 包含 24 层双向 Transformer 编码器模块,隐藏大小为 1024,有 16 个自注意头。其权重是在 BooksCorpus 和英语维基百科上训练的。除非另有说明,我们提到的 BERT 都是指 BERT-Base。

GPT 与 BERT 的关系是怎样的?两个模型使用了几乎一样的架构。事实上,GPT 和 BERT-Base 甚至使用了一样的层数和维数。唯一的差别是 BERT 是双向的,因为它试图根据上下文填入单个词,而 GPT 则使用了掩码式自注意头。

调整 GPT 和 BERT 以用于子词语言模型

GPT 仅需少量修改,除非我们想要探索不同的架构。毕竟其已经作为语言模型经过了训练。最低程度而言,在微调期间,我们可以添加一个线性层,其隐藏大小等于词汇库大小。这些权重经过调整并被送入 softmax,进而生成目标词在词汇库上的概率分布。掩码式自注意能确保仅出现因果信息流。

回想一下 BERT 的目标:掩码式语言模型和下一句子预测。掩码式语言模型使用的是双向上下文信息,并会在训练过程中随机地掩盖某些 token。其试图基于这一点推断被掩盖的词的「身份」。不幸的是,估计并不利于构建高效的文本生成器。我们需要设计 Gibbs 采样器来采样,即给定上下文,在所有 i 上迭代和重复地采样 w_i,以直接使用这方面的变体。

下一句子预测的目标是获取两个句子之间的二值化关系。重申一下,这不能直接用于语言模型。因此,我们移除了这一目标,并在微调过程中将其替换成了一个对数似然度量。类似于 GPT,我们添加一个输出线性层,并用掩码式自注意替代自注意头以防止信息向左流动。

注意 GPT 和 BERT 预训练权重会在语言模型微调过程中复用,以节省整个再训练的成本。因此,我们是在子词级上执行语言模型,因为 GPT 和 BERT 中都使用了子词 token 化。

微调 Transformer 权重

GPT 和 BERT 会针对前面提到的任务调整各自模型的权重。举个例子,BERT 默认并不使用开窗(windowing)。因为在针对语言建模进行微调时,调整权重是合理的。但是,更新所有权重可能导致过拟合,因为 WikiText 或 Penn Tree Bank 之类的数据集比用于训练 GPT 和 BERT 的数据小一个数量级以上。

为了解决这一难题,我们提出在微调过程中仅更新一部分层的权重。因为 GPT 和 BERT 都有 12 个 Transformer 模块,每一个模块都包含一个自注意和一个逐点全连接层,所以难以简单直接地选出参数应该固定的那部分层。于是我们转而自动搜索对语言模型任务而言最有效的那一部分层。搜索算法将在后面介绍。

添加一个 LSTM

通过 Transformer 中的傅立叶基实现的位置编码仅能提供模糊的相对位置信息,这会迫使层在每层为特定的词访问重新创建三角法(trigonometry)。这会出现问题,因为语言模型需要强大的词级上下文信息来预测下一个词。RNN 可显式地建模这种序列信息。因此我们提出向 Transformer 架构添加 LSTM 层。

理论上而言,我们可以在任意位置添加 LSTM 层,甚至可以将它们与 Transformer 交织起来。但是,LSTM 会显著影响计算效率,因为它们不支持并行计算。我们的推理过程类似于 SRU(简单循环单元 (Lei et al., 2018))的设计思路。因此,我们提出要么在所有基础 Transformer 模块之前添加一层 LSTM,要么就加在它们后面。对于前者,我们在嵌入层之后直接添加 LSTM 层,并移除位置嵌入和分段嵌入,因为我们相信 LSTM 层能够编码足够的序列信息。对于后者,我们在最后一个 Transformer 模块与输出线性层之间插入 LSTM 层。我们通过自动搜索认定这就是 LSTM 的最佳位置。

协调式架构搜索

现在我们已有了基本的组件,这里回顾一下为了获得表现优良的架构而提出的网络变换和相关的搜索过程。

网络变换

我们前面提出了多种可改变网络的变换方式,我们将它们分别称为:AddLinear、AddLSTM、FixSubset。其中 AddLinear 是添加线性输出层,AddLSTM 是添加 LSTM 层,FixSubset 是固定一部分 Transformer 模块的权重

搜索候选项采样

图 1:搜索候选项采样。图中 net 是指基础架构,candidate 是下一步骤返回的架构。Transformers、Embeddings、LSTM 和 Linear 是各种变换。其中颜色较浅的模块是可变的,深色模块是固定的。参见算法 1。

算法 1:搜索候选项采样

协调式架构搜索

图 2:协调式架构搜索。net_best 是指搜索的第 i 步骤的最佳架构。我们采样搜索候选项,并保留表现最好的那个。我们的衡量指标是微调后在目标数据集上的困惑度(Val PPL)。参见算法 2。

算法 2:协调式架构搜索

实验

为了体现使用协调式搜索找到的 Transformer 架构的有效性,我们在 WikiText 和 Penn TreeBank 数据集上进行了实验。我们也给出了与其它已有神经搜索策略的比较。结果见表 1 和图 3。

表 1:协调式架构搜索(CAS)的表现。Val 和 Test 分别指验证和测试困惑度。

图 3:CAS 与其它模型的测试困惑度比较(左图是使用 BERT 预训练模型的结果;右图是使用 GPT 预训练模型的结果)。「Subset」是指没有使用 LSTM 的变体,「LSTM」则对应不更新 Transformer 模块的模型。

此外,我们也执行了消融实验,结果也证实了我们的直观认识,即我们需要首先使用固定子集权重保留粗粒度的表征,然后再使用 LSTM 来建模词序依赖性。

最后,我们还比较了新提出的模型与当前最佳的语言模型 GPT-2,比较指标分为三个维度:结果、参数规模、训练数据规模。结果见表 6 和表 7。可以看到,在参数方面我们的 BERT-Large-CAS 在 PTB 和 WT-103 上比 GPT-2 更高效,而在 WT-2 上的表现比 GPT-2 差,我们推测原因可能是 WT-2 的规模非常小。而在训练数据方面,BERT-Large-CAS 能用显著更少的数据达到相近的结果。

表 6:模型参数规模与模型结果的比较。GPT-2 模型大小和结果来自 Radford et al., 2019

表 7:与 GPT-2 的训练数据集大小比较

理论自然语言处理神经语言模型Transformer
相关数据
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

二值化技术

二值化是将像素图像转换为二进制图像的过程。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

词嵌入技术

词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

概率分布技术

概率分布(probability distribution)或简称分布,是概率论的一个概念。广义地,它指称随机变量的概率性质--当我们说概率空间中的两个随机变量具有同样的分布(或同分布)时,我们是无法用概率来区别它们的。

语料库技术

语料库一词在语言学上意指大量的文本,通常经过整理,具有既定格式与标记;事实上,语料库英文 "text corpus" 的涵意即为"body of text"。

命名实体识别技术

命名实体识别(NER)是信息提取(Information Extraction)的一个子任务,主要涉及如何从文本中提取命名实体并将其分类至事先划定好的类别,如在招聘信息中提取具体招聘公司、岗位和工作地点的信息,并将其分别归纳至公司、岗位和地点的类别下。命名实体识别往往先将整句拆解为词语并对每个词语进行此行标注,根据习得的规则对词语进行判别。这项任务的关键在于对未知实体的识别。基于此,命名实体识别的主要思想在于根据现有实例的特征总结识别和分类规则。这些方法可以被分为有监督(supervised)、半监督(semi-supervised)和无监督(unsupervised)三类。有监督学习包括隐形马科夫模型(HMM)、决策树、最大熵模型(ME)、支持向量机(SVM)和条件随机场(CRF)。这些方法主要是读取注释语料库,记忆实例并进行学习,根据这些例子的特征生成针对某一种实例的识别规则。

先验知识技术

先验(apriori ;也译作 先天)在拉丁文中指“来自先前的东西”,或稍稍引申指“在经验之前”。近代西方传统中,认为先验指无需经验或先于经验获得的知识。先验知识不依赖于经验,比如,数学式子2+2=4;恒真命题“所有的单身汉一定没有结婚”;以及来自纯粹理性的推断“本体论证明”

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

GPT-2技术

GPT-2是OpenAI于2019年2月发布的基于 transformer 的大型语言模型,包含 15 亿参数、在一个 800 万网页数据集上训练而成。据介绍,该模型是对 GPT 模型的直接扩展,在超出 10 倍的数据量上进行训练,参数量也多出了 10 倍。在性能方面,该模型能够生产连贯的文本段落,在许多语言建模基准上取得了 SOTA 表现。而且该模型在没有任务特定训练的情况下,能够做到初步的阅读理解、机器翻译、问答和自动摘要。

推荐文章
暂无评论
暂无评论~