Pretrained-Model-02-Transformer-XL阅读笔记

文章题目:Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context

发表会议及时间:2019-ACL

Pretrained-Model-02-Transformer-XL阅读笔记

1、背景知识

Pretrained-Model-02-Transformer-XL阅读笔记

Pretrained-Model-02-Transformer-XL阅读笔记

2、相关工作

Pretrained-Model-02-Transformer-XL阅读笔记

Valilla Transformer ( https://arxiv.org/abs/1808.04444 )的训练和测试阶段信息流过程

Pretrained-Model-02-Transformer-XL阅读笔记

 训练阶段:

Pretrained-Model-02-Transformer-XL阅读笔记

测试阶段:

Pretrained-Model-02-Transformer-XL阅读笔记

  • 训练阶段:将文本分割为多个片段,进行单独的训练,片段之间的信息无法交流
  • 测试阶段:首先使用X1~X4(假设片段长度为4)来预测X5,然后使用X2~X5的信息来预测X6,需要不断的迁移信息来进行预测,造成了时间的浪费

Pretrained-Model-02-Transformer-XL阅读笔记

3、模型结构

参考博客

https://www.lyrn.ai/2019/01/16/transformer-xl-sota-language-model/

https://blog.****.net/Magical_Bubble/article/details/89060213

针对上述问题,本文提出了Transformmer-XL,其中包括两个创新点

  1. 片段级递归机制
  2. 相对位置编码

3.1、片段级递归机制

为了解决 Vallina Transformer 训练过程中不同片段之间无法信息交流的问题,作者提出了片段级递归机制,与Vanilla Transformer的基本思路一样,Transformer-XL仍然是使用分段的方式进行建模,但其与Vanilla Transformer的本质不同是在于引入了段与段之间的循环机制,使得当前段在建模的时候能够利用之前段的信息来实现长期依赖性。处理过程如下图公式所示

Pretrained-Model-02-Transformer-XL阅读笔记

在训练阶段,处理后面的段时,每个隐藏层都会接收两个输入:

  1. 该段的前面隐藏层的输出,与vanilla Transformer相同(上图的灰色线)。
  2. 前面段的隐藏层的输出(上图的绿色线),可以使模型创建长期依赖关系。

这两个输入会被拼接,然后用于计算当前段的Key和Value矩阵。对于某个段的某一层的具体计算公式如下:

Pretrained-Model-02-Transformer-XL阅读笔记

  • 其中,Pretrained-Model-02-Transformer-XL阅读笔记表示第几段,n表示第几层,h表示隐层的输出
  •  SG() 表示在进行 Pretrained-Model-02-Transformer-XL阅读笔记+1 片段 信息处理时不再计算 Pretrained-Model-02-Transformer-XL阅读笔记 片段的梯度 
  • 第二个公式则与 Transformer 中Q,K,V计算方法相同,不过此时的输入 拼接了上一个片段的隐藏状态
  • 第三个公式则进行Transformer的计算

原则上只要GPU内存允许,该方法可以利用前面更多段的信息,测试阶段也可以获得更长的依赖。

训练阶段 :

 

Pretrained-Model-02-Transformer-XL阅读笔记  

测试阶段 :

Pretrained-Model-02-Transformer-XL阅读笔记

  • 其中绿色部分为segemnt-level recurrence机制,实际使用时的缓存的segemnt可以是不仅限于上一状态
  • RNN的语言模型的recurrence dependency在同一层layer之间,而本模型可以在不同layer之间,因此depency 
    length为 O(N*L)
  • 在测试阶段,与vanilla Transformer相比,其速度也会更快。在vanilla Transformer中,一次只能前进一个step,并且需要重新构建段,并全部从头开始计算;而在Transformer-XL中,每次可以前进一整个段,并利用之前段的数据来预测当前段的输出。

3.2、相对位置编码

在原始的Vallina Transformer模型中,不同片段中相同位置采用的编码机制获得的编码结果是相同的,因此无法区分不同片段中相同位置的元素信息,因此本文提出了相对编码机制 

Pretrained-Model-02-Transformer-XL阅读笔记

Pretrained-Model-02-Transformer-XL阅读笔记 

Pretrained-Model-02-Transformer-XL阅读笔记

Pretrained-Model-02-Transformer-XL阅读笔记

Pretrained-Model-02-Transformer-XL阅读笔记

3.3、加速计算小技巧

对应原文附录B

Pretrained-Model-02-Transformer-XL阅读笔记

Pretrained-Model-02-Transformer-XL阅读笔记

Pretrained-Model-02-Transformer-XL阅读笔记

Pretrained-Model-02-Transformer-XL阅读笔记

4、实验结果与分析

4.1、数据集介绍

Pretrained-Model-02-Transformer-XL阅读笔记

4.2、实验结果对比

Pretrained-Model-02-Transformer-XL阅读笔记

Pretrained-Model-02-Transformer-XL阅读笔记