©原创作者 | FLPPED
参考论文:
A Survey of Transformers
论文地址:
https://arxiv.org/abs/2106.04554
研究背景:
Transformer在人工智能的许多领域取得了巨大的成功,例如自然语言处理,计算机视觉和音频处理,也自然吸引了大量的学术和行业研究人员的兴趣。
其最初是针对seq2seq的机器翻译模型而设计的,在后续的其他工作中,以Transformer为基础的预训练模型,在不同的任务中取得了state-of-the-art 的表现,有关Transformer的变种也是层出不穷(“x-former”)。
本文将从传统的vanilla Transformer入手,从模型结构改进、预训练等两个角度全面的介绍各种不同形式的x-former,并对其未来的可能发展方向提出可行的建议。
01 Vanilla Transformer
Vanilla Transformer[1]是一个seq2seq的模型结构,包含encoder和decoder两个部分,每个部分由L个相同的block组成。其中每个encoder包含多头注意力机制和piece-wise的前馈神经网络。
Decoder相比于encoder额外增加了cross-attention的模块,并且在自注意力机制中加入了mask,防止当前位置看到未来的信息。
模型的具体组成如图1所示。下面具体介绍几个重要的模块:
Ø Attention 模块:
Transformer采用了Query-Key-Value(QKV) 组成的注意力机制,其计算公式如下所示。为了缓解softmax 在计算时产生的梯度消失问题,
query和key在做点乘时需要除以
。
图1. Vanilla Transformer的模型示意图
在Transformer内部中,共有三种不同形式的attention:
● Self-attention:encoder中,Q=K=V。
● Masked Self-attention: Decoder中,当前位置只能注意到其位置之前的信息,通过将注意力矩阵做mask实现,如图1所示。
● Cross-attention: query 来自于decoder中上一层的输出,而K 和V使用的是encoder中的输出。
Ø Position-wise FFN、Residual connection and Normalization
全连接:
残差连接:在每个模块之间,transformer采用了残差连接的方法,并且都会经过layer normalization 层。
自注意力机制在Transformer中发挥着重要的作用,但在实际应用中也面临着两个挑战:
(1) complexity:self-attention的时间复杂度是O(T2·D),在处理长序列问题上存在较大瓶颈。
(2) structural prior:self-attention没有对输入做输入做任何结构偏差的假设,因此对于小数据集可能存在过拟合现象。
下面从这两个方面的改进,进一步介绍Transformer的各种变体。
02 模型结构: Attention
2.1 Sparse Attention
Sparse attention 在计算attention matrix时不会attend 每个token,而是遵循下面的公式(6).根据确定sparse connection的方法又可以细分为 position-based 和 content-based 两种。
2.1.1 Position-based Sparse Attention
对于position-based sparse attention来说,其主要的特点在于attention matrix模式的设计,这里首先介绍一下几种具有代表性的模式:
Ø Global Attention
为了缓解稀疏注意力在中长距离依赖关系上模型能力的退化,这一类模式增加了一些全局节点作为节点间信息传播的枢纽。这些全局节点可以关注序列中的所有节点,并且整个序列也都会关注这些全局节点。
Ø Band Attention
这一类attention 也可以成为局部attention或者滑动窗口attention,设计的主要思路在于,由于大部分的数据都有很强的局部关系特性,因此可以限制query只关注附近的一些节点从而做到稀疏化的效果。
Ø Dilated Attention
这种attention的方法与dilated CNN的方法十分相似,可以在不增加计算复杂度的情况下扩大感受野的大小,并且通过调整dilation 的间距可以扩展至strided attention.
Ø Random Attention
为了提高非局部位置之间的联系,每个query随机的选择一些位置去attend.
Ø Block Local Attention
将整个序列划分为几个没有重叠部分的block,每个block内部之间做attention.
提到的几种attention matrix如下图2所示。
图2 具有代表性的几种sparse attention 模式
在实际提出的几种变体中,其实往往是上面几种模式的组合。
下面具体介绍几个compound sparse attention的方法。
(1) Star Transformer[2]
Star Transformer使用了band attention 和global attention的组合方法,具体来说,文章中定义了一个global node 和带宽为三的band attention, 因此任意一对