Transformer-XL: 在自注意力模型中处理长距离依赖

2020/6/17 16:25:40

本文主要是介绍Transformer-XL: 在自注意力模型中处理长距离依赖,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

论文题目:Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context,下载链接

Insight

  • 如何赋予编码器捕获长距离依赖的能力
  • 通过随机排列自然语言而预测某个位置可能出现的词,传统自回归语言模型的推广

Motivation

建立长期依赖:LSTM-->Transformer,带来问题:

  • 固定长度(segment),对长文本效果不佳;
  • 文本截断导致各个片段之间的信息也被截断,缺少上下文信息。

Method

片段级递归机制(segment-level recurrence mechanism)

用途:记忆机制,储存前一片段的信息,然后与当前片段信息拼接,公式如下。

$$ \widetilde{\mathbf{h}}_{\tau+1}^{n-1}=\left[\mathrm{SG}\left(\mathbf{h}_{\tau}^{n-1}\right) \circ \mathbf{h}_{\tau+1}^{n-1}\right] \\ \mathbf{q}_{\tau+1}^{n}, \mathbf{k}_{\tau+1}^{n}, \mathbf{v}_{\tau+1}^{n}=\mathbf{h}_{\tau+1}^{n-1} \mathbf{W}_{q}^{\top}, \widetilde{\mathbf{h}}_{\tau+1}^{n-1} \mathbf{W}_{k}^{\top}, \widetilde{\mathbf{h}}_{\tau+1}^{n-1} \mathbf{W}_{v}^{\top} \\ \mathbf{h}_{\tau+1}^{n}= TRML \left(\mathbf{q}_{\tau+1}^{n}, \mathbf{k}_{\tau+1}^{n}, \mathbf{v}_{\tau+1}^{n}\right) $$

其中,$\widetilde{\mathbf{h}}_{\tau+1}^{n-1}$即前一片段的信息(TRM输出向量),SG指stop-gradient,$[\circ]$指concat,TRML指Transformer Layer.

注意:记忆的状态可以不止前一个segment,在本文实验中,状态的size和attention的length(即segment长度)相同。相当暴力...

相对位置编码机制(relative position embedding scheme)

用途:编码文本在不同片段的相对位置。

传统方法中,因为各个segment是没有联系的,在位置编码时只关注一个segment,采用绝对位置编码对$1:L$进行编码:

$$ \begin{aligned} \mathbf{h}_{\tau+1} &=f\left(\mathbf{h}_{\tau}, \mathbf{E}_{\mathbf{s}_{\tau+1}}+\mathbf{U}_{1: L}\right) \\ \mathbf{h}_{\tau} &=f\left(\mathbf{h}_{\tau-1}, \mathbf{E}_{\mathbf{s}_{\tau}}+\mathbf{U}_{1: L}\right) \end{aligned} $$

可以看到,在$\tau$和$\tau+1$,使用的位置编码是相同的,导致信息混淆。

传统的Attention:

$$ \begin{aligned} \mathbf{A}_{i, j}^{\mathrm{abs}} &=\underbrace{\mathbf{E}_{x_{i}}^{\top} \mathbf{W}_{q}^{\top} \mathbf{W}_{k} \mathbf{E}_{x_{j}}}_{(a)}+\underbrace{\mathbf{E}_{x_{i}}^{\top} \mathbf{W}_{q}^{\top} \mathbf{W}_{k} \mathbf{U}_{j}}_{(b)} \\ &+\underbrace{\mathbf{U}_{i}^{\top} \mathbf{W}_{q}^{\top} \mathbf{W}_{k} \mathbf{E}_{x_{j}}}_{(c)}+\underbrace{\mathbf{U}_{i}^{\top} \mathbf{W}_{q}^{\top} \mathbf{W}_{k} \mathbf{U}_{j}}_{(d)} \end{aligned} $$

与原Transformer中类似,提出一个$\mathbf{R} \in \mathbb{R}^{L} \max \times d$,其中来表示$\mathbf{R}_{i}$表示距离为$i$的两个位置,表达式改写为:

$$ \begin{aligned} \mathbf{A}_{i, j}^{\mathrm{rel}} &=\underbrace{\mathbf{E}_{x_{i}}^{\top} \mathbf{W}_{q}^{\top} \mathbf{W}_{k, E} \mathbf{E}_{x_{j}}}_{(a)}+\underbrace{\mathbf{E}_{x_{i}}^{\top} \mathbf{W}_{q}^{\top} \mathbf{W}_{k, R} \mathbf{R}_{i-j}}_{(b)} \\ &+\underbrace{u^{\top} \mathbf{W}_{k, E} \mathbf{E}_{x_{j}}}_{(c)}+\underbrace{v^{\top} \mathbf{W}_{k, R} \mathbf{R}_{i-j}}_{(d)} \end{aligned} $$

其中,主要的变化为:

  • $\mathbf{U}_{j}$变成了$\mathbf{R}_{i-j}$:用相对位置替换绝对位置;
  • $\mathbf{U}_{i}^{\top} \mathbf{W}_{q}^{\top}$变成了$u \in \mathbb{R}^{d}$和$v \in \mathbb{R}^{d}$:之前是绝对位置编码作为query,在考虑相对位置的情况下,不需要查询绝对位置,所以将其改为可训练的向量;
  • 在$c$,$d$中区分$\mathbf{W}_{k, E}$和$\mathbf{W}_{k, R}$:分别产生基于内容和位置的key(猜测是因为$c$项中没有位置相关信息了,所以将位置和内容信息分离开,效果更好。)

其中各部分用途为:

  • $a$表示内容信息,
  • $b$表示依赖于内容的位置信息,
  • $c$为全局的内容bias, 调整内容的重要性;
  • $d$为全局位置bias,调整距离的重要性。

其他重要的实验细节

  1. 参数量(由小到大,由于实验数据不同,参数量在不同数据间不一定可比)

    • 12L Transformer-XL: 41M
    • 12L Transformer: 44M
    • 18L Transformer-XL: 88M
    • Transformer-XL Standard:151M
    • Transformer-XL Large: 257M
    • 24L Transformer-XL: 277M
  2. WikiText-103数据集下细节参考

    • 103M training tokens from 28K articles
    • 384 during training and 1600 during evaluation
  3. enwik8数据集下细节参考

    • 模型大小 18-layer and 24-layer Transformer-XLs
    • 注意力长度: 784 during training and 3,800 during evaluation
  4. base模型与large模型的gap

    • 参数量:0.46B~0.8B
    • PPL: 23.5~21.8
    • base模型已经远超LSTM,相对于vanilla Transformer的改进方法Adaptive input则为23.5~23.7
    • large模型相对于Adaptive input则为21.8~23.7

相关论文与代码

  1. Github-transformer-xl,原论文模型
  2. Github-transformer-xl-chinese,中文模型,用于生成文本
  3. Baevski A, Auli M. Adaptive input representations for neural language modeling[J]. arXiv preprint arXiv:1809.10853, 2018.


这篇关于Transformer-XL: 在自注意力模型中处理长距离依赖的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程