复旦邱锡鹏组最新综述:A Survey of Transformers
Transformers已经在人工智能诸多领域,如NLP.CV,声音处理等方面取得进展,也受到学术界和工业界的广泛关注。目前也已经提出了一系列Transformer的变体,称之为X-Formers,但是却没有对这些X-formers进行系统、全面的综述文章。因此本文对这方面的工作进行综述,本文从三个方面对这些变体进行介绍,分别是:结构改进、预训练和应用。最终,为下一步的研究提出一些可考虑的方向。
Section I Inreoduction
Transformer是一种广泛应用于诸多领域的深度学习模型,如自然语言处理、计算机视觉和语音处理。Transformer最初作为一种用于机器翻译的序列模型,后来的研究表明,基于Transformers的一系列预训练模型在不同任务中均取得了SOTA,因此Transformer已经成为NLP中尤其是PTM中首选的模型;还在计算机视觉、语音处理甚至如化学、生命科学等领域得到了应用。 ?由于Transformers获得的巨大成功,近年来提出了一系列Transformers的变体,从不同方面对原始的Transformer进行了改进。? ?(1)模型的效率。限制Transformer的一个关键原因是在处理长序列时自注意力模块计算和内存的复杂度。改进的方法包括轻量级注意力(如稀疏注意力)和分治法(采用循环和分层的思想)。? ?(2)模型的泛化性。鉴于Transformer结构很灵活,假定输入数据的偏差很小,因此难以在小规模数据集上训练。改进的方法包括引入结构偏差或加入正则化、对大规模无标记数据的预训练等。? ?(3)模型的适应性。这一类工作主要聚焦于将Transformer应用于特定的下游任务。 ??本文将对Trnasformer及其变体进行较为全面的综述。尽管本文可以按照对Transformer的改进来介绍X-Formers,但是许多变体聚焦于以上一个或几个问题。 比如sparse attention系数注意力不仅仅降低了计算复杂度,还缓解了小规模数据集的过拟合问题。? 因此本文按照变体们改进Transformer的方式:结构改进预训练还是应用来组织全文。 鉴于读者所处领域的多样性,本文主要聚焦于对Transformer的结构改进,并简要介绍在预训练和一些应用中的特定改进。?文章其余内容包括:Sec2介绍了Transformer的结构和关键部分;Sec3介绍了Transformer的变体;Sec4-5介绍模块级别的改进,如注意力模块、位置编码模块、层归一化、前馈网络层;Section 6介绍整体结构层面上的改进;Sec7介绍一些具有代表性的基于Transformer的预训练网络;Sec8介绍了Ttransformer在不同领域的应用情况;Sec9对一些有趣、有前景的方向进行了讨论并总结全文。
Section II Background
Part I Transformer
原始的Transformer是一个seq2seq模型,包括编码和解码部分,每一部分都堆叠了L个相同个模块。 ??在Encoder部分,每一个block内主要包括一个多头自注意力模块(multi-head self-attention)和一个位置相关前馈网络(position-wise feed-forward network)。借助残差连接可以搭建层次更深的模块。 ???在Decoder部分,每一个block内在multi-head self-attention 和FFN之间插入落入一个人交叉注意力模块(cross-attention module);此外还在decoder block使用mask保证结果的因果性,防止将还未产生的后续结果影响当前结果。 ??Fig 1展示了Transformer的基本结构。 ?? 接下来本节将会介绍Transformer中的关键模块。 ?2.1.1Attention Modules?Transformer ?通过计算Q-K-V矩阵引入注意力机制,首先对输入进行线性变换,获得三个不同的Q,K,V: ?
Q:Query? ??K:Key? ??V:Value? ??其中Q,K先进行匹配,计算(dor product)出的结果与V进行计算,获得注意力系数α,最后经过softmax获得最终输出A(attention Matrix)。?其中N,M分别代表Q和K的长度,D代表维度信息;以及除以维度是为了减轻梯度消失问题。 ???此外,Transformer使用的是多头注意力,即进一步将K,Q,V拆分成多个矩阵进行学习,类似多通道的思想,每一个head关注的点都是不一样的。?因此表述为: ??? Transformer中使用了三种注意力机制,分别是:? (1)Self-attention。 在Transformer的encoder部分设置为Q=K=V=X,X则是前一时间步的输出? (2)带mask的self-attention? 在Transformer的decoder部分,使用的是带mask的sekf-attention,从而使得query的计算只关注当前位置及之前的输入,主要通过一个mask 函数实现,对于当前位置之后的序列罩上mask。这种带mask的attention通常称之为自回归或因果注意力。? (3)cross attention交叉注意力。 在decoder部分会使用前一个序列的输出的query和key,以及对应encoder部分
2.1.2位置相关的前馈神经网络? position-wise FFN是一个全连接层会在每一个位置执行:
?2.1.3Residual connection and Normalization ?残差连接和正则化?Transformer在每一个模块进行layer normalization层归一化后使用了残差连接,从而可以搭建更深层次的网络。因此每一个encoder block的输出可以表述为: ? ? ?2.1.4 Position Encodings? ?因为Transformer本身并不包含序列的顺序信息因此需要额外嵌入位置信息,这一部分将在sec5.1详细讲解。
Part II Model Usage
通常Transformer主要有以下三种使用方式:? (1)Encoder-Decoder 在序列模型中作为编码-解码结构使用,比如用来处理NLP? (2)Encoder 只是用其Encoder不问对输入序列进行编码,这种可以用来处理分类或序列标签问题 ?(3)Decoder 只是用Decoder部分,并且原来的cross-attention部分也被移除,主要用于序列生成,如语言简建模问题。
Part III Model Analysis
本文主要分析了Ttransformer两部分核心模块(self-attention和FFN)的复杂度和参数量。 ?
其中T为输入序列长度,D为模型维度。结果如Table I所示。?当输入序列较短时(T)小,D占主要因素,因此计算瓶颈是FFN全连接层的计算;随着输入序列变长,T成为时间复杂度和参数量的主要影响因素。需要存储T*T的attention matrix,因此不适合处理超长序列。?因此可以想到,提升Transformer的效率主要是提升其自注意力对长序列的见同行,以及如何减少FFN部分的参数量和计算量。
Part IV 与其他网络的对比
Self-attention作为Transformer的核心部分,可以灵活的处理变长序列。可以将其看做是一个全连接层,其中权重由输入的序列关系动态生成。Table II展示了与常见一些网络层的对比,如每层的计算量、最长路径长度等。可以看到self-attention有以下优势:? ?(1)与FC层具有同样的最大路径长度,因此可以捕捉长程依赖关系,但是却比FC层参数量更小以及可以灵活地处理输入的长度;? ?(2)鉴于卷积层感受野范围有限,需要通过堆叠逐步扩大感受野;而self-attention可以通过固定的层数就建立全局的依赖关系;? ?(3)固定的序列操作和最长路径长度使得self-attention比RNN更易并行化。 ?
此外,Transformer常与CNN和RNN进行比较,CNN通过权重共享实现平移不变性,RNN类似的基于Markovian结构传递了时间和空间的不变性,而Transformer并未对输入数据的结构做过多限定,因此Transformer结构更灵活,但一个副作用就是缺少结构信息使得Transformer在小规模数据集上的过拟合问题。?与Transformers密切相关的另一种网络是图神经网络GNN,Transformers可以看做是GNN的一种,其中每个输入都是图中的一个节点,二者的关键区别在于Transformer没有引入任何关于输入的先验知识,信息的传递仅仅依赖内容之间的相似性度量。
Section III Transformer的分类
Fig2按类别展示了Transformers的一些变体。有module-level,Arch-level,PTMs和Applications四方面。?Fig 3是不同分类下的具体内容。 本文主要聚焦于结构方面的改变,以及鉴于attention是Transformer的核心模块,因此本文在Sec4单独介绍attention相关的变体,其他变体在Sec5中介绍。
Section IV Attention
self-attention在Transformer中至关重要,但在实际应用中主要由以下两方面的挑战: ??(1)复杂性?前文介绍了self-attention的时间复杂度,在处理长序列时self-attention就会成为瓶颈。 ???(2)结构的先验信息。self-attention没有考虑输入的位置信息,因此顺序信息也需要从训练数据中学习。 ???Transformer很容易在中小型规模数据上过拟合。?有以下改进方向:? ???(1)Sparse Attention?将稀疏性bias引入到注意力机制中,从而降低计算复杂度;? ???(2)Linearized Attention?在该系列工作中将注意力矩阵与特征图谱解耦,然后以逆序计算注意力,从而达到线性的时间复杂度。? ???(3)模型或内存压缩?这一类工作通过减少query或者k-v对从而减少attention matrix的大小。? ???(4)低秩self-attention?主要用于捕获self-atten的低秩特征? ???(5)带有先验知识的注意力?主要是探究如何补充或使用带有先验知识的注意力分布替换保准的注意力? ???(6)优化多头机制?主要探究不同的多头机制
Part 1 Sparse Attention
在原始的self-attention中每一个token都需要将其他token考虑在内,然而就会导致学习到的attention matrix较为稀疏。因此,可以通过合并一些结构bias或者减少k-v对的数目来降低计算的复杂度。 按照这种思路,只需要基于预定义的方法来计算k-v的相似性得分:?就可以获得未归一化的attention matrix;?另一方面,self-attention也可以看做是一个二分图,其中每一次query都会从参考所有节点的信息来更新自己的结果,sparse attention可以看做是移除了一些节点之间连接的稀疏图。 ?根据如何判定稀疏连接的指标,本文将sparse的方法分为两类:基于位置的稀疏注意力和基于内容的稀疏注意力。 ??1.1Position-base Sparse Attention? ??会根据预定义的规则限制attention matrix,虽然这些规则各不相同,但都可以分解为以下的一些原子操作(5种):? ??(1)global attention?为了减少attention对长程依赖关系建模的退化,可以在节点之间增加一些global node来增强信息传递,这些global node可包含所有节点信息,如Fig4(a)所示。? ??(2)band attention(如滑窗注意力、局部注意力)?由于大多数数据有很强的局部性,因此自然想到限定每一个query关注其临近节点,广泛采用的就是band attention,如Fig4(b)所示。? ??(3)Dilated Attention。参考空洞卷积,通过使用带有膨胀率的窗口不断扩大注意力的范围,这种方法还可以进一步扩展成为步长注意力,即窗口大小不做限制但是膨胀率设置为较大的值;? ??(4)Random attention。为了增强对一些非局部信息的捕捉,可以在每次query中随机采样。主要是基于一些观察到的结果,即随机图具有和常规图类似的特性但随机行走所需时间更短。? ??(5)Block Local Attention?这类注意力会将输入序列分割成几个无重叠的block,每一个block都与一个本地内存相关联,在计算query时也只是基于这一块的信息,细节参见Fig 4(e) ?? 1.2 Compound Sparse Attention? 现在的Sparse Attention通常包含上述一种或多种基本操作,Fig 5展示了一些具有代表性的sparse attention。
Star-Transformer联合使用了band attention和global attention,更细节是使用了一个全局节点和一个宽度为3的局部节点,因此任意一个节点通过全局节点相连,通过band attention与邻近接节点相连;这样在节点之间形成一个星形的图。? ?在Longformer中则融合了band attention和internal global node,其中global node用CLS标记,主要用于分类,而其他的question token主要用于question answering;Longformer中还将一些band attention 替换为了dialated window从而在不增加计算量的前提下扩大感受野。? ?在ETC中,ETC是Longformer的recurrent版本,则是使用了band attention和external global attention; ??BigBird中则是使用了random attention来近似full attention.?以上工作的理论分析显示出使用sparse encoder和sparse decoder可以近似任何图灵机,这也解释了sparse model为什么有用。 1.3 Extended Sparse Attention? 除了上述sparse attention,还有一些工作研究了对特定数据类型的sparse attention。? 对于文本数据,BP-Transformer建立了一个二叉树结构,将所有token作为叶子结点,而internal node可以跨越多个结点,叶子结点也可以和更高层次或者其他结点相连,这种方式可以看做是global attention的一种扩展,在global attention中全局节点是分层组织的,架构图参见Fig 6(a) ?对于图像数据,Image-Transformer探索了两种类型的注意力,分别是:? ?(a)block local sparse attention?局部块状稀疏注意力? ?(b)2D block local attention? ?
而在Axial Transformer中则在每个轴上应用独立的注意力模块,即每个module沿着某一个轴融合信息。而保持信息沿其他轴是独立的,类似于垂直和水平扫描图像像素点然后分别对图像高度和宽度施加注意力。 10.3 未完待续
|