当前位置: 首页 > 科技观察

谷歌概览:Transformer模型

时间:2023-03-20 12:27:12 科技观察

的17个高效变体在NLP领域成功替代了RNN(LSTM/GRU),同时也应用于目标检测和图像标注等CV领域,以及RL领域.这是谷歌2020年9月发表在arXiv上的一篇综述论文《EfficientTransformers:ASurvey》,值得一读。文章主要关注一类X-former模型,如Reformer、Linformer、Performer、Longformer,它们对原有的Transformer进行了改进,提高了其计算和内存效率。论文题目:EfficientTransformers:ASurvey论文链接:https://arxiv.org/pdf/2009.06732访问arxiv速度慢的朋友也可以在【席逍遥的可爱小屋】订阅号后台回复关键词【1220】下载论文]PDF~Transformer评论自注意力是Transformer模型的一个关键定义特征。这种机制可以看作是一种类似图形的归纳偏差,它将序列中的所有标记与基于相关性的池化操作相关联。self-attention的一个众所周知的问题是二次级时间和内存复杂度,这阻碍了模型在许多设置中的可扩展性。因此,最近大量的变体被提出来解决这个问题,这类模型在这里被称为高效的Transformers。高效的自注意力模型在长序列建模的应用中至关重要,例如文档、图像和视频,这些通常由相对大量的像素或标记组成。因此,处理长序列的效率对于Transformer的广泛采用至关重要。该图显示了一个标准的Transformer架构:Transformer是一个多层架构,通过将Transformer块堆叠在一起形成。Transformerblocks的特点包括多头自注意力机制、positionwise前馈网络(feed-forwardnetwork)、layernormalization(LN)模块和残差连接器(residualconnectors)。Transformer模型的输入通常是形状为BxN的张量,其中B是批量大小,N是序列长度。输入首先通过一个嵌入层,该层将每个one-hottoken表示转换为d维嵌入向量,即BxNxd。然后,新张量与位置编码相加并通过多头自注意力模块。位置编码可以采用正弦输入或可训练嵌入的形式。多头自注意力模块的输入和输出通过残差连接器和层归一化层(LN)模块连接。然后,多头自注意力模块的输出被传递到一个双层前馈网络(FFN),类似于以残差方式连接层归一化(LN)模块。带层归一化模块的残差连接器定义为:而Multi-HeadSelf-Attention中的单头操作定义为:注意力矩阵A=QK^T主要负责学习序列中token之间的校准分数。这会驱动自注意力自校准过程,以便令牌学会彼此聚类。然而,这种矩阵计算是一个效率瓶颈。FFN的层操作定义为:整个Transformer块的操作定义为:下面需要注意的是Transformer模块的使用方式不同。Transformer的主要使用方式包括:(1)encoder(比如分类),(2)decoder(比如语言建模),(3)encoder-decoder(比如机器翻译)。在编码器-解码器模式中,通常有多个多头自注意力模块,包括编码器和解码器中的标准自注意力,以及允许解码器利用来自解码器交叉注意力的信息的编码器-解码器。这会影响self-attention机制的设计。在编码器模式中,没有约束或自我注意机制的约束必须是因果的,即只依赖于现在和过去的标记。在encoder-decoder设置中,encoder和encoder-decodercross-attention可能是non-causal的,但是decoder的self-attention一定是causal的。设计有效的自注意力机制需要支持AR(自动回归)解码的因果关系,这可能是一个普遍的限制因素。EfficientTransformersEfficientTransformers的分类如图所示,近两年(2018-2020)发表的相应方法的时间、复杂度和类别如表所示:注:FP=FixedPatterns/Combinationsof固定模式,M=记忆,LP=可学习模式,LR=低等级,KR=内核,RC=循环。除了基于分段的递归之外,大多数模型的主要目标是近似注意力矩阵的二次级。每种方法都将稀疏性的概念应用于原始的密集注意机制。Fixedpatterns(FP):selfattention最早的改进是将视野限制在固定的、预定义的模式(例如局部窗口和具有固定步幅的块模式)以简化注意力矩阵。BlockwisePatterns这种技术在实践中最简单的例子是blockwise(或分块)范例,它将输入序列划分为固定块,考虑局部感受野块。这方面的例子包括块级和/或局部注意力。将输入序列分解为块将复杂性从N^2降低到B^2(块大小),其中B<k)。不难发现,由于现在NxN矩阵被分解成了Nxk,所以这种方法提高了selfattention的存储复杂度。Kernels:最近流行的另一个提高Transformers效率的方法,通过kernelization看attention机制。使用内核可以巧妙地重写自我注意机制的数学,避免显式计算NxN矩阵。由于kernel是attentionmatrix的一种近似形式,所以也可以看成是LowRankmethod的一种。递归:分块方法的一个直接扩展是递归地连接这些块。Transformer-XL提出了一种连接多个段和块的段级递归机制。从某种意义上说,这些模型可以看作是FP模型。MemoryandComputationalComplexityAnalysis本综述分析了以下17种方法的内存和计算复杂度,即1.MemoryCompressedTransformer:“Generatingwikipediabysummarizinglongsequences”如图2,ImageTransformer:“ImageTransformer”如图2图3.SetTransformer:《Settransformer:Aframeworkforattention-basedpermutation-invariantneuralnetworks》如图4,SparseTransformer:《Generatinglongsequenceswithsparsetransformers》如图5,AxialTransformer:》Axialattentioninmultidimensionaltransformers.》如图6,Longformer:《Longformer:Thelong-documenttransformer》如图7,ExtendedTransformerConstruction(ETC):《Etc:Encodinglongandstructureddataintransformers》如图在图8,BigBird:“BigBird:TransformersforLongerSequences”中如图9,RoutingTransformer:“Efficientcontent-basedsparseattentionwithroutingtransformers”为如图10,Reformer:《Reformer:Theefficienttransformer》如图11,SparseSinkhornTransformer:《Sparsesinkhornattentionon”如图12,Linformer:“Hat:Hardware-awaretransformersforefficientnaturallanguageprocessing”如图13,LinearTransformer:“Transformersarernns:Fastautoregressivetransformerswithlinearattention”如图是其算法伪代码14,Performer:"Maskedlanguagemodelingforproteinsvialinearlyscalablelong-contexttransformers"如图是FastAttentionviaOrthogonalRandomFeatures(FAVOR)的算法伪代码15,Synthesizer:"Synthesizer:Rethinkingself-attentionintransformermodels。”如图16,Transformer-XL:“Transformer-xl:Attentivelanguagemodelsbeyondafixed-lengthcontext”如图17,CompressiveTransformers:“Compressivetransformersforlong-rangesequencemodeling”如评估基准所示,虽然该领域忙于使用新的Transformer模型,但几乎没有简单的方法来比较这些模型。许多研究论文选择了自己的benchmarks来展示所提出模型的能力。再加上不同的超参数设置(例如模型大小和配置),可能很难正确找到性能提升的原因。此外,一些论文将其与预训练进行比较,使得区分这些不同模型的相对性能变得更加困难。考虑哪个基本有效的Transformer块仍然是一个谜。一方面,有多种模型专注于生成建模,展示了所提出的Transformer单元在顺序AR(自回归)建模中的能力。为此,SparseTransformers、AdaptiveTransformers、RoutingTransformers和Reformers主要专注于生成建模任务。这些基准测试通常涉及在Wikitext、enwik8和/或ImageNet/CIFAR等数据集上进行语言建模和/或逐像素图像生成。而基于段的递归模型(例如Transformer-XL和CompressiveTransformers)也专注于大规模语言建模任务,例如PG-19。一方面,一些模型主要关注仅编码任务,例如问题回答、阅读理解和/或从Glue基准中选择。例如,ETC模型仅在NaturalQuestions或TriviaQA等问答基准上进行实验。另一方面,Linformer专注于GLUE基准测试的一个子集。这种分解是非常自然和直观的,因为ETC、Linformer等模型不能以AR(auto-regressive)的方式使用,即不能用于解码。这加剧了将这些编码器模型与其他模型进行比较的难度。一些模型着眼于两者之间的平衡。Longformer试图通过在生成建模和编码器任务上运行基准测试来平衡这一点。SinkhornTransformer将生成建模任务与仅编码任务进行比较。此外,还值得注意的是,尽管针对Seq2Seq任务的**机器翻译(MT)**是普及Transformer模型的问题之一,但这些有效的Transformer模型并没有对MT进行太多评估。这可能是因为MT的序列长度不足以保证使用这些模型。尽管生成建模、**GLUE(通用语言理解评估)**和/或问答似乎是这些应用程序的常见评估基准,但仍有一些基准可以单独评估少量论文。首先,Performer模型评估掩码语言建模,并与其他有效的Transformer模型进行正面比较。而LinearTransformer还评测了语音识别,这个比较少见。效率对比此外,论文还在文末对这些效率提升方法进行了分析对比,主要有几个方面:WeightSharingQuantization/MixedPrecisionKnowledgeDistillation(KD)NeuralArchitectureSearch(NAS)TaskAdapters