论文笔记 —— XLNet [在20项任务上超越BERT]

From Google Brain and CMU.
Authors: Zhilin Yang∗, Zihang Dai∗, Yiming Yang, Jaime Carbonell, Ruslan Salakhutdinov, Quoc V. Le
Title: XLNet: Generalized Autoregressive Pretraining for Language Understanding.
Preprint at 2019.6.20.

Introduction

这篇论文建立在Transformer-XL【作者们ACL2019的工作】的基础之上。看过Transformer-XL的同学应该知道其编码方式其实已经有了挺大的改进,对长文本的编码优于Vanilla Transformer。本文引入了PLM(Permutation Language Model,排列语言模型【Permutation: a way, especially one of several possible variations, in which a set or number of things can be ordered or arranged.】)而抛弃BERT的Mask LM,然后引入Masked Two-Stream Self-Attention解决PLM出现的目标预测问题【见Motivation】,最后用三倍于BERT的语料进行预训练,刷榜SQuAD、GLUE、RACE等。

Motivation

文章从**AR(autoregressive,自回归)和AE(autoencoding,自编码)**的角度出发,解释论文动机。

  • AR LM,即自回归语言模型。具体而言,给定一个序列,当前token/时刻只知道前面的信息,而不知道后面的信息,即使分成正向和反向计算当前token时刻的概率分布,也是同样的原则,ELMo、GPT是属于这个范畴。对于一些自然语言理解任务而言,是给定上下文的,即使ELMo把两个的方向计算的信息concat,但也是独立计算,对上下文的编码是有缺陷的。
  • AE LM,即自编码语言模型。BERT通过预测原始数据里MASK掉的token来预训练语言模型,预测[MASK]使用了上下文信息,弥补了AR LM的缺陷。但是[MASK]只在预训练的时候用到,finetune的时候是不用的,这使得pretrain/train不一致【这点顶一下BERT,我觉得这样更能体现泛化能力】。并且,BERT假定每个[MASK]与其他[MASK]是相互独立的,不能计算序列、长期依赖的联合概率。即使BERT的NSP预训练任务一定程度上给了模型建模句间关系的能力,但是还是对长文本不敏感。

本文结合AR LM和AE LM,在Transformer-XL的基础上提出generalized autoregressive method,XLNet。

  • 所有的分解序列作为一个集合,对每一个采样序列,XLNet按照AR LM的计算方式求对数似然期望的极大值。通常,当前token的上文包含left和right的tokens:比如原始序列为1-2-3-4,分解序列中采样一个为2-4-1-3,那么如果当前token为3,XLNet的方式就可以看到所有的信息【当然这也是理想情况】,而AR LM只能看到1和2。
  • 引入Transformer-XL的segment recurrence mechanism和relative encoding scheme。
  • 引入Masked Two-Stream Self-Attention解决PLM出现的目标预测歧义【the ambiguity in target prediction】问题。举个例子,比如分解序列中采样一个为2-4-6-1-3-5的序列,假设要预测[1]的token,按照经典的Transformer来计算next-token的概率分布,位置[1]的token的概率就是通过[2,4,6]位置上的tokens来计算softmax,不会把[1]作为输入来计算的。但是如果以这种方式去预测next-token,这对[3,5]的预测就会产生影响,因为如果[1]的预测出现错误会把错误传给后面。对后面每一个token的预测,需要建立在之前token都已知的条件下。因此本文计算了两个self-attention计算方式,一个mask当前词,attention值记为g;一个已知当前词,attention值记为h。最后假设self-attention一共有M层,用第M层、t时刻的g_t,去预测词x_t。

Model

Permutation Language Modeling

首先代码会根据输入序列的长度采样一个排列,然后用Transformer中attention mask的方式实现排列,如果原始序列长度为T,那么理论上一共有T的阶乘种情况。PLM的目标函数就是所有排列情况(论文里设定:统共T种)的期望最大:
max ⁡ θ E z ∼ Z T [ ∑ t = 1 T log ⁡ p θ ( x z t ∣ x z &lt; t ) ] \max _{\theta} \quad \mathbb{E}_{\mathbf{z} \sim\mathcal{Z}_{T}}\left[\sum_{t=1}^{T} \log p_{\theta}\left(x_{z_{t}} |\mathbf{x}_{\mathbf{z}_{&lt;t}}\right)\right] θmaxEzZT[t=1Tlogpθ(xztxz<t)]
这样pretrain和finetune阶段就一样了,输入都是原始序列,通过attention mask实现随机产生的排列。下图是排列语言模型的表现形式:
在这里插入图片描述
注:假设要预测t=3的词,按照不同的排列顺序,h_3的上文都不一样,用attention-mask的方式得到t=3的上文。

Two-Stream Self-Attention for Target-Aware Representations

上面是构造输入,这里就是自回归地得到每一时刻的概率分布,示意图如下:
在这里插入图片描述

动机部分已经介绍过为什么要计算两个self-attention。
(a)代表context stream self-attention,以[1,t]时刻的词作为K、V,t时刻的词作为query计算当前词的信息,把排列之后的原始序列信息用h记忆起来。
(b)代表query stream self-attention,mask掉当前词,以[1,t-1]时刻的词作为K、V,t时刻的词作为query预测当前词,得到概率分布。
©代表通过多层的masked two-stream attention,最后用t时刻的g_t来预测x_t。
计算公式如下: g z t ( m ) ←  Attention  ( Q = g z t ( m − 1 ) , K V = h z &lt; t ( m − 1 ) ; θ ) g_{z_{t}}^{(m)} \leftarrow \text { Attention }\left(\mathbf{Q}=g_{z_{t}}^{(m-1)}, \mathbf{K V}=\mathbf{h}_{\mathbf{z}_{&lt;t}}^{(m-1)} ; \theta\right) gzt(m) Attention (Q=gzt(m1),KV=hz<t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IndexFziQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值