7. Transformer-XL原理介绍

1. 语言模型

2. Attention Is All You Need(Transformer)算法原理解析

3. ELMo算法原理解析

4. OpenAI GPT算法原理解析

5. BERT算法原理解析

6. 从Encoder-Decoder(Seq2Seq)理解Attention的本质

7. Transformer-XL原理介绍

1. 前言

2017年6月,Google Brain在论文《Attention Is All You Need》中提出的Transformer架构,彻底摒弃了RNN的循环机制,采用一种self-attention的方式进行全局处理。我也在博客Attention Is All You Need(Transformer)算法原理解析有所介绍。html

Transformer结构的特色:算法

  1. 所有用self-attention的自注意力机制。
  2. 在self-attention的基础上改进了Multi-Attention和Mask Multi-Attention两种多头注意力机制。
  3. 网络由多个层组成,每一个层都由多头注意力机制前馈网络构成。
  4. 因为在全局进行注意力机制的计算,忽略了序列中最重要的位置信息,添加了位置编码(Position Encoding),使用正弦函数完成,为每一个部分的位置生成位置向量。

image

2. Vanilla Transformer

Vanilla Transformer是Transformer和Transformer-XL中间过分的一个算法,因此在介绍Transformer-XL以前咱们先来了解下Vanilla Transformer。网络

Vanilla Transformer的原理图:
image架构

Vanilla Transformer论文中使用64层模型,并仅限于处理 512个字符这种相对较短的输入,所以它将输入分红段,并分别从每一个段中进行学习,以下图所示。 在测试阶段如需处理较长的输入,该模型会在每一步中将输入向右移动一个字符,以此实现对单个字符的预测。函数

Vanilla Transformer的三个缺点:性能

  • 上下文长度受限:字符之间的最大依赖距离受输入长度的限制,模型看不到出如今几个句子以前的单词。
  • 上下文碎片:对于长度超过512个字符的文本,都是从头开始单独训练的。段与段之间没有上下文依赖性,会让训练效率低下,也会影响模型的性能。
  • 推理速度慢:在测试阶段,每次预测下一个单词,都须要从新构建一遍上下文,并从头开始计算,这样的计算速度很是慢。

3. Transformer-XL

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

  1. 循环机制(Recurrence Mechanism)
  2. 相对位置编码(Relative Positional Encoding)。

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

3.1 循环机制(Recurrence Mechanism)

Transformer-XL仍然是使用分段的方式进行建模,但其与Vanilla Transformer的本质不一样是在于引入了段与段之间的循环机制,使得当前段在建模的时候可以利用以前段的信息来实现长期依赖性。以下图所示:编码

image

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

  1. 该段的前面节点的输出,与Vanilla Transformer相同(上图的灰色线)。
  2. 前面段的节点的输出(上图的绿色线),可使模型建立长期依赖关系。这部分输出市经过cache的机制传导过来,因此不会参与梯度的计算。原则上只要GPU内存容许,该方法能够利用前面更多段的信息。

在预测阶段:

若是预测\(x_{11}\)咱们只要拿以前预测好的[\(x_1\),\(x_2\)...\(x_{10}\)]的结果拿过来,直接预测。同理在预测\(x_{12}\)的时候,直接在[\(x_1\),\(x_2\)...\(x_{10}\),\(x_{11}\)]的基础上计算,不用像Vanilla Transformer同样每次预测一个字就要从新计算前面固定个数的词。

3.2 相对位置编码

在Transformer中,一个重要的地方在于其考虑了序列的位置信息。在分段的状况下,若是仅仅对于每一个段仍直接使用Transformer中的位置编码,即每一个不一样段在同一个位置上的表示使用相同的位置编码,就会出现问题。好比,第\(i_2\)段和第\(i_1\)段的第一个位置将具备相同的位置编码,但它们对于第\(i\)段的建模重要性显然并不相同(例如第\(i_2\)段中的第一个位置重要性可能要低一些)。所以,须要对这种位置进行区分。

能够将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资源。