Transformer及其改进型总结
Transformer是Google提出的用来解决LSTM建模长期依赖乏力的问题全新架构模型,同时其网络架构的设计全部考虑如何并行化,包括self-attenion机制、multi-head self-attention机制、FFW全部都是可以并行计算的,Add&Norm中Add类似预ResNet的shortcut,是为了解决深层模型梯度消失的问题,LayerNorm可以加速计算,这全部都是在为后面的大规模预训练模型做准备。Transformer的提出在NLP中具有里程碑式的意义,现在取得成功的Bert系列基于Transforner Encoder,GPT系列基于Transformer Decoder。这篇文章将不再赘述Tranformer的架构,想必大家应该已经跟熟悉了,这方面有大量的文章可供阅读。本篇博客聚焦于Transformer的改进路线,也是NLP面试常见问题。
Transformer
Attention is all you need
完全图解GPT-2:看完这篇就够了(一)
BERT大火却不懂Transformer?读这一篇就够了
Transformer-XL
Transformer作为一种特征提取器,在NLP中有广泛的应用。但Trm需要对序列设置一个固定长度,如果序列超过该长度,需要将句子划分成多个segment,训练的时候每个segment单独处理,各segment之间没有联系,最长的依赖关系长度就取决于segment长度。
预测的时候会对固定长度的segment做计算,一般取最后一个隐向量作为输出,为了充分利用上下文关系,每做一次预测,就对整个序列向右移动一个位置,在做一次计算,这导致效率非常低。
-
Segment-Level Recurrence
为了解决上面提到的问题,Transformer-XL提出一个改进,对当前Segment进行处理的时候,缓存并利用上一个segment中所有layer的隐向量序列,这些隐向量序列只参与前向计算,不再进行反向传播,这就是所谓的Segment-Level Recurrence。
-
Relative Position Encodings
Vanliia Trm使用position embedding或者正弦/余弦函数来对位置进行编码,这是一种绝对距离位置编码,而Transformer-XL使用相对位置编码。
A t t e e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k V ) Atteention(Q, K, V) = softmax(\frac{QK^T}{d_k}V) Atteention(Q,K,V)=softmax(dkQKTV)
Q K T QK^T QKT可以分解为以下:
U
i
U_i
Ui、
U
j
U_j
Uj即为绝对距离,替换为相对距离,得到以下计算公式:
- R R R表示相对距离,是一个 s i n sin sin函数,没有参数
- u u u和 v v v都是可训练参数
即对绝对距离做替换,一部分替换成sin函数,一部分替换成可训练参数。
XL-Net
在Transformer-XL的基础上,增加了排列语言模型和双流注意力机制,详见这里。
排列语言模型
传统的自回归语言模型按文本顺序进行顺序建模,这无法充分利用上下文信息,所以才有了BERT这种双向模型。而XL-Net采用了排列语言模型来获取更多更丰富的信息。
XL-NET最大化所有可能的序列的因式分解顺序的期望对数似然。
基于表征的双向注意力机制
- Content Representation内容表述,即
h
θ
(
x
≤
t
)
h_{\theta}(x_{\leq t})
hθ(x≤t),下文本用
h
z
t
h_{z_t}
hzt表示,该表述和传统的transformer一样,同样编码了自身。
- Query Representation查询表述,即
g
θ
(
x
z
<
t
,
z
t
)
g_\theta(x_{z<t}, z_t)
gθ(xz<t,zt),下文用
g
z
t
g_{z_t}
gzt表示,该表述包含上下文信息
x
z
<
t
x_{z<t}
xz<t(注意区别),和目标地位置信息
z
t
z_t
zt,但是不包括目标的内容信息
x
z
t
x_{z_t}
xzt。