NLP(十二):Transformer-XL和XLNet
1.Transformer-XL
Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context(Google)(ICLR 2019 被拒)基于一种相对位置编码方式建立循环的transformer建模机制,解决长文本的建模,捕获超长距离依赖。
1.1 Vanilla Transformer
在BERT等训练模型中处理的文本序列默长度是512,如果文本序列长度短于固定长度,可以通过填充的方式来解决。但如果序列长度超过固定长度,处理起来就比较麻烦。为了应对序列长度超过固定长度的情况,Vanilla Transformer把长文本的输入切分成多个Segment,但训练的时候,对每个segment单独处理,segments之间没有联系。因此该模型存在以下问题:
1)最长依赖取决于segment长度 2)不同segment之间不传递信息 3)固定大小切分造成语义碎片
为了充分利用上下文关系,在每做完一次预测之后,就对整个序列向右移动一个位置,再做一次计算,如上图(b)所示,这导致计算效率非常低。
1.2 循环机制
为了解决Vanilla Transformer滑动的方式计算效率低的问题,在模型中加入循环机制。
1.3 传递方式
1)通过拼接实现
2)信息传递方式:下一层接受上一层的信息;下一层接受上一时刻的上层信息
K、Q、V各权重计算如下:
3)训练时梯度不向上进行传递:requires_grad=False or stop_gradient()
1.4 相对位置编码
Transformer 原始位置编码存在以下问题:
1)词之间的attention关系 2)位置与词的关系 3)词与位置的关系 4)全局位置之间的关系
改变编码方式思路:
1) 𝑅_(𝑖−𝑗)代替𝑈,只注意相对的距离。 2)R:正弦信号编码矩阵,不需要学习。 3)引入一个可训练的参数项u、v 4)设计2个权重矩阵𝑊_(𝑘,𝐸),𝑊_(𝑘,𝑅)分别生成content-based的key vectors和location-based的key vectors。
1.5 优缺点
1)优点
在几种不同的数据集(大/小,字符级别/单词级别等)均实现了最先进的语言建模结果。 结合了深度学习的两个重要概念——循环机制和注意力机制,解决长距离依赖的问题 学习的依赖关系大约比 RNN 长 80%,比 Vanilla Transformer 长 450% inference阶段非常快,比之前最先进的利用Transformer模型进行语言建模的方法快300~1800倍。
2)不足 未在具体的NLP任务如情感分析、QA等上应用。没有给出与其他的基于Transformer的模型,如BERT等,对比有何优势。 训练模型需要用到大量的TPU资源。
2.XLNet
2.1 AR&AE
XLNet:Generalized Autoregressive Pretraining for Language Understanding(Google)融合自回归和自编码模型两者的优点: 1)自回归语言模型(Autoregressive LM) 根据上文内容预测下一个可能的单词,自左向右的语言模型任务(或自右向左,单向) 缺点:只能利用上文或者下文的信息 优点:可以完成生成类NLP任务
2)自编码语言模型(Autoencoder LM) 根据上下文单词来预测这些被Mask掉的单词(噪音)。 优点:双向语言模型, 缺点:预训练阶段和Fine-tuning阶段不一致
2.2 Permutation Language Modeling
该模型是一种基于排列组合的输入方法,是通过Attention的Mask来对应不同的分解方法,并不会改变原始词的顺序。
该模型的目标如下:
2.3 双流自注意力
1)任务: 预测后面的字符是哪个 预测自己到底是哪个字符
2)两套表征方式 Content Stream Query Stream
3)Transformer 天然和乱序语言模型相契合
加入位置作为预测信息:
两种Attention的构造:
2.4 模型比较
XLNet预测部分词是出于性能考虑,而BERT是随机的选择一些词来预测,并且尽量规避Bert的独立假设:
参考资料 [1] [2] [3]
