互联网资讯 / 人工智能 · 2023年12月12日 0

Transformer模型的变体综述

自2017年6月谷歌发布《Attention is All You Need》论文以来,Transformer架构为自然语言处理(NLP)领域带来了巨大的变革。在短短四年的时间里,Transformer已成为NLP的主流模型,基于Transformer的预训练语言模型更是广泛应用。

随着时间的推移,Transformer也开始向其他领域扩展。得益于深度学习的进步,Transformer在计算机视觉(CV)和音频处理等多个人工智能领域展现出强大的能力,吸引了学术界和工业界的研究者关注。截至目前,研究者们已提出了众多各具特色的Transformer变体(也称为X-Transformer),但系统全面的文献综述仍显不足。

去年,谷歌发布的《Efficient Transformers: A Survey》对高效Transformer架构进行了综述,尽管主要关注于注意力模块的效率问题,但对Transformer变体的分类却显得模糊。

近期,复旦大学计算机科学技术学院的邱锡鹏教授团队对多种X-Transformer进行了综述。他们首先简要回顾了原始的Vanilla Transformer,并提出了一种新的X-Transformer分类法。随后,从架构修改、预训练和应用三个角度详细介绍了各种X-Transformer,最后展望了未来研究的一些潜在方向。

论文链接:
https://aRxiv.oRg/pdf/2106.04554.pdf

回顾Transformer的发展

最初,Transformer被提出作为机器翻译的序列到序列模型,之后的研究表明,基于Transformer的预训练模型在各种任务中表现优异。因此,Transformer已成为NLP领域的首选架构,尤其是在预训练模型方面。除了语言相关的应用外,Transformer还被用于计算机视觉、音频处理,甚至涉及化学和生命科学。由于其卓越的表现,近年来研究者们又提出了多种Transformer变体(X-Transformer),主要从以下三个方面对原始Vanilla Transformer进行了改进:

模型效率。使用Transformer的一个主要挑战是处理长序列时的效率低下,这主要源于自注意力(self-attention)模块的计算和内存复杂度。改进方法包括轻量级注意力(如稀疏注意力变体)和分而治之的策略(如循环和分层机制);

模型泛化。由于Transformer架构的灵活性及对输入数据结构偏差的几乎无假设,导致其在小规模数据上训练困难。改进方法包括引入结构偏差或正则化,利用大规模未标记数据进行预训练等;

模型适配。相关工作旨在使Transformer更好地适应特定的下游任务和应用。

虽然可以根据上述角度组织X-Transformer,但许多现有的X-Transformer可能针对一个或多个问题进行优化。例如,稀疏注意力变体既降低了计算复杂度,也在输入数据中引入了结构先验,以减轻小数据集上的过拟合。因此,按X-Transformer对Vanilla Transformer的改进方式进行分类更加清晰:架构修改、预训练和应用。考虑到本次综述的受众可能来自不同领域,研究者主要聚焦于通用架构变体,仅简要讨论了预训练和应用方面的特定变体。

Vanilla Transformer

架构

Vanilla Transformer是一个序列到序列的模型,由编码器和解码器组成,二者均由相同的模块堆栈构成。每个编码器块主要由多头自注意力模块和位置前馈网络(FFN)组成。为了构建更深的模型,每个模块周围都采用了残差连接,并进行层归一化。与编码器块相比,解码器块在多头自注意力模块和位置FFN之间额外插入了交叉注意力模块。此外,解码器中的自注意力模块用于防止每个位置影响后续位置。Vanilla Transformer的整体架构如下图所示:

Transformer模型的变体综述

用法

Transformer架构通常有三种不同的用法:

使用编码器-解码器结构,通常用于序列到序列建模,如神经机器翻译;

仅使用编码器,编码器的输出作为输入序列的表示,通常用于分类或序列标记任务;

仅使用解码器,此时去除了编码器-解码器的交叉注意力模块,通常用于序列生成,如语言建模。

Transformer变体的分类

至今,研究人员从架构修改、预训练方法和应用三个方面提出了多种基于Vanilla Transformer的变体模型。下图展示了这些变体模型的类别:

Transformer模型的变体综述

下图则呈现了研究者的分类和一些代表性模型:

Transformer模型的变体综述

注意力模块

自注意力在Transformer中至关重要,但在实际应用中面临两个主要挑战:

复杂度。自注意力的复杂度为O(T^2·D),因此在处理长序列时会出现瓶颈;

结构先验。自注意力对输入数据没有假设任何结构性偏差,甚至指令信息也需从训练数据中学习。因此,未进行预训练的Transformer在中小型数据集上通常容易过拟合。

注意力机制的改进方向主要包括:

稀疏注意力。通过引入稀疏偏差降低复杂度;

线性化注意力。对注意力矩阵进行解构,按相反顺序计算注意力以实现线性复杂度;

查询原型和内存压缩。减少查询或键值对的数量以降低注意力矩阵的尺寸;

低阶自注意力。捕获自注意力的低阶特性;

注意力与先验。探索用先验注意力分布补充或替代标准注意力。

稀疏注意力

在标准自注意力机制中,每个Token都需要关注所有其他Token。然而,对于经过训练的Transformer,学习得到的注意力矩阵A在大部分数据点上通常是非常稀疏的。因此,可以通过结合结构偏差来限制每个查询关注的查询键对数量,从而降低计算复杂度。

从另一个角度来看,标准注意力可以视为一个完整的二部图,其中每个查询从所有内存节点接收信息并更新其表示。而稀疏注意力则可以视为一个稀疏图,其中删除了节点之间的一些连接。基于确定稀疏连接的指标,研究者将这些方法分为基于位置和基于内容的稀疏注意力。

原子稀疏注意力

一种基于位置的稀疏注意力是原子稀疏注意力,其主要有五种模式,如下图所示。彩色方块表示计算的注意力分数,空白方块表示放弃的注意力分数。

Transformer模型的变体综述

复合稀疏注意力

另一种基于位置的稀疏注意力是复合稀疏注意力,下图展示了其五种主要模式,其中红色框表示序列边界。

Transformer模型的变体综述

扩展稀疏注意力

除了上述模式,已有研究针对特定数据类型探索了扩展稀疏模式。下图(a)展示了全局注意力扩展的抽象视图,其中全局节点以层次方式组织,任何一对Token都通过二叉树的路径相连。红色框表示查询位置,橙色节点/方块表示查询关注的相应Token。

Transformer模型的变体综述

在视觉数据中也有相关扩展。Image Transformer探索了两种类型的注意力:

将图像像素按光栅扫描顺序展平后应用块局部稀疏注意力;

2D块局部注意力,其中查询块和内存块直接排列在2D平面中,如上图(b)所示。

视觉数据稀疏模式的另一个例子是Axial Transformer,其在图像的每个轴上应用独立的注意力模块。每个注意力模块沿一个轴混合信息,同时保持另一个轴的信息独立,如上图(c)所示。这可以理解为按光栅扫描顺序水平和垂直展平图像像素,然后分别应用具有图像宽度和高度间隔的跨步注意力。

线性化注意力

下图展示了标准自注意力和线性化注意力的复杂度区别。

Transformer模型的变体综述

查询原型和内存压缩

除了使用稀疏注意力或基于内核的线性化注意力外,还可以通过减少查询或键值对的数量来降低注意力的复杂度,这引导出查询原型和内存压缩的方法。

在查询原型设计中,多个查询原型作为计算注意力分布的主要来源。该模型要么将分布复制到表示的查询位置,要么用离散均匀分布填充这些位置。

下图(a)说明了查询原型的计算流程。除了通过查询原型减少查询数量外,还可以通过在应用注意力机制之前减少键值对的数量(压缩键值内存)来降低复杂度,如下图(b)所示。

Transformer模型的变体综述

先验注意力

注意力机制通常将预期值输出为向量的加权和,其中权重是基于注意力分布的。传统上,该分布是从输入生成的,例如在Vanilla Transformer中的softMax(QK⊤)。一般情况下,注意力分布也可以来自其他来源,也即先验。先验注意力分布可以补充或替代输入生成的分布。注意力的这一表述可以抽象为具有先验注意力,如下图所示。