[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++
二叉树三种遍历(动态图+代码深入理解)
二叉树三种遍历(动态图+代码深入理解)
2725 3
二叉树三种遍历(动态图+代码深入理解)
|
机器学习/深度学习 JSON 自然语言处理
[GPT-1]论文实现:Improving Language Understanding by Generative Pre-Training
[GPT-1]论文实现:Improving Language Understanding by Generative Pre-Training
433 1
|
10月前
|
人工智能 弹性计算 架构师
如何推进软硬件协同优化,点亮 AI 新时代?看看这些大咖怎么说
围绕 AI、操作系统、 Arm 生态等关键技术和领域,深入探讨了 AI 技术与操作系统的融合。
|
安全 Linux 数据库
|
11月前
|
数据采集 机器学习/深度学习 算法
|
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”
341 1
|
数据采集 人工智能
【大模型】大语言模型存在的一些限制
【5月更文挑战第5天】【大模型】大语言模型存在的一些限制
|
机器学习/深度学习 JSON 自然语言处理
LLM2Vec介绍和将Llama 3转换为嵌入模型代码示例
通过LLM2Vec,我们可以使用LLM作为文本嵌入模型。但是简单地从llm中提取的嵌入模型往往表现不如常规嵌入模型。
564 5
|
弹性计算 应用服务中间件 Linux
双剑合璧:在同一ECS服务器上共存Apache与Nginx的实战攻略
在ECS服务器上同时部署Apache和Nginx的实战:安装更新系统,Ubuntu用`sudo apt install apache2 nginx`,CentOS用`sudo yum install httpd nginx`。配置Nginx作为反向代理,处理静态内容及转发动态请求到Apache(监听8080端口)。调整Apache的`ports.conf`监听8080。重启服务测试,实现两者高效协同,提升Web服务性能。记得根据流量和需求优化配置。【6月更文挑战第21天】
1137 1
|
人工智能 自然语言处理 搜索推荐
阿里推出 AtomoVideo 高保真图生视频框架,兼容多种文生图模型
【2月更文挑战第17天】阿里推出 AtomoVideo 高保真图生视频框架,兼容多种文生图模型
1230 5
阿里推出 AtomoVideo 高保真图生视频框架,兼容多种文生图模型