本文首发于微信公众号 CVHub,不得以任何办法转载到其它平台,仅供学习沟通,违者必究!

导读

Transformer在许多的人工智能范畴,如自然言语处理(Natural Language Processing, NLP)、核算机视觉(Computer Vision, CV)和语音处理(Speech Processing, SP)取得了巨大的成功。因而,自但是然的也招引了许多工业界和学术界的研讨人员的爱好。到目前为止,现已提出了很多依据Transformer的相关作业和总述。本文依据邱锡鹏老师近来所发表的一篇总述为基础,详细的解读Transformer的来龙去脉,一同为咱们介绍近期一些相关作业,中间也会穿插一些笔者的见地。最终,本文也将列出一些可探求的未来研讨方向,期望能给予读者一些启示。

布景

Transformer最早提出是被作为一种序列到序列(sequence-to-sequence)模型并运用于机器翻译的。之后的一些作业标明依据Transformer的预练习模型可以在不同的使命上完成SOTA(Satte-Of-The-Art)功能。

依据Transformer的巨大成功,在过去的几年里也相继提出了一系列的Transformer变体,简称X-formers。这些变体首要从不同的视点对Transformer进行了相应的改善。(有点当年ResNet和UNet的滋味啊,哈哈哈)

  • 模型功率。为了捕获长距离依靠联系,Transformer运用了自留意力机制来建模大局的上下文信息,但是这种依据像素点(pixel-to-pixel)对的建模办法核算量无疑是巨大的,一般为输入特征尺度的二次方。改善的办法包括两种思路,即轻量化的留意力(譬如稀少留意力变体)和分治法(譬如循环和分层机制)。
  • 模型泛化性。因为Transormer是一种十分灵敏的架构,而且其对输入数据的结构性误差几乎是没有假定的,因而也很难运用在小规划数据集上进行练习,也便是说缺少泛化功能。改善计划包括引进结构性误差或正则化技术,以及对大规划未符号数据进行预练习等。
  • 模型自适应。这一类型的作业旨在将Transformer运用到特定的下流使命和运用。

Vanilla Transformer

原生的Transformer模型是一个由编码器解码器组成的序列到序列模型,其间编解码器均堆叠了L个相同的块。每一个编码器首要由多头留意力(Multi-head Self-Attention, MSA)模块和position-wise的前向传达网络(Feed-Forward Network, FFN)组成。为了构建一个更深的模型,每一个模块都运用了残差衔接,后面紧跟一个层归一化(Layer Normalization, LN)模块。比较于编码器来说,解码器在MSA模块和FFN模块之间额定插入了一个穿插留意力(Cross-Attention, CA)模块。此外,解码器端的自留意力模块效果是用于避免当时方位重视到后续方位的信息。网络的全体结构如下图所示:

CVHub | 万字长文带你入门Transformer

留意力模块

Transformer采用了带有Query-Key-Value(QKV)的自留意力模块。其间,Q指的是查询向量,K指的是要害字向量,而V指的是内容向量。以图画为例,经过核算Q和K的点积进行相关,可以获取到图画中各像素点之间的相关矩阵;然后,经过Softmax激活函数输出每个方位对应的权重图;最终,再将该权重图叠加到V,便可以完成对不同区域加权的目的。公式如下所示:

Attention(Q,K,V)=softmax⁡(QK⊤Dk)V=AV\text { Attention }(\mathrm{Q}, \mathrm{K}, \mathrm{V})=\operatorname{softmax}\left(\frac{\mathrm{QK}^{\top}}{\sqrt{D_{k}}}\right) \mathrm{V}=\mathrm{AV}

这儿Dk\sqrt{D_{k}}为缩放因子(scaled dot-product attention),首要是用于缓解因为softmax函数引进的梯度消失问题。

因为Q与K点乘结果过大,使得经过softmax之后的梯度变得很小,不利于反向传达,因而需求对结果进行缩放。

Transformer并没有简略地运用单个留意力函数,而是运用了多头留意力。经过独自核算每一个留意力头,最终再将多个留意力头的结果拼接起来作为MSA模块最终的输出,详细公式如下所示:

MultiHeadAttn(Q,K,V)=Concat(head1,⋯ ,headH)WOwhereheadi=Attention(QWiQ,KWiK,VWiV)\begin{aligned} \text { MultiHeadAttn }(Q, K, V) &=\text { Concat }\left(\text { head }_{1}, \cdots, \text { head }_{H}\right) \mathbf{W}^{O} \\ \text { where head }_{i} &=\text { Attention }\left(Q W_{i}^{Q}, K W_{i}^{K}, V W_{i}^{V}\right) \end{aligned}

在Transformer中,首要涉及到三种不同的留意力类型:

  • Self-attention. 在Transformer的编码器中,咱们设置Q=K=V=XQ=K=V=X,这儿XX为上一层的输出。
  • Masked Self-attention. 在Transformer的解码器中,自留意力受到约束,使得每个方位的查询只能重视到包括该方位及之前方位的一切键值对。惯例做法是将掩码矩阵(mask matrix)添加到留意力分数上,其间非法方位采用 Aij=−∞ifi<j2 A_{i j}=-\infty \text { if } i<j^{2}进行遮挡。这一类留意力办法也常常被称为自回归(autogressive)或许因果(causal)留意力。
  • Cross-attetnion. 查询是早年一个(解码器)层的输出投影所取得的,而键和值是运用编码器的输出投影得到的。

前向传达网络

前向传达网络实际上便是一个两层的多层感知机(Multi-Layer Perceptron, MLP),也便是由全衔接层加非线性激活函数所组成的,可以别离效果到每一个方位,详细公式如下所示:

FFN⁡(H′)=ReLU⁡(H′W1+b1)W2+b2\operatorname{FFN}\left(\mathbf{H}^{\prime}\right)=\operatorname{ReLU}\left(\mathbf{H}^{\prime} \mathbf{W}^{1}+\mathbf{b}^{1}\right) \mathbf{W}^{2}+\mathbf{b}^{2}

这儿H′\mathbf{H}^{\prime}为 上一层的输出,W1∈RDmDf,W2∈RDfDm,b1∈RDf,b2∈RDm\mathbf{W}^{1} \in \mathbb{R}^{D_{m} \times D_{f}}, \mathbf{W}^{2} \in \mathbb{R}^{D_{f} \times D_{m}}, \mathbf{b}^{1} \in \mathbb{R}^{D_{f}}, \mathbf{b}^{2} \in \mathbb{R}^{D_{m}}均为可练习参数。依据经验,一般DfD_{f}的值要比DmD_{m}大。

残差衔接和归一化

为了构建深度模型,Transformer在每个模块周围采用了残差衔接,然后是层归一化。例如,每个Transformer编码器可以写为:

H′=LayerNorm(SelfAttention(X)+X)H=LayerNorm(FFN(H′)+H′)\begin{aligned} \mathrm{H}^{\prime} &=\text { LayerNorm }(\text { SelfAttention }(\mathrm{X})+\mathrm{X}) \\ \mathrm{H} &=\text { LayerNorm }\left(\mathrm{FFN}\left(\mathrm{H}^{\prime}\right)+\mathrm{H}^{\prime}\right) \end{aligned}

其间SelfAttention()标明自留意力模块,LayerNorm()标明层归一化操作。

方位编码

因为Tranformer彻底摒弃了RNN和CNN结构,导致它对方位信息是一窍不通的(尤其是编码器)。因而,需求额定的方位标明来对Token的排序进行建模。

模型用法

一般来说,Transformer架构可以运用以下三种不同的办法:

Encoder-Deocder

正如咱们在上面所介绍的完好Transformer架构,这种编解码办法一般用于序列到序列的建模,例如神经机器翻译。

Encoder only

仅运用编码器,编码器的输出用作输入序列的标明,这种结构一般用于分类或序列符号问题,例如图画分类。

Decoder only

运用了解码器,其间也删去了编码器-解码器穿插留意模块,这种结构一般用于序列生成,例如言语建模。

模型剖析

影响Transformer模型杂乱度的两个首要因素为躲藏层DD的维度为DmD_{m}以及输入序列长度为TT。假定FFN模块的中间维度设置为4D4D,keys和values的维度设置为D/HD/H。为了更好的比较Transformer的参数里和核算量,需求剖析Transformer的两个中心组件,即MSA和FFN模块,结果如下表所示:

\begin{array}{c|c|c}\hline \text { Module } & \text { Complexity } & \text { #Parameters } \\ \hline \text { self-attention } & O\left(T^{2} \cdot D\right) & 4 D^{2} \\ \hline \text { position-wise FFN } & O\left(T \cdot D^{2}\right) & 8 D^{2} \\ \hline\end{array}

由上表可以看出,当输入序列很短时,参数量和核算量的杂乱度首要取决于DmD_{m}。因而,Transformer的瓶颈首要在FFN层。但是,随着输入序列的变长,序列长度TT逐步主导了这些模块的杂乱度。在这种情况下,自留意力成为Transformer的瓶颈。此外,因为自留意力的核算还需求存储一个LLL \times L的留意力散布矩阵,这使得Transformer无法有用的运用于长序列场景,例如长文本文档和高分辨率图画的像素级建模。

Transformer与其他网络模型的比较

自留意力剖析

作为Transformer的中心部分,self-attention带有一种灵敏的机制来处理可变长度的输入。它可以了解为一个全衔接层,其间权重是从输入的成对联系动态生成的。下表比较了self-attention与三种常用层类型的杂乱性、次序操作和最大途径长度:

LayerTypeComplexityperLayerSequentialOperationsMaximumPathLengthSelf-AttentionO(T2⋅D)O(1)O(1)FullyConnectedO(T2⋅D2)O(1)O(1)ConvolutionalO(K⋅T⋅D2)O(1)O(log⁡K(T))RecurrentO(T⋅D2)O(T)O(T)\begin{array}{lccc}\hline \text { Layer Type } & \begin{array}{c}\text { Complexity } \\ \text { per Layer }\end{array} & \begin{array}{l}\text { Sequential } \\ \text { Operations }\end{array} & \text { Maximum Path Length } \\ \hline \text { Self-Attention } & O\left(T^{2} \cdot D\right) & O(1) & O(1) \\ \text { Fully Connected } & O\left(T^{2} \cdot D^{2}\right) & O(1) & O(1) \\ \text { Convolutional } & O\left(K \cdot T \cdot D^{2}\right) & O(1) & O\left(\log _{K}(T)\right) \\ \text { Recurrent } & O\left(T \cdot D^{2}\right) & O(T) & O(T) \\ \hline\end{array}

如上表所示,咱们可以总结出Transformer的三大优势:

  • 它具有与全衔接层(MLP)相同的最大途径长度,十分适用于远距离依靠的建模。与全衔接层比较,它在处理可变长度输入时参数功率更高且更灵敏
  • 因为卷积层(CNN)的感触野有限,一般需求堆叠一个深度网络才干拥有大局感触野。另一方面,稳定的最大途径长度使自留意力可以对具有稳定层数的远距离依靠进行建模
  • 与循环层(RNN)比较,稳定的次序操作和最大途径长度使自留意力更可并行化,并且在远距离依靠建模方面体现得愈加超卓。

概括误差剖析

众所周知,CNN会经过部分同享的卷积核来加强网络的平移不变性和部分的概括误差。 相似地,RNN经过其马尔可夫结构带着时刻不变性和部分的概括误差。另一方面,Transformer架构对数据的结构信息几乎没有假定。这使得Transformer成为一种通用且灵敏的架构。作为副效果,缺少结构性误差使得Transformer简略过拟合小规划的数据集。此外,Transformer其实可以看成是在一个带有完好有向图(with self-loop)上所定义的图神经网络(Graph Neural Network, GNN),其间每个输入都可视为图中的一个节点。但是,Transformer和GNN之间的首要差异在于Transformer没有引进关于如何结构输入数据的先验常识。【Transformer中的信息传递过程彻底取决于内容的相似性衡量】

Inductive bias,即概括偏置,定义为关于方针函数的必要假定。正所谓”There ain’t no such thing as a free lunch“,这句话运用再机器学习上可以了解为在没有先验常识的前提下,模型是无法学习的。因而,概括偏置可以了解为依据固有的先验常识对方针函数进行必定的预判,行将带有未知解的方针函数束缚在一个限定的假定域内,使模型可以在这规模内进行有用的学习。
在CNN中,概括偏置可以了解为部分性和空间不变性。首要,部分性体现在卷积核的巨细是有限的。其次,空间不变性是因为卷积核同享权重所决议的。
在RNN中,概括偏置则可以了解为时刻不变性,这是因为RNN中序列次序的每个时刻步之间都是有相关的。
在Transformer中,概括偏置几乎是不存在的,这使得其更具有通用性(即不会只针对某种特定类型的使命有用),缺陷便是会导致其对小数据集更简略过拟合。因而,需求引进结构先验、正则化,或许运用无监督预练习。关于概括偏置更详细的了解可参阅该论文。

后续的许多作业大都围绕着三个方面来改善Transformer,即架构类型定义、预练习办法以及相关相应。

CVHub | 万字长文带你入门Transformer

改善留意力

自留意力机制在Transformer架构中起到至关重要的效果,但是实际运用傍边依然面对两大应战:

  • Complexity. 上面咱们剖析过,Transformer的杂乱度为O(T2⋅D)O(T^2 \cdot D)。因而,留意力模块的其间一个瓶颈在于无法处理长序列。
  • Structural prior. 自留意力不假定对输入有任何结构性偏见,乃至连重要的次序信息也需求从练习数据中学习。因而,没有带与练习的Transformer模型一般简略在中小数据上过拟合。 为了进步自留意力机制的全体功能,可以考虑从以下六个方向进行改善: (1) Sparse Attention. 这类作业首要是将稀少误差引进留意力机制,然后下降杂乱性。 (2) Linearized Attention. 这一系列作业将留意力矩阵与内核特征图进行解耦,然后经过逆序核算留意力以完成线性杂乱度。 (3) Prototype and Memory Compression. 这类办法是经过削减queries或key-value对的规划来紧缩留意力矩阵的巨细。 (4) Low-rank Self-Attention. 这一系列作业捕获了自留意力的低秩特点。 (5) Attention with Prior. 该研讨范畴探求用从前的留意力散布来弥补或代替规范留意力。 (6) Improved Multi-Head Mechanism. 该系列研讨探求了多头自留意力机制的代替模块。 下面咱们将重点对每种办法进行解说。

Sparse Attention——稀少留意力

在规范的自留意力机制中,每个token都需求重视其他一切token。但是,据观察,关于经过练习的Transformers,学习到的留意力矩阵 A 在大多数数据点上一般呈现出一种十分稀少的状况。因而,可以经过结合结构误差(删去节点之间的一些衔接)来削减每个query重视的query-key对的数量以下降核算的杂乱度。

Position-based Sparse Attention

在依据方位的稀少留意力中,会依据一些预定义的方式来束缚留意力矩阵。为此,咱们首要确定一些原子稀少方式;然后描绘这些方式在一些现有作业中是如何组成的;最终,只需为特定的数据类型引进了一些扩展的稀少方式即可。

  • Atomic Sparse Attention

CVHub | 万字长文带你入门Transformer

(1) Global Attention. 为了缓解在稀少留意力中对远距离依靠建模才能的下降,可以添加一些大局节点作为节点之间信息传达的纽带。【类比CNN中的GAP】 (2) Band Attention(a.k.a sliding window attention or local attention). 因为大多数数据都具有很强的部分性,因而很自然地将每个查询约束为重视其邻居节点。【类比CNN中的Convolution】 (3) Dilated Attention. 经过运用带有空洞的扩张窗口,可以在不添加核算杂乱度的情况下潜在地添加波段留意力的感触野。【类比CNN中的Dilated Convolution】 (4) Random Attention. 为了添加非部分交互的才能,每个查询随机采样一些边际。这是依据观察随机图可以与完好图具有相似的光谱特点。 (5) Block Local Attention. 这类留意力将输入序列分割成几个不堆叠的查询块,每个查询块都与一个部分内存块相相关。一个查询块中的一切查询只重视相应内存块中的键。

  • Compound Sparse Attention

CVHub | 万字长文带你入门Transformer

上面咱们仅列举了单一办法的留意力单元的衔接办法,每种办法都各有优劣,自但是言的就有学者测验对这些原子操作来一个”排列组合“。因为篇幅有限,本文将不打开叙说,有爱好的读者可自行查阅相关资料,下同。

  • Extended Sparse Attention 除了上述方式,一些现有的研讨现已探求了特定数据类型的扩展稀少方式。比方,BPT针对文本数据结构了一个二叉树,其间一切符号都是叶节点,内部节点是包括许多符号的跨度节点。这种办法可以看作是大局留意力的扩展,其间大局节点是分层安排的,任何一对符号都与二叉树中的途径相连。

CVHub | 万字长文带你入门Transformer

Content-based Sparse Attention

另一行作业依据输入内容创立稀少图,即稀少衔接以输入为条件。构建依据内容的稀少图的一种直接办法是挑选那些或许与给定查询具有较大相似性分数的键。为了有用地构建稀少图,咱们可以递归到最大内积搜索问题,即测验经过查询找到具有最大点积的键,而无需核算一切点积项。【相当于递归查询,直至找到指定的阈值点积即中止搜索】

Linearized Attention——线性留意力

Transformer生成留意力求的核算杂乱度为输入尺度的二次方。假如可以将softmax(QKT)softmax(QK^{T})分解成Q′K′TQ^{\prime}{K^{\prime}}^{T},那么就可以经过逆序核算出Q′(K′TV)Q^{\prime}({K^{\prime}}^{T}V),便可以将杂乱度降为线性杂乱度O(T)O(T).其间TT为输入序列的长度。

CVHub | 万字长文带你入门Transformer

如上图所示,线性的自留意力无非便是经过一些数学变换将非线性的自留意力操作进行映射。

除了运用稀少留意力或线性化留意力之外,还可以经过削减查询或键值对的数量来下降留意力的杂乱性。

Low-rank Self-Attention——低秩留意力

一些经验和理论剖析陈述称自留意力矩阵一般是低秩的。这个特点的意义是两层的。首要,低秩属功可以用参数化显式建模;其次,可以用低秩近似代替自留意力矩阵

Low-rank Parameterization

留意力矩阵的秩小于序列长度意味着,关于输入序列较短的情况,设置>_{} > 将不仅仅是过参数化并简略导致过拟合。 因而,约束_{}的维度以将低秩特点显式建模为概括偏置是合理的。《Low-Rank and Locality Constrained Self-Attention for Sequence Modeling》这篇论文测验将子留意力矩阵分解为一个低阶留意力模块,其间包括捕获远距离非部分交互的_{}(维度较小),以及一个一个捕获部分依靠联系的带留意模块的band attention模块。

Low-rank Approximation

留意力矩阵的低秩特点的另一个意义是可以运用低秩矩阵近似来下降自留意力的杂乱性。一种密切相关的办法是核矩阵的低秩近似。这个可以参阅之前咱们热烈讨论的AAAI 2021的最佳论文奖——Linformer。论文作者提出另一种用低秩矩阵逼近的办法完成一种新的自留意力机制,在空间和时刻杂乱度下降到线性时刻的情况下取得了与原生Transformer相当的功能。更详细的解读可参阅该链接【有点相似与因式分解】

Attention with Prior——为Transformer注入先验信息

自留意力机制中的留意力散布一般是经过QK对核算的,并将相应的输出叠加到值上进行加权求和。不过,留意力散布也可以来自其它地方,咱们将其称为”先验“。先验留意力散布可作为QK留意力散布的一种弥补,经过交融两种留意力散布可以得到更具有代表性的留意散布,如下图所示:

CVHub | 万字长文带你入门Transformer

Prior that Models locality

某些类型的数据例如文本可以体现出对方位的强烈偏好。此属功可以显式编码为先验留意力。一个简略的办法是在方位上运用高斯散布。详细来说,可以将生成的留意力散布与高斯密度相乘,然后从头归一化,这相当于在生成的留意力分数上添加一个误差项,其间GijG_{ij}方位的值越高标明输入iijj重视的先验概率越高。

Prior from Lower Modules

在Transformer架构中,常常观察到相邻层的留意力散布相似。因而很自然地可以供给来自前一层的留意力散布作为留意力核算的先验。【相似长距离跳跃链接】

Attention with Only Prior

一些作业探求了运用独立于输入之间成对交互的留意力散布。换句话说,便是这些模型只运用了先验留意力散布。但是,惋惜的是,这些作业大多数都没给出理论支撑,只不过试验结果十分风趣。

改善多头机制

原始的Transformer是依据多头自留意力,作者解说这能让模型的不同的方位互相留意到不同子空间的表征信息。

Head Behavior Modeling

在原始的Transformer完成中,没有明确的机制来保证多个留意力头之间的不同行为可以发生不同的子空间标明,也没有任何机制使各个头之间进行交互。因而,有许多作业致力于于增强每个Head的特征表达才能或许提出某种机制来辅导不同Head之间进行交互,进一步增强信息的多样性。

Multi-head with Restricted Spans

一部分研讨标明让一部分留意力头重视大局规模,另一部分留意力头重视部分规模或许是愈加有利的。首要体现在以下两方面。

Locality

约束留意力跨度会导致显式的部分束缚,这关于某些部分性是重要先验的情况下是有利的。

Efficiency

假如完成妥当,这样的模型可以扩展到十分长的序列,而不会引进额定的内存占用和核算时刻。

约束留意力跨度可以标明为将每个留意力散布值与掩码值相乘,然后从头归一化,其间掩码可以标明为将距离映射到[0, 1]中的值的非递增函数。普通留意力为一切距离分配掩码值1,如下图所示:

CVHub | 万字长文带你入门Transformer

Multi-head with Refined Aggregation

多头留意力在履行完操作之后,原生的Transformer直接将不同的Head进行拼接:

WO=[W1O;W2O;⋯ ;WHO]\mathbf{W}^{O}=\left[\mathbf{W}_{1}^{O} ; \mathbf{W}_{2}^{O} ; \cdots ; \mathbf{W}_{H}^{O}\right]

这种直接Concatenate的办法显然是比较单(暴)调(力)的,因为简略的讲多个Head逐个聚合的范式并没有充分运用到多头留意力的体现力。因而,有一些作业致力于提出愈加杂乱的聚合办法来进步不同Head之间交融的功率。

其它模块层面的改善

Position Representations

前面咱们提到过,Transformer是对方位信息无感的。但是,在实际运用傍边,方位信息是不可或缺的。例如对文本序列建模或许图画信息分类,假如缺少方位信息将会导致输出序列所表达的意义彻底错乱或许图片的上下文语义信息彻底凌乱。因而,需求额定的机制将方位信息注入到Transformer中。一种常见的规划是首要运用向量标明方位信息,然后将向量作为附加输入注入到模型傍边。

Absolute Position Representations.

肯定方位编码是经过将方位信息直接融入到输入序列的一种办法。从数学办法上看,关于给定的第ii个向量xix_{i},咱们在当时方位引进对应的方位向量pi{p_{i}},则经过方位编码后的输出可标明为yi=xi+pi{y_{i}=x_{i}+p_{i}},其间pi{p_{i}}仅依靠于方位编号ii

肯定方位编码包括许多的变种,如练习式、三角式、递归式以及相乘式等。其间最常用的便是练习式,如今干流的BERT和GPT模型均采用了这种方位编码办法。 与彻底可学习的办法比较,该办法具有概括性和灵敏性,一同具有参数功率。 兼并肯定方位标明的原始办法是将方位编码/嵌入添加到符号嵌入中。但是,当输入信号经过层传达时,方位信息或许会在上一层丢掉。 后来的作业发现将方位标明添加到每个Transformer层的输入中是更有利的。

Relative Position Representations

相对方位编码是一种愈加灵敏的方位编码办法,它不需求对每个输入的方位信息进行完好建模,而是经过在核算留意力分数之时,考虑当时方位与被留意力的方位之间的相对距离。

相对方位标明侧重于标明Token之间的方位联系,而不是单个Token的方位。直觉是,在自留意力中,输入元素(方向和距离)之间的成对方位联系或许比元素的方位更有利。

Other Representations

上面咱们介绍完肯定方位编码和相对方位编码的特点,因而一些研讨探求了运用包括肯定和相对方位信息的混合方位标明。

Layer Normalization

层归一化(LN)以及残差衔接被认为是一种稳定深度网络练习的机制(例如,减轻不稳定梯度和模型退化)。因而,有一些作业致力于剖析和改善LN模块。

CVHub | 万字长文带你入门Transformer

Placement of Layer Normalization

如上图(a)所示,在原始的Transformer完成中,LN层是坐落残差块之后的,称为post-LN。但是,依据post-LN的Transformer结构对参数异常敏感,需求大力调(炼)参(丹)才干取得杰出的结果,比方需求搭配warm-up学习率战略,但这会十分耗时刻。

warm-up效果一般有两个:减缓模型在初始阶段对mini-batch的提前过拟合现象,坚持散布的平稳以及坚持模型深层的稳定性。

后来的Transformer完成中,有不少作业是将LN层放置在自留意力或许FFN层之前的残差衔接内,称为pre-LN,如上图(b)所示。依据pre-LN的Transformer已被许多后续研讨人员所采用。不过,虽然post-LN常常导致不稳定的练习和发散,但它一般在收敛后优于pre-LN变体。研讨标明,造成post-LN不稳定的直接原因不是梯度问题,而是在初始化时,对残差分支的更大依靠导致post-LN发生更大的输出偏移,然后导致练习不稳定。为此,有研讨人员向post-LN引进额定的参数,控制其残差依靠性,确保了依据post-LN的Transformer收敛,并到达比pre-LN更好的功能。

Substitutes of Layer Normalization

一些研讨人员经过试验标明LN模块中的可学习参数在大多数情况下不起效果,乃至还会加速过拟合的风险。因而,有许多作业致力于寻觅LN模块的代替品,比方AdaNorm和PowerNorm.后者讨论了为什么BN在文本数据的Transformer中体现欠安,并得出结论,BN的明显功能下降源于与其批量统计相关的不稳定性有关。

Normalization-free Transformer

除了LN,还有另一种机制可以构建更深层次的神经网络:

H′=H+⋅F(H)\mathbf{H}^{\prime}=\mathbf{H}+\alpha \cdot F(\mathbf{H})

其间\alpha是零初始化的可学习参数。作者验证了用ReZero机制替换Transformer中的LN可以为输入信号引进更好的动态等距,并导致更快的收敛。

Position-wise FFN

方位前馈网络(FFN)层关于Transformer完成杰出功能至关重要,它为网络供给了非线性映射的才能。假如仅运用Self-Attention层,会导致rank collapse问题,加入FFN层可以有用的缓解该问题。因而,有许多的作业也致力于FFN层的改善。

Activation Function in FFN

原生的Transformer是运用ReLU作为非线性激活函数。随着时刻的推移,也提出了许多高效或功能更佳的ReLU变种。比方,著名的GPT模型便是用GELU来进一步的代替ReLU,后面也逐步称为了干流。

Adapting FFN for Larger Capacity

有几项作业专注于扩展FFN层以获取更大的模型容量。基本思想是用具有更多参数的相似结构替换FFN。

Dropping FFN Layers

值得留意的是,有人或许会争辩说,在某些情况下,可以彻底删去FFN层,然后简化网络。为此,杨等人经过试验标明,Transformer解码器中的FFN层,虽然其参数很多,但功率不高,可以安全地移除,而功能只要轻微或没有丢失。这种办法明显进步了练习和推理速度。

改善Transformer架构

Adapting Transformer to Be Lightweight

除了在模块级别为减轻核算开销做作业外,还可测验修正Transformer架构使其愈加轻量化。比方,Lite Transformer主张将每个自留意力模块用两个分支结构代替。其间一个分支依然运用留意力机制来捕获远距离的上下文依靠;而另一个分支运用深度卷积和线性层来捕获部分依靠联系。该架构在模型巨细和核算方面都是轻量级的,因而更适合移动设备。

Strengthening Cross-Block Connectivity

在原生的Transformer中,每个块都将前一个块的输出作为输入并输出一系列躲藏标明。沿着这个思路,许多作业致力于研讨多途径聚合

Transformers with Divide-and-Conquer Strategies

自留意力对序列长度的二次杂乱度会明显约束一些下流使命的功能。例如,言语建模一般需求远距离上下文。下图展示了两种Transformer架构的变体:

CVHub | 万字长文带你入门Transformer

Recurrent Transformers.

在循环Transformers架构中,会保护一个高速缓存(cache)以兼并历史信息。比方,在处理一段文本时,网络从缓存中读取作为附加输入。处理完成后,网络经过简略地复制躲藏状况或运用更杂乱的机制来写入内存。

Hierarchical Transformers

分层Transformer将输入以层级办法分解为更细粒度的元素。初级特征首要被馈送到 Transformer编码器,发生输出标明,然后聚合(运用池化或其他操作)成高档特征,然后由高档Transformer处理。这类办法可以了解为一个层次抽象的过程,这种办法的长处是分层建模答应模型以有限的资源处理长输入和发生更丰富的对使命有利的特征标明。

带预练习的Transformer

作为与CNN和RNN的一个要害差异,它们固有地结合了部分性的概括偏置,Transformer则不对数据的结构做出任何假定。一方面,这有用地使Transformer 成为一种十分通用的架构,具有捕获不同规模依靠联系的潜力。另一方面,这使得Transformer在数据有限时简略过拟合。缓解此问题的一种办法是在模型中引进概括偏置。最近的研讨标明,在大型语料库上预练习的Transformer 模型可以学习对下流使命有利的通用言语标明。这些模型是运用各种自监督的方针进行预练习的,例如,依据上下文预测mask。在对模型进行预练习后,可以简略地在下流数据集上对其进行微调,而不是从头开始练习模型。下面介绍一些详细的用法。

Encoder only

一系列作业运用Transformer编码器作为其主干架构。BERT是典型的PTM,一般用于自然言语了解使命。它运用Masked Language ModelingNext Sentence Prediction作为自监督练习的方针。

Decoder only

一些研讨侧重于对言语建模的Transformer解码器进行预练习。例如,生成式预练习 Transformer系列,即GPT、GPT-2和GPT-3,专门用于缩放预练习的Transformer解码器,并且最近的研讨作业标明大规划PTM可以经过将使命和示例作为结构提示输入模型来完成令人印象深化的功能。

Encoder-Decoder

也有采用Transformer编码器-解码器作为全体架构的PTM。BART将BERT的去噪方针扩展到编码器-解码器架构。运用编码器-解码器架构的好处是,诱导模型具有履行自然言语了解和生成的才能。

Transformer运用

Transformer开始是为机器翻译而规划的,但因为其灵敏的架构,已被广泛运用于 NLP之外的各个范畴,包括CV和音频处理。

Natural Language Processing

Transformer及其变体在NLP使命中得到了广泛的探求和运用,例如机器翻译、言语建模和命名实体识别。很多的作业致力于在大规划文本语料库上预练习Transformer 模型,这是Transformer在NLP中广泛运用的首要原因之一。

Computer Vision

Transformer还适用于各种视觉使命,例如图画分类、方针检测、图画生成和视频处理等。后续小C也会专门针对vision Transformer写一个系列化的总结,敬请等待。

Audio Applications

Transformer还可以扩展到与音频相关的运用,例如语音识别、语音合成、语音增强和音乐生成。

Multi-modal Applications

因为其灵敏的架构,Transformer还被运用于各种多方式场景,例如,视觉问答、视觉常识推理、字幕生成、语音到文本翻译 和文本到图画生成。多模态运用未来必定是一个热门的研讨方向,有爱好的读者可以往这上面多发发力。

展望

虽然X-former现已证明了它们在各种使命中的才能,但应战依然存在。除了当时的重视点(例如功率和泛化)之外,Transformer的进一步改善或许在于以下几个方向。

Theoretical Analysis

Transformer架构已被证明可以支持具有满足参数的大规划练习数据集。许多作业标明,Transformer具有比CNN和RNN更大的模型容量,因而具有处理很多练习数据的才能。当Transformer在满足的数据上进行练习时,它一般比CNN或RNN具有更好的功能【可以参阅谷歌爸爸的相关作业《Money Is All You Need》】。一个直观的解说是Transformer对数据结构的先验假定很少,因而比CNN和RNN更灵敏。但是,详细理论原因尚不清楚,咱们需求对Transformer才能进行一些理论剖析。【从模型容量这个视点考虑的话,MLP标明不服】

Better Global Interaction Mechanism beyond Attention

Transformer的一个首要长处是运用留意力机制来模拟输入数据中节点之间的大局依靠联系。但是,许多研讨标明,关于大多数节点来说,大局的留意力是不必要的。在某种程度上,无法有用区分地核算一切节点的留意力是低效的。因而,在有用地对大局交互进行建模方面仍有很大的改善空间。一方面,Self-Attention模块可以看作是一个具有动态衔接权重的全衔接神经网络,它经过动态路由聚合非部分信息。因而,其他动态路由机制是值得探求的代替办法。另一方面,大局交互也可以由其他类型的神经网络建模,例如记忆增强模型。

Unified Framework for Multimodal Data

在许多运用场景中,集成多模态数据关于进步使命功能是有用且必要的。此外,通用人工智能还需求可以捕捉不同模态之间的语义联系。因为Transformer在文本、图画、视频和音频方面取得了巨大的成功,咱们有机会构建一个统一的结构,更好地捕捉多模态数据之间的内在联系。但是,模内和跨模态留意力的规划仍有待改善。

总结

本文对Transformer架构进行了深度剖析,并介绍了Transoformer的一些相关变体作业,使读者对其内部结构和外部运用有了更进一步的深化了解。后续小编将专门针对Vision Transformer出一个系列性的总结,探求Transformer在CV范畴的可塑性。期望未来可以见到更有意思的多模态作业以及等待Transformer可以提前在工业界落地商用。

写在最终

假如您也对人工智能和核算机视觉全栈范畴感爱好,强烈推荐您重视有料、风趣、有爱的公众号『CVHub』,每日为咱们带来精品原创、多范畴、有深度的前沿科技论文解读及工业成熟解决计划!欢迎扫码与我沟通,一同讨论更多风趣的话题!