【NLP】XLNet详解

此次写文原本想把从Transformer-XL到XLNet讲一下,可是本身还没看,先写一下XLNet的部分,Transformer-XL明天补上~网络

1. 背景

2018年10月的时候,谷歌放出了称霸GLUE榜单的BERT模型,当时BERT最大的创新就是提出了Masked Language Model做为预训练任务,解决了GPT不能双向编码、ELMo不能深度双向编码的问题。以后从那天起,不少任务都再也不须要复杂的网络结构,也不须要大量的标注数据,业界学术界都基于BERT作了不少事情。函数

昨天,也就是2019年6月19日,谷歌又放出了一个模型XLNet,找到并解决了BERT的缺点,刷爆了BERT以前的成绩(固然数据、算力相比去年都增长了不少)。惊醒你们不要总被牵着走,创新总会从某个缝里钻出来。学习

首先介绍两种无监督目标函数:优化

  1. AR(autoregressive):自回归,假设序列数据存在线性关系,用 [公式] 预测 [公式] 。之前传统的单向语言模型(ELMo、GPT)都是以AR做为目标。
  2. AE(autoencoding):自编码,将输入复制到输出。BERT的MLM就是AE的一种。

AR是之前经常使用的方法,但缺点是不能进行双向的编码。所以BERT采用了AE,获取到序列全局的信息。但本文做者指出了BERT采用AE方法带来的两个问题:编码

  1. BERT有个不符合真实状况的假设:即被mask掉的token是相互独立的。好比预训练时输入:“天然[Mask][Mask]处理”,目标函数实际上是 p(语|天然处理)+p(言|天然处理),而若是使用AR则应该是 p(语|天然)+p(言|天然语)。这样下来BERT获得的几率分布也是基于这个假设的,忽略了这些token之间的联系。
  2. BERT在预训练和精调阶段存在差别:由于在预训练阶段大部分输入都包含[Mask],引入了噪声,即便在小部分状况下使用了其余token,但仍与真实数据存在差别。

以上就是BERT采用AE方法存在的痛点,接下来请看XLNet如何解决这些问题。spa

2. XLNet

与其说XLNet解决了BERT的问题,不如说它基于AR采用了一种新的方法实现双向编码,由于AR方法不存在上述两个痛点。3d

XLNet的创新点是Permutation Language Modeling,以下图:orm

  • 理论上

对于长度为T的序列x,存在T!种排列方法,若是把 [公式] 从新排列成 [公式] ,再采用AR为目标函数,则优化的似然为 [公式] cdn

由于对于不一样的排列方式,模型参数是共享的,因此模型最终能够学习到如何汇集全部位置的信息。blog

  • 操做上

因为计算复杂度的限制,不可能计算全部的序列排列,所以对于每一个序列输入只采样一个排列方式。并且在实际训练时,不会打乱序列,而是经过mask矩阵实现permutation。做者特地强调,这样能够保持与finetune输入顺序的一致,不会存在pretrain-finetune差别。

2.1 Two-Stream Self-Attention

解决了核心问题,接下来就是实现的细节问题了。其实上面打乱顺序后有一个很大的问题,就是在预测第三个x的时候模型预测的是 [公式] ,若是把排列方式换成 [公式] ,则应该预测 [公式] ,但模型是不知道当前要预测的是哪个,所以输出的值是同样的,即 [公式] ,这就不对了。因此说要加入位置信息,即 [公式][公式] ,让模型知道目前是预测哪一个位置的token。

那下一个问题又来了,传统的attention只带有token编码,位置信息都在编码里了,而AR目标是不容许模型看到当前token编码的,所以要把position embedding拆出来。怎么拆呢?做者就提出了Two-Stream Self-Attention。

Query stream:只能看到当前的位置信息,不能看到当前token的编码

[公式]

Content stream:传统self-attention,像GPT同样对当前token进行编码

[公式]

预训练阶段最终预测只使用query stream,由于content stream已经见过当前token了。在精调阶段使用content stream,又回到了传统的self-attention结构。

下面的图起码看3遍~看懂为止,图比我讲的明白。。

另外,由于不像MLM只用预测部分token,还须要计算permutation,XLNet的计算量更大了,所以做者提出了partial prediction进行简化,即只预测后面1/K个token。

2.2 Transformer-XL

为了学习到更长距离的信息,做者沿用了本身的Transformer-XL。



(太困了。。明天继续好很差)

相关文章
相关标签/搜索