Transformer-XL详解

 

提出原因

为解决self.attention的n方复杂度,以及超长文本获取信息冗余问题,限制输入文本的长度,一般的Transformer在处理超长文本时,训练时segment分开,一个一个训练,预测时,segment步长为1进行移动,效率太低,故改进出了Transformer-XL

为啥叫Transformer-XL

XL—>尺码中的XL,大,这个Transformer机制可以关注长的文本内容。

创新

Transformer-XL结构图:

image-20210607094402664Transformer-XL架构在vanilla Transformer的基础上引入了两点创新:

  1. 循环机制(Recurrence Mechanism)

  2. 相对位置编码(Relative Positional Encoding)。

以克服Vanilla Transformer的缺点。与Vanilla Transformer相比,Transformer-XL的另一个优势是它可以被用于单词级和字符级的语言建模

PS:Vanilla Transformer是Transformer和Transformer-XL中间过度的一个算法

Vanilla Transformer的三个缺点:

  • 上下文长度受限:字符之间的最大依赖距离受输入长度的限制,模型看不到出现在几个句子之前的单词。

  • 上下文碎片:对于长度超过512个字符的文本,都是从头开始单独训练的。段与段之间没有上下文依赖性,会让训练效率低下,也会影响模型的性能。

  • 推理速度慢:在测试阶段,每次预测下一个单词,都需要重新构建一遍上下文,并从头开始计算,这样的计算速度非常慢。

    vanilla Transformer结构图:

vanilla Transformer示意图

 

循环机制(Recurrence Mechanism)

 

由上图vanilla Transformer结构图(a)也可以知道,Vanilla Transformer对于长度超过512个字符的文本,都是从头开始单独训练的段与段之间没有上下文依赖性。

因此Transformer-XL引入了段间循环机制来利用前段信息,实现长期依赖

image-20210607100511833

在训练的时候,对于后面一个隐藏层,他都会得到两个输入(个人感觉思想类似于LSTM中后一个神经元就是收到前面一个神经元的影响)

第一个输入:该段的前面节点的输出,与Vanilla Transformer相同(上图的灰色线)。

第二个输入:前面段的节点的输出(上图的绿色线),可以使模型创建长期依赖关系。这部分输出市通过cache的机制传导过来,所以不会参与梯度的计算。原则上只要GPU内存允许,该方法可以利用前面更多段的信息。

预测阶段:

​的预测我们可以拿之前预测好的[x1,x2,x3...x10]的结果拿过来,直接预测。同理在预测​的时候可以通过套娃的方式从预测好的[x1,x2,x3...x10,x11]得到结果。

相对位置编码

Transformer的位置编码

我们先来简单回顾一下Transformer的位置编码,详情请移步这里[2]。

Transformer采用了正余弦编码

image-20210610164909915

位置指的是一个词向量里数据的位置,pos指的才是单词在语句中的位置。​是维数(按我的理解就是一个词向量的长度)。

Transformer-XL 相对位置编码

Transformer位置编码在Transformer-XL上的局限性

在Transformer中,一个重要的地方在于其考虑了序列的位置信息。在分段的情况下,如果仅仅对于每个段仍直接使用Transformer中的位置编码,会导致每个不同段在同一个位置上的表示使用相同的位置编码,就会出现问题。

比如,第i-1与第i-2的第一个字都相同,那么他们的位置编码将为一样,但是显然他们对第i段的建模重要性不同。因此,需要对这种位置进行区分。

相对位置编码

我们知道,Transformer中有查询向量(​),关键词向量(​)的处理,而处理的对象就是添加了位置编码(​)的Embedding(​):

在这里插入图片描述

  • 其中的下标i与j分别代表词i与词j

    将上式展开,我们便可以得到

在这里插入图片描述

在Transformer-XL中,对上述的attention计算方式进行了变换,转为相对位置的计算,而且不仅仅在第一层这么计算,在每一层都是这样计算。

img

 

在(b)和(d)这两项中,将所有绝对位置向量​,都转为相对位置向量​,与Transformer一样,这是一个固定的编码向量,不需要学习。

在(c)这一项中,将查询的​ ​ 向量转为一个需要学习的参数向量u,因为在考虑相对位置的时候,不需要查询的绝对位置i,因此对于任意的i,都可以采用同样的向量。同理,在(d)这一项中,也将查询的​ ​ ,向量转为另一个需要学习的参数向量v。

将键的权重变换矩阵​转为​和​,分别作为content-based key vectors和location-based key vectors。

可以将Transformer-XL中的attention的计算分为如下四个部分:

  1. 基于内容的“寻址”,即没有添加原始位置编码的原始分数。

  2. 基于内容的位置偏置,即相对于当前内容的位置偏差。

  3. 全局的内容偏置,用于衡量key的重要性。

  4. 全局的位置偏置,根据query和key之间的距离调整重要性

 

4. 总结

4.1 优点

  1. 在几种不同的数据集(大/小,字符级别/单词级别等)均实现了最先进的语言建模结果。

  2. 结合了深度学习的两个重要概念——循环机制和注意力机制,允许模型学习长期依赖性,且可能可以扩展到需要该能力的其他深度学习领域,例如音频分析(如每秒16k样本的语音数据)等。

  3. 在inference阶段非常快,比之前最先进的利用Transformer模型进行语言建模的方法快300~1800倍。

4.2 不足

  1. 尚未在具体的NLP任务如情感分析、QA等上应用。 没有给出与其他的基于Transformer的模型,如BERT等,对比有何优势。

  2. 训练模型需要用到大量的TPU资源。

 

 

参考

[1]  https://www.cnblogs.com/huangyc/p/11445150.html 

[2]  https://asthestarsfalll.icu/2021/06/04/transformer/index.html 

[3]  https://www.cnblogs.com/shona/p/12041055.html 

[4]  https://blog.csdn.net/qq_22795223/article/details/106130388?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162331317816780366570138%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162331317816780366570138&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-106130388.first_rank_v2_pc_rank_v29&utm_term=transformer-XL%E5%9B%BE%E8%A7%A3&spm=1018.2226.3001.4187 

[5] Transformer-XL解读(论文 + PyTorch源码)_Magical_Bubble的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值