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,调整距离的重要性。
其他重要的实验细节
-
参数量(由小到大,由于实验数据不同,参数量在不同数据间不一定可比)
- 12L Transformer-XL: 41M
- 12L Transformer: 44M
- 18L Transformer-XL: 88M
- Transformer-XL Standard:151M
- Transformer-XL Large: 257M
- 24L Transformer-XL: 277M
-
WikiText-103数据集下细节参考
- 103M training tokens from 28K articles
- 384 during training and 1600 during evaluation
-
enwik8数据集下细节参考
- 模型大小 18-layer and 24-layer Transformer-XLs
- 注意力长度: 784 during training and 3,800 during evaluation
-
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
相关论文与代码
- Github-transformer-xl,原论文模型
- Github-transformer-xl-chinese,中文模型,用于生成文本
- Baevski A, Auli M. Adaptive input representations for neural language modeling[J]. arXiv preprint arXiv:1809.10853, 2018.
这篇关于Transformer-XL: 在自注意力模型中处理长距离依赖的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-30tensorflow是什么-icode9专业技术文章分享
- 2024-10-15成功地使用本地的 NVIDIA GPU 运行 PyTorch 或 TensorFlow
- 2024-01-23供应链投毒预警 | 恶意Py包仿冒tensorflow AI框架实施后门投毒攻击
- 2024-01-19attributeerror: module 'tensorflow' has no attribute 'placeholder'
- 2024-01-19module 'tensorflow.compat.v2' has no attribute 'internal'
- 2023-07-17【2023年】第33天 Neural Networks and Deep Learning with TensorFlow
- 2023-07-10【2023年】第32天 Boosted Trees with TensorFlow 2.0(随机森林)
- 2023-07-09【2023年】第31天 Logistic Regression with TensorFlow 2.0(用TensorFlow进行逻辑回归)
- 2023-07-01【2023年】第30天 Supervised Learning with TensorFlow 2(用TensorFlow进行监督学习 2)
- 2023-06-18【2023年】第29天 Supervised Learning with TensorFlow 1(用TensorFlow进行监督学习 1)