XLNet详解

XLNet详解

前言:

  • 自回归模型AR(autoregressivee):依据上文预测下一个词,如ELMo、GPT等,
    • 优点:由于其特性,天然符合文本生成的过程,对生成模型友好。如大名鼎鼎的gpt就是生成模型;
    • 缺点:它只能利用单向语义,不能利用上下文信息,一般没有利用双向语义的效果好。
  • 自编码模型AE(autoencode):破坏原始序列,依据上下文进行还原,如BERT及其衍生模型就是通过随机将一些 token 替换成 “MASK” 来实现这一过程。
    • 优点:能够利用上下文信息,获取语义信息相对丰富,在自然语言下游任务中表现很突出。
    • 缺点:
      1. 因为是利用上下文信息,对生成式任务捉襟见肘;
      2. AE模型在训练时候使用【MASK】标记,导致预训练和微调阶段数据不一致;
      3. BERT独立性假设问题,即被mask掉的词之间是相互独立的,就没有对被遮掩(Mask)的 token 之间关系进行学习。

概念

XLNet :是一个语言模型。和ELMO,GPT,BERT一脉相承,同时借鉴了Transformer-XL,故称XLNet(XL含义源于衣服尺码,意思是模型横向更宽),在预训练阶段采用了基于AR的双向编码机制,这样就解决了bert的几个痛点。

模型结构

XLNet 是基于AR的双向编码机制,它在AR的基础上加入了一个步骤就结合了上下文信息,这就是Premutation Language Model (PLM)
具体的实现方式:
通过对一句话随机打乱顺序,取其中一种排序方式,对末尾的词进行“遮盖”,然后按照AR的方式预测“遮盖”的词。

IMG20220927154955
可以发现通过随机取排列(Permutation)中的一种,就能非常巧妙地通过 AR 的单向方式来习得双向信息了。 但是再真正训练时,不会打乱序列,而是通过mask矩阵实现permutation。这样可以与fine-tune的输入序列保持一致,不会存在pretrain-finetune差异。
IMG20220927154955

比如说序号依次为 1234 的句子,先随机取一种排列3241。于是根据这个排列我们就做出类似上图的 Attention Mask。先看第1行,因为在新的排列方式中 1 在最后一个,根据从左到右 AR 方式,1 就能看到 234 全部,于是第一行的 234 位置是红色的(没有遮盖掉,会用到),以此类推。第2行,因为 2 在新排列是第二个,只能看到 3,于是 3 位置是红色。第 3 行,因为 3 在第一个,看不到其他位置,所以全部遮盖掉…

模型结构的实现方式

XLNet是由Transformer衍生的模型,Transformer的Attention只带有token编码,位置信息包含在token编码里,而AR目标是不允许模型看到当前token编码的,因此要把position embedding拆出来。

  1. 在对目标词预测的时候,要考虑到当前目标词的位置信息;
  2. 要包含目标词的上下文信息。
Two-Stream Self-Attention机制:
  1. Query stream:只能看到当前的位置信息,不能看到当前token的编码:
IMG20220927154955
  1. Content stream:传统self-attention,像GPT一样对当前token进行编码:
IMG20220927154955

这样再利用上下文信息的同时又没有暴露当前位置信息的内容。
具体操作就是用两组隐状态(hidden states) g 和 h。其中g 只有位置信息,作为self-attention里的Q,h包含内容信息,作为 K和V。具体表示如下图所示:

IMG20220927154955

注意以下两点:

  1. 最下面一层蓝色的 Content Stream 的输入是 e x p ( x i ) exp(x_i) exp(xi) ,这个很好懂就是 x 对应的词向量 (Embedding),不同词对应不同向量,但看旁边绿色的 Query Stream,就会觉得很奇怪,为什么都是一样的 w?这个和Relative Positional Encoding 有关。
  2. Query stream attention图中为了便于说明,只将当前位置之外的 h 作为 K 和 V,但实际上实现中应该是所有时序上的 h 都作为 K 和 V,最后再交给上图中的 Query stream 的 Attention Mask 来完成位置的遮盖。
Partial Prediction

因为LM是从第一个Token预测到最后一个Token,在预测的起始阶段,上文信息很少而不足以支持Token的预测,这样可能会对分布产生误导,从而使得模型收敛变慢。为此,XLNet只预测后面一部分的Token,而把前面的所有Token都当作上下文。具体来说,对长度为 T 的句子,我们选取一个超参数 K,使得后面 1/K的Token用来预测,前面的 1 - 1/K 的Token用作上下文。注意K 越大,上下文越多,模型预测得就越精确。

Transformer-XL

由于该模型是基于transformer结构的,transformer的缺点也同时存在。就选择了transformer-xl。旨在提取更长距离信息

  • 提出片段级循环机制(segment-level recurrence mechanism),引入一个记忆(memory)模块(类似于cache或cell),循环用来建模片段之间的联系。这使得长距离依赖的建模成为可能;也使得片段之间产生交互,解决上下文碎片化问题。
  • 提出相对位置编码机制(relative position embedding scheme),代替绝对位置编码。在memory的循环计算过程中,避免时序混淆,位置编码可重用。

Transformer-XL总结:片段级循环机制为了解决编码长距离依赖和上下文碎片化,相对位置编码机制为了实现片段级循环机制而提出,解决可能出现的时序混淆问题。也可以简单的理解Transformer-XL=Transformer + RNN,即segment-wise的RNN模型,但是RNN模型的组件是Transformer的Encoder模块。

总结对比

  • XLNet提出了与Bert采取Denoising Autoencoder方式不同的新的预训练目标:Permutation Language Model。在自回归LM模式下,采取特殊机制,融入双向语言模型。这个是XLNet在模型角度比较大的创新,打开了NLP中两阶段模式的一个新思路。
  • 引入了Transformer-XL:相对位置编码以及分段循环机制。实践证明这两点对于长文档任务是很有帮助的。
  • 增加预训练阶段使用的数据规模;Bert使用的预训练数据是BooksCorpus和英文Wiki数据,大小13G。XLNet在这些数据的基础上,引入了Giga5、ClueWeb、Common Crawl数据。

XLNet虽然使用的是AR模型,但也是通过mask的方式实现,mask机制真的强大~

此外,说一句题外话,XLNet 从后续评价上是比不上Bert的,目前基本上没有延续XLnet的研究,许多研究都是在Bert或者RoBerta基础上进行的修改~

常见的面试问题

1、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值