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

高效Transformer层出不穷,谷歌团队综述文章一网打尽

时间:2023-03-20 01:41:54 科技观察

EfficientTransformers层出不穷,谷歌团队一下子审完了文章。最近出现的大量Transformer变体都朝着更高效的方向发展,谷歌研究人员已经审查了这种高效的Transformer架构。Transformer是现代深度学习领域一股令人敬畏的力量。它广泛应用于语言理解、图像处理等多个领域,产生了很大的影响。在过去的几年里,大量的研究在Transformer模型的基础上做出了根本性的改进。对此的巨大兴趣也刺激了对更高效的Transformer变体的研究。最近涌现出如此多的Transformer模型变体,研究人员和从业者可能难以跟上创新的步伐。在撰写本文时(2020年8月),在过去六个月中出现了十多个新的高效Transformer模型。因此,对现有文献的回顾对社区来说是有益和及时的。自注意力机制是Transformer模型的核心典型特征。这种机制可以看作是一种类似图形的归纳偏差,它通过基于相关性的池化操作将序列中的所有标记连接起来。self-attention的一个问题是它的时空复杂度是二次方的,这阻碍了模型在多种环境中的可扩展性。最近,出现了大量试图解决这个问题的Transformer模型的变体,本文将此类模型称为“高效的Transformers”。基于此,对模型的效率进行了不同的解释。效率可能指的是模型的内存占用,当模型运行在内存有限的加速器上时,效率尤为重要;它也可能指训练和推理过程中的计算成本,例如FLOPs的数量。特别是对于设备上的应用程序,模型应该在有限的计算预算下运行。这篇评论文章从内存和计算的角度考虑了Transformer的效率。高效的自注意力模型对于为长序列建模的应用程序至关重要,例如通常包含许多像素或标记的文档、图像和视频。因此,要广泛采用Transformer,优先考虑的是处理长序列的效率。本文旨在概述此类模型的最新发展,重点介绍通过解决自注意力机制的二次复杂性来提高Transformer效率的建模开发和架构创新。本文还简要讨论了一般改进和其他效率改进。本文提出了高效Transformer模型的分类法,按技术创新和主要用途分类。具体来说,本文总结了在语言和视觉上都有应用的Transformer模型,并对其中的一些模型进行了详细的解读。论文链接:https://arxiv.org/pdf/2009.06732.pdf关于TransformerTransformer是一个多层架构,将Transformer块一个一个堆叠起来。标准的Transformer架构如下图所示:Transformer块的特点是多头自注意力机制、位置前馈网络、层归一化模块和残差连接。Transformer模型的输入通常是形状为R^B×R^N的张量,其中B是批量大小,N是序列长度。输入首先通过嵌入层,它将每个单热标记表示转换为d维嵌入,即R^B×R^N×R^D。然后将这个新张量与位置编码相加,并送入多头自注意力模块。位置编码可以采用正弦输入或可训练嵌入的形式。多头自注意力模块的输入和输出由残差连接和层归一化层连接。多头自注意力模块的输出被馈送到一个双层前馈网络,其输入/输出通过残差和层归一化连接。子层残差连接和层归一化可以表示为:其中F_S是子层模块,它可以是多头自注意力层,也可以是位置前馈层。高效Transformer模型概述本节概述了高效Transformer模型。首先,让我们看一下不同模型的特点。表1列出了目前发布的高效Transformer模型,图2给出了多种重要的高效Transformer模型的示意图。图2:高效Transformer模型的分类,分类标准是模型的核心技术和主要应用场景。表1:按时间顺序排列的高效Transformer模型。此外,本节详细介绍了几个重要的高效Transformer模型,并分析了它们的优缺点和独特性。这些模型包括:MemoryCompressedTransformer、ImageTransformer、SetTransformers、SparseTransformers、AxialTransformers、Longformer、ETC、BigBird、RoutingTransformers、Reformer、SinkhornTransformers、Linformer、Synthesizers、Performer、LinearTransformers、Transformer-XL和CompressiveTransformers.具体细节这里不再赘述,详见原论文第3章。论文最后讨论了这些模型的评估状态和设计趋势,并简要概述了其他可以提高Transformer效率的方法,例如权重共享、量化/混合精度、知识蒸馏、神经架构搜索(NAS)、和任务适配器。