XLNet: Generalized Autoregressive Pretraining for Language Understanding

XLNet: Generalized Autoregressive Pretraining for Language Understanding

    • origin
    • motivation
    • proposed method
    • discuss and analysis
    • experiment

for Language Understanding)

origin

Zhilin Yang∗1, Zihang Dai∗12, Yiming Yang1, Jaime Carbonell1,
Ruslan Salakhutdinov1, Quoc V. Le2
1Carnegie Mellon University, 2Google Brain
代码

motivation

在过去的一年,一些非常有影响力的语言模型提出,基于语言模型预训练的词向量在许多自然语言处理任务上取得了非常突出的突破,如ELMO、Bert模型等。bert是训练一个语言模型来预测句子中被mask的单词,但是在bert中假设了这些被mask的token是相互独立的,忽略了token之间存在的依赖关系。另外在bert模型中出现的一些标识符如[mask]等等,在finetune时的数据中不会出现,因此pretrain和finertune两个阶段中出现差异。 针对上述的问题,XLNet做了如下两个方面的改进:

  1. 自回归的模型通常只能一个方向来建模语言模型,前向或者后向。 XLNet是一个排列语言模型,最大化所有分解序列出现似然函数的期望。综合所有的分解序列,每一个位置的上下文可以包括它左边和右边的上下文
  2. XLNet不依赖于数据损坏,因此可以不受pretrain-finetune差异的影响。另外对于每个分解的序列可以按照正常乘法法则计算单词的概率。
    除了上述对训练目标的两个方面的改进, 本文在模型方面也进行了一些改进:
  3. 在预训练中使用片段循环机制以及相对编码机制, 尤其是有利于提升一些长序列处理任务
    2.直接将transformer(-XL)架构应用于基于排列的语言建模不起作用,因为分解顺序是任意的并且目标是不明确的。 作为解决方案,我们建议重新参数化Transformer(-XL)网络以消除歧义

proposed method

自回归模型预测一个序列出现的概率:
在这里插入图片描述
bert模型:
将序列中待遇测的token使用[mask]替代, 计算被mask的序列的概率:
在这里插入图片描述
如果一个token被mask了,则 m t = 1 m_t = 1 mt=1

对比自回归模型和bert有如下的利弊:
1.bert假设被mask掉的单词是相互独立的,而自回归模型使用上面的公式1中的乘法规则计算序列的概率,没有bert中的独立性假设
2. bert中引入了人工标记[masked],而这些标记在下游的任务中并不会出现,因此存在pretrain-finetune差异。自回归模型不依赖于input corruption,因此不受影响
3. 自回归模型在一个位置只能建模它的前面的上文,而bert模型可以建模token的上下文,因此个更有利于捕捉上下文信息

排列的语言模型:
本文的出发点就是融合bert模型和自回归模型的优点,弥补缺点。因此提出基于排列的语言模型,即对于一个长度为T的序列,一共有 T ! T! T!个排序,直观上,对于每个排序如果参数是共享的,在期望中,每个位置都可以获得左右两边的信息。
在这里插入图片描述
Z T Z_T ZT是所有的排列
排列的实现:我们保持原始序列顺序,使用对应于原始序列的位置编码,在transformer中使用注意掩码来实现分解顺序的排列。这样做的目的是在finetune中只有原始的序列的顺序
架构
使用目标感知的双流自注意力表示
目标位置感知:
如果使用一般的transformer预测下一个token的概率:
在这里插入图片描述
h θ ( x z < t ) h_\theta(x_{z<t}) hθ(xz<t) 不依赖预测目标的位置,因此无论目标位置是哪里,分布都是一样的,这样学习不到更多有用的东西。这里使用目标位置感知方式预测token的分布:
在这里插入图片描述
双流注意力
我们期望在位置 Z t Z_t Zt 通过注意力机制获得 X z < t X_{z<t} Xz<t中的信息,使用标准的transformer结构存在下面的问题:
在预测 X z t X_{z_t} Xzt时, g θ ( ) g_\theta() gθ()需要知道目标词 z t z_t zt的位置,不需要知道内容。但是在预测 j > t j>t j>t处的token时,却需要知道所有的 X z t < j X_{z_{t<j}} Xzt<j, 为了解决这个问题,我们使用两组隐状态表示而不是一种,上下文状态表示和查询表示
在这里插入图片描述

部分预测:
排列语言模型存在一个很大问题是它的收敛速度,为了加快收敛速度,文章使用部分预测的策略,按照预测目标划分为两个部分,一个部分包括预测词一个不包括, 目标是最大化条件概率,以不含目标词序列为条件,预测包括目标词序列
在这里插入图片描述
预测词的个数作为一个超参数 K = ∣ z ∣ ∣ z ∣ − c K = \frac{|z|}{|z| -c} K=zcz

segment recurrence mechanism:
假设有两个segment, [1,2,T] 和 [T+1, T+2, …, 2T]
在这里插入图片描述
一旦得到了 h ~ ( m − 1 ) \tilde{h}^{(m-1)} h~(m1), 注意力的更新就不会依赖于 z ~ \tilde{z} z~。允许在不知道前一段的分解顺序的情况下缓存和重用存储器。在期望中,模型学习利用最后一段的所有分解顺序的存储器。
XLNet: Generalized Autoregressive Pretraining for Language Understanding_第1张图片

discuss and analysis

这里举例说明XLNet和bert的区别, 句子序列“New York is a city", 假设要预测的词是New 和 York。
XLNet: Generalized Autoregressive Pretraining for Language Understanding_第2张图片

experiment

阅读理解任务:
XLNet: Generalized Autoregressive Pretraining for Language Understanding_第3张图片
XLNet: Generalized Autoregressive Pretraining for Language Understanding_第4张图片

文本分类:
XLNet: Generalized Autoregressive Pretraining for Language Understanding_第5张图片

XLNet: Generalized Autoregressive Pretraining for Language Understanding_第6张图片
XLNet: Generalized Autoregressive Pretraining for Language Understanding_第7张图片
消融测试:
XLNet: Generalized Autoregressive Pretraining for Language Understanding_第8张图片

你可能感兴趣的:(XLNet: Generalized Autoregressive Pretraining for Language Understanding)