[nlp] 小傻学Transfomer-XL
what is Transfomer-XL?
在传统Transfomer中的segment间引入RNN机制:将上一个segment计算好的hidden state进行存储,在计算下一个segment时将上一个segment的这些信息融入到当前segment的计算当中。即将上一个segment中的hidden state沿着句子长度方向与当前segment 的hidden state进行concat,然后在concat之后的长度上进行Transformer操作。
Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
why Transfomer-XL?
- 解决长文本的建模,捕获超长距离依赖
LSTM 200 ,Transformer 512(单字 or wordpiece) - 贡献:
循环(RNN)的transformer建模机制(encoder-decoder,etc.)
一种相对位置编码方式
训练阶段:传统Transfomer语言模型中,训练阶段无法支持很长的文本输入,一般需将文本进行截断成segments后进行训练。导致在训练时只能在segment内部进行,忽略调segments之间的关系。这种策略能建模的长程依赖为所设置的segment长度,对于Transfomer self-attention的优势未充分利用。
预测阶段:传统Transfomer有一个窗口的概念(此窗口大小和训练阶段的segment长度相同)。在进行每一步预测时,只会用到最后一步来进行预测,预测完后向后移动一个位置,然后重复此过程。这种方法可避免训练阶段的context fragmentation问题,及充分利用长context中的信息,但重复计算较多,效率低。
- 能够建模更长上下文
a Recurrence机制
b 相对位置表示 - 在语言模型上获得更好的性能,加快速度
- 后续工作的启发
Transformer & RNN的优缺点
Transformer优点:并行,更好的表达长距离依赖
缺点:无位置表示,只有主观上的position encoding
RNN:优点:天然时序,无需位置表示
缺点:无法表示长距离依赖,无法并行
Transformer-XL = Transformer + RNN:位置表达,一定程度上并行计算,长距离表达更好。
1)因为segments之间独立训练,所以不同的token之间,最长的依赖关系,就取决于segment的长度;2)出于效率的考虑,在划分segments的时候,不考虑句子的自然边界,而是根据固定的长度来划分序列,导致分割出来的segments在语义上是不完整的。
在预测的时候,会对固定长度的segment做计算,一般取最后一个位置的隐向量作为输出。为了充分利用上下文关系,在每做完一次预测之后,就对整个序列向右移动一个位置,再做一次计算,如上图(b)所示,这导致计算效率非常低。
the architecture of Transfomer-XL
建模最长依赖为N * L, N:Transfoer层数,L:segment长度。
该方法可以存储多个segment的隐状态来继续增大感受野,而不仅局限于前一个segment。
位置信息:
传统Transformer:引入position embedding;
Transformer-xl:
长文本输入->切分Segment
问题:
最长依赖取决于segment长度
不同segment之间不传递信息
固定大小切分造成语义碎片
循环机制
Transformer-XL传递方式:
信息传递方式:
下一层接受上一层的信息
下一层接受上一时刻的上层信息
通过拼接实现
requires_grad=False or stop_gradient()
相对位置编码
Transfomer原始位置编码问题:
1. 词之间的attention关系
2. 位置与词的关系
3. 词与位置的关系
4. 全局位置的关系
相对位置编码实现(改变编码方式):
R
i
−
j
R_{i-j}
Ri−j代替𝑈,只注意相对的距离。
R:正弦信号编码矩阵,不需要学习。
引入一个可训练的参数项u、v
设计2个权重矩阵
W
k
,
E
,
W
k
,
R
W_{k,E}, W_{k,R}
Wk,E,Wk,R分别生成content-based的key vectors和location-based的key vectors。
(a) content-base的定位
(b) 捕获content-dependent的位置bias
© 控制全局的content bias
(d) 全局位置bias的编码
优点
在几种不同的数据集(大/小,字符级别/单词级别等)均实现了最先进的语言建模结果。
结合了深度学习的两个重要概念——循环机制和注意力机制,解决长距离依赖的问题
学习的依赖关系大约比 RNN 长 80%,比 Vanilla Transformer 长 450%
inference阶段非常快,比之前最先进的利用Transformer模型进行语言建模的方法快300~1800倍。
不足
未在具体的NLP任务如情感分析、QA等上应用。没有给出与其他的基于Transformer的模型,如BERT等,对比有何优势。
训练模型需要用到大量的TPU资源。