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

最新Transformer模型盘点,谷歌研究人员出品

时间:2023-03-19 14:41:52 科技观察

本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。能够高效处理长文本的模型Longformer与堪称“升级版”Transformer的BigBird模型有什么区别?Transformer(X-former)的其他变体长什么样,它们的新应用是什么?由于Transformer模型发展太快,模型每天都在变化,即使过段时间再回来研究,模型也可能会多很多。Transformer模型是Google在2017年推出的经典NLP模型(Bert使用Transformer)。在机器翻译任务中,Transformer优于RNN和CNN,只需要编解码器就可以达到很好的效果,并且可以高效并行化。好消息是,这里有一份Transformer模型的“最新动向”,着重介绍了新的Transformer模型对于自注意力机制(Self-attention)的改进,并对这些模型进行了比较。此外,最近还有模型在NLP、计算机视觉、强化学习等各个领域的应用。标准的Transformer模型我们先来看看标准的Transformer模型长什么样子。Transformer的核心部分就是右边两条黑色实线圈出的两部分,左边是Encoder,右边是Decoder。可以看出encoder/decoder主要由两个模块组成:前馈神经网络(图中蓝色部分)和attention机制(图中玫红色部分),decoder通常还有一个(交叉)注意力机制。Transformer最重要的部分是注意力机制。通俗地说,注意力机制在图像处理中的应用,就是让机器“像人一样,特别注意图像的某一部分”,就像我们看图片时,通常会“特别注意””到图片中的某些地方。其中,self-attention机制是定义Transformer模型特性的关键,而关键问题之一在于其时间复杂度和空间复杂度。由于attention机制直接对序列(sequences)进行两两比较,计算量巨大(计算量变为O(n2))。最近,大量论文提出了新的Transformer“变体”。它们的根本目的是为了加快模型的运行效率,但是如果你一个一个地看,可能会有点眼花缭乱。为此,GoogleAI研究人员专门整理了一篇关于Transformer模型发展的论文,详细解释了它们的来源。“变体”之后的Transformer模型有两种分类方式。根据使用方法,Transformer模型可以分为以下三类:Encoderonly:可用于分类Onlydecoder:可用于语言建模Encoder-decoder:可用于机器翻译,但如果按照提高这些变体效率的原则来分类,即“高效的方法”,那么Transformer模型的这些“变体”可以分为以下几类:FixedPatterns(固定模式):限制领域ofview是固定的预定义模式,比如localwindow和fixedstrideblock,用于简化attentionmatrix;LearnablePatterns(可学习模式):以数据驱动的方式学习访问模式,关键是确定token相关性。内存:使用可以一次访问多个令牌的内存模块,例如全局内存。低秩:通过利用自注意力矩阵的低秩近似来提高效率。Kernels(内核):通过内核化提高效率,其中内核是注意力矩阵的近似,可以看作是一种低秩方法。Recurrence(递归):在矩阵分块法中使用递归连接各个分块,最终提高效率。可以看到,最近Transformer相关的研究都被分成了上图,非常清晰。了解了分类方法之后,接下来就是Transformer模型的各种变体。17经典之作《X-former》1.MemoryCompressedTransformer(2018)这是让Transformer更好地处理长序列的早期尝试之一。主要修改了两部分:定位范围注意力和内存压缩注意力。其中,前者旨在将输入序列分成长度相近的模块,并在每一部分运行self-attention机制,从而保证每一部分的attentioncost保持不变,激活次数可以成线性关系根据输入长度缩放。后者使用strideconvolution来减少attentionmatrix的大小和attention的计算量,减少量取决于stridesize。2.ImageTransformer(2018)这是受卷积神经网络启发的Transformer变体。重点在localattentionrange,也就是将感受野限制在局部区域。主要有两种方案:一维局部注意力和二维局部注意力。然而,该模型有一个限制,即以失去全局感受野为代价来降低存储和计算成本。3.SetTransformer(2019)这个模型的诞生是为了解决一个特殊的应用场景:输入是一组特征,输出是这组特征的函数。它利用稀疏高斯过程将输入集大小的注意力复杂度从二次降低到线性。4.SparseTransformer(2019)模型的关键思想是只在一小部分稀疏数据对上计算注意力,将密集注意力矩阵简化为稀疏版本。但是这个模型对硬件有要求,需要自定义GPU内核,不能直接用在TPU等其他硬件上。5.AxialTransformer(2019)该模型主要沿输入张量的单个轴应用多个注意力,每个注意力混合沿特定轴的信息,从而使其他轴上的信息保持独立。由于任何单个轴的长度通常远小于元素总数,因此该模型可以节省大量计算和内存。6.Longformer(2020)SparseTransformer的一种变体,通过在注意力模式中留下空隙并增加感受野来实现更好的远程覆盖。在分类任务上,Longformer使用可以访问所有输入序列的全局令牌(例如CLS令牌)。7.ExtendedTransformerConstruction(2020)也是SparseTransformer的一个变体,引入了新的globallocalattention机制,在引入globaltoken方面与Longformer类似。但由于无法计算因果掩码,ETC不能用于自动回归解码。8.和Longformer一样,BigBird(2020)也使用全局内存,但不同的是它有一个独特的“InternalTransformerConstruction(ITC)”,即全局内存被扩展为包含序列中的token,而不是简单的参数记忆。但是,与ETC一样,BigBird不能用于自动回归解码。9.RoutingTransformer(2020)提出了一种基于集群的注意力机制,以数据驱动的方式学习注意力稀疏性。为了确保集群中的令牌数量相似,模型会初始化集群并计算每个令牌相对于集群质心的距离。10.Reformer(2020)Anattentionmodelbasedonlocality-sensitivehashing(LSH),它引入了可逆的Transformer层,有助于进一步减少内存占用。该模型的关键思想是附近的向量应该得到相似的哈希值,而距离较远的向量不应该,因此被称为“局部敏感”。11.SinkhornTransformer(2020)该模型属于块模型,以块的方式对输入的键和值进行重新排序,应用基于块的局部注意机制来学习稀疏模式。12.Linformer(2020)这是一种基于低秩自注意力机制的高效Transformer模型,主要在长度维度上进行低秩投影,在单个变换中按维度混合序列信息。13.LinearTransformer(2020)该模型通过使用基于内核的自注意力机制和矩阵乘积的相关特性,将自注意力的复杂性从二次降低到线性。它已被证明可以将推理速度提高多达三个数量级,同时保持预测性能。14.Performer(2020)该模型使用OrthogonalRandomFeatures(ORF),使用近似的方法避免存储和计算attentionmatrix。15.Synthesizermodels(2020)该模型研究调节在self-attention机制中的作用,它合成了一个self-attention模块来近似这个attentionweight。16.Transformer-XL(2020)该模型使用递归机制链接相邻部分。基于块的递归可以被视为与其他讨论的技术正交的方法,因为它没有显式地稀疏密集自注意力矩阵。17.CompressiveTransformers(2020)该模型是Transformer-XL的扩展,但它不同于Transformer-XL,Transformer-XL在跨段移动时丢弃过去的激活,其关键思想是保持过去段激活的细节。粒状记忆。总的来说,这些经典模型的参数如下:更详细的解读(包括具体模型参数等),以及Transformer未来趋势预测,可以点击下方传送门查看全文。作者简介YiTay,论文第一作者,毕业于新加坡国立大学计算机科学硕士和博士学位。目前,YiTay在谷歌AI从事研究工作,主要专注于自然语言处理和机器学习。传送门论文链接:https://www.arxiv-vanity.com/papers/2009.06732