[XLNet]论文解读:XLNet:Generalized Autoregressive Pretraining for Language Understanding

简介: [XLNet]论文解读:XLNet:Generalized Autoregressive Pretraining for Language Understanding

论文:XLNet: Generalized Autoregressive Pretraining for Language Understanding

作者:Zhilin Yang, Zihang Dai, Yiming Yang, Jaime Carbonell, Ruslan Salakhutdinov, Quoc V. Le

时间:2020

地址:https://github.com/zihangdai/xlnet

1. 介绍

自回归语言模型(AR):具有代表性的是GPT;

AR模型是单向的,其要么是从左到右,要么是从右到左,不能考虑到所有的上下文信息,这里以从左到右为例,其目的就是最大化:

其中e(xt)表示 xt的位置编码,而 hθ(x1:t1)表示1到t-1位置上神经网络的非线性函数,或者说上下文表示,这样得到的结果经过softmax就得到了要预测的值;

这里有一点儿缺陷,就是AR模型不能结合上下文;

自编码模型(AE):具有代表性的是BERT;

AE模型是双向的,其是通过一个整体的上下文表示来预测另一整体的上下文表示,每一个位置上的token都可以获得任何位置上的token的信息,其训练方式有两种,一种是mask,一种是NSP,但是NSP被认为效果不好,这里我们以mask来进行分析;首先,其目的是最大化:

其中 mt=1表示  xt被mask掉了, Hθ(x^)t表示隐藏t位置的隐藏状态, image.png 表示mask的原来的token, image.png 表示带有mask的序列;

从公式中可以看出,这里有一些缺陷:

  1. 假设mask独立,因为这里是直接累计的形式,其本质是假设各个mask之间是独立的;
  2. 训练时input里含有mask,而在下游任务中并不会出现;

2. 模型架构

尝试建立一个模型去结合AR的优点和AE的优点;

2.1 Permutation Language Modeling

长度为T的序列,一共有T!总不同的排列,如果每个位置的token都可能为序列中的任意一个token,由于参数共享这一原理,就相当于结合了上下文;其本质是使用类GPT模型去构造一个集合类BERT和类GPT模型;

如图:

图中利用了transformer-xl机制,所以有memory

看起来挺合理的,其目标函数如下,从排列中抽样来训练模型;

但是在这里会出现一种情况,就是相同的序列可以会预测不同的token;如图:

如何解决这个问题呢,这里就要用到改变编码方式的方法;文章中叫做Architecture: Two-Stream Self-Attention for Target-Aware Representations

2.2 Two-Stream Self-Attention for Target-Aware Representations

Architecture: Two-Stream Self-Attention for Target-Aware Representations

其采取的方式就是集合content stream attentionquery stream attention的方式:

content stream attention:  hθ(xzt),和普通的transformer采取的注意力机制一样;这种表示可以看到上下文和自己;

query stream attention: gθ(xzt),和普通的不同,这种表示只可以看到自己的位置和上下文的信息,不包含自己;

如图所示:

论文中非常详细,下图是content stream的流程:

下图是query stream的流程:

模型架构用公式表示如下所示:

在这里要提的一点是,这里不是在输入层进行排序,而是在attention中的mask进行;

同时,这里如果考虑所有的排序会非常不现实,毕竟阶乘比指数更加可怕,这里采用的办法是partial prediction,即部分预测;

总结就是在c位置时,只选择 image.png 个排列进行预测,而不是考虑全部;

2.3 超参数设置

训练时:

可以看到这是一个较大的模型,这里有24层layers

微调时:

说明作者不心虚~

2.4 相对编码

这里采取的编码方式不同于BERT,这里采用的是transformer-xl的位置编码方式,相对位置编码;

2.5 模型比较

下面是一些模型的对比:

可以看到,XLNet要显著的优于BERT,和RoBERTa比,其性能还是要高于RoBERTa的;

消融实验结果如下:

从中我们可以看到XLNet要明显优于BERT,但要是删除memory机制即transformer-xl性能会明显下降,第6 - 7行表明,span-based predbidirectional dataXLNet中都发挥着重要作用,nect-sentence prediction效果好像并不显著,这里在原始的XLNet中并没有加入NSP任务进行预训练;

3. 总结

XLNet主要就是两个东西,一个是Permutation Language Modeling,一个是transformer-xl;感觉性能相对于roberta也没提升多少,这个模型的架构应该是不太行;


目录
相关文章
|
算法 C语言 C++
二叉树三种遍历(动态图+代码深入理解)
二叉树三种遍历(动态图+代码深入理解)
3176 3
二叉树三种遍历(动态图+代码深入理解)
|
算法 Java 数据安全/隐私保护
如何使用OpenSSL工具生成根证书与应用证书
如何使用OpenSSL工具生成根证书与应用证书 一、步骤简记 [java] view plain copy   // 生成顶级CA的公钥证书和私钥文件,有效期10年(RSA 1024bits,默认)   openssl req -new -x509 -days 3650 -keyout CARoot1024.
3737 0
|
机器学习/深度学习 人工智能 自然语言处理
软件测试中的人工智能:现状与未来
【10月更文挑战第6天】 本文探讨了人工智能在软件测试中的应用,包括自动化测试、智能缺陷分析以及测试用例生成等方面。通过案例分析和未来趋势预测,文章展示了AI如何提高软件测试的效率和准确性,并指出了当前面临的挑战和未来的发展方向。
198 1
|
机器学习/深度学习 JSON 自然语言处理
[GPT-1]论文实现:Improving Language Understanding by Generative Pre-Training
[GPT-1]论文实现:Improving Language Understanding by Generative Pre-Training
545 1
|
存储 人工智能 自然语言处理
机器学习系列 | 04: 知识图谱发展历程及其分类
本文简要梳理知识图谱的前世今生及其分类
|
数据采集 机器学习/深度学习 算法
|
Python
已解决:_tkinter.TcLError: couldn’t recognize data in image file “Image/nakamuraan.gif”
已解决:_tkinter.TcLError: couldn’t recognize data in image file “Image/nakamuraan.gif”
411 1
|
机器学习/深度学习 人工智能 文字识别
超全干货分享:什么是RPA?
7月28日,阿里云RPA4.0版本重磅发布,为企业数字化转型提供高效、安全、可靠的服务。RPA是一款软件机器人,能够模拟人的行为完成软件的交互,能够解决跨系统、跨平台,重复有规律的工作流程。时至今日,阿里云RPA已被超过50万各行各业的用户采用,可以跟踪到的执行总次数已突破120亿次,用户使用RPA获得了3-10倍的效率提升
12434 0
超全干货分享:什么是RPA?
|
安全 网络安全 CDN
阿里云CDN HTTPS 证书配置流程
阿里云CDN HTTPS 证书配置流程
1686 1
|
人工智能 自然语言处理 搜索推荐
阿里推出 AtomoVideo 高保真图生视频框架,兼容多种文生图模型
【2月更文挑战第17天】阿里推出 AtomoVideo 高保真图生视频框架,兼容多种文生图模型
1298 5
阿里推出 AtomoVideo 高保真图生视频框架,兼容多种文生图模型