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

Transformer模型的变体有多少种?复旦大学邱锡鹏教授团队进行了全面综述

自 2017 年 6 月谷歌发布论文《Attention is All You Need》后,TRansfoRMeR 架构为整个 NLP 领域带来了极大的惊喜。在诞生至今仅仅四年的时间里,TRansfoRMeR 已经成为自然语言处理领域的主流模型,基于 TRansfoRMeR 的预训练语言模型更是成为主流。

随着时间的推移,TRansfoRMeR 还开始了向其他领域的跨界。得益于深度学习的发展,TRansfoRMeR 在计算机视觉(CV)和音频处理等许多人工智能领域已然杀疯了,成功地引来了学界和业界研究人员的关注目光。到目前为止,研究者已经提出了大量且种类驳杂的 TRansfoRMeR 变体(又名 X-foRMeR),但是仍然缺失系统而全面的 TRansfoRMeR 变体文献综述。

去年,谷歌发布的论文《EFFicient TRansfoRMeRs: A SuRvey》对高效 TRansfoRMeR 架构展开了综述,但主要关注 attention 模块的效率问题,对 TRansfoRMeR 变体的分类比较模糊。

近日,复旦大学计算机科学技术学院邱锡鹏教授团队对种类繁多的 X-foRMeR 进行了综述。首先简要介绍了 Vanilla TRansfoRMeR,提出 X-foRMeR 的新分类法。接着从架构修改、预训练和应用三个角度介绍了各种 X-foRMeR。最后概述了未来研究的一些潜在方向。

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

回顾 TRansfoRMeR 的发展

TRansfoRMeR 最初是作为机器翻译的序列到序列模型提出的,而后来的研究表明,基于 TRansfoRMeR 的预训练模型(PTM) 在各项任务中都有最优的表现。因此,TRansfoRMeR 已成为 NLP 领域的首选架构,尤其是 PTM。除了语言相关的应用,TRansfoRMeR 还被用于 CV、音频处理,甚至是化学和生命科学。由于取得了成功,过去几年研究者又提出了各种 TRansfoRMeR 变体(又名 X-foRMeR)。这些 X-foRMeR 主要从以下三个不同的角度改进了最初的 Vanilla TRansfoRMeR

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

模型泛化。由于 TRansfoRMeR 是一种灵活的架构,并且对输入数据的结构偏差几乎没有假设,因此很难在小规模数据上进行训练。改进方法包括引入结构偏差或正则化,对大规模未标记数据进行预训练等;

模型适配。这一系列工作旨在使 TRansfoRMeR 适应特定的下游任务和应用程序。

虽然可以根据上述角度来组织 X-foRMeR,但许多现有的 X-foRMeR 可能会解决一个或几个问题。例如,稀疏 attention 变体不但降低了计算复杂度,而且在输入数据上引入了结构先验以缓解小数据集上的过度拟合问题。因此,主要根据 X-foRMeR 改进 Vanilla TRansfoRMeR 的方式进行分类更加有条理:架构修改、预训练和应用。考虑到本次综述的受众可能来自不同的领域,研究者主要关注的是通用架构变体,仅简要讨论了预训练和应用方面的具体变体。

Vanilla TRansfoRMeR

架构

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

Transformer模型的变体有多少种?复旦大学邱锡鹏教授团队进行了全面综述

用法

通常有三种不同的方式使用 TRansfoRMeR 架构:

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

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

仅使用解码器,其中也移除了编码器 – 解码器 cRoSS-attention 模块,通常用于序列生成,例如语言建模。

TRansfoRMeR 变体的的分类

截止目前,领域研究人员从架构修改类型、预训练方法和应用这三个方面提出了各种基于 vanilla TRansfoRMeR 的变体模型。下图显示了 这些变体模型的类别:

Transformer模型的变体有多少种?复旦大学邱锡鹏教授团队进行了全面综述

而下图显示了本文研究者的分类和一些代表性模型:

Transformer模型的变体有多少种?复旦大学邱锡鹏教授团队进行了全面综述

Attention 模块

Self-attention 在 TRansfoRMeR 中非常重要,但在实际应用中存在两个挑战:

复杂度。self-attention 的复杂度为 O(T^2&Middot;D)。因此,attention 模块在处理长序列时会遇到瓶颈;

结构先验。Self-attention 对输入没有假设任何结构性偏差,甚至指令信息也需要从训练数据中学习。因此,无预训练的 TRansfoRMeR 通常容易在中小型数据集上过拟合。

Attention 机制的改进可以分为以下几个方向:

稀疏 attention。将稀疏偏差引入 attention 机制可以降低了复杂性;

线性化 attention。解开 attention 矩阵与内核特征图,然后以相反的顺序计算 attention 以实现线性复杂度;

原型和内存压缩。这类方法减少了查询或键值记忆对的数量,以减少注意力矩阵的大小;

低阶 self-Attention。这一系列工作捕获了 self-Attention 的低阶属性;

Attention 与先验。该研究探索了用先验 attention 分布来补充或替代标准 attention;

改进多头机制。该系列研究探索了不同的替代多头机制。

稀疏 attention

在标准的 self-attention 机制中,每个 Token 都需要 attend 所有其他的 Token。然而,据观察,对于经过训练的 TRansfoRMeR,学习到的 attention 矩阵 A 在大多数数据点上通常非常稀疏。因此,可以通过结合结构偏差来限制每个查询 attend 的查询键对的数量来降低计算复杂度。

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

原子稀疏 attention

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

Transformer模型的变体有多少种?复旦大学邱锡鹏教授团队进行了全面综述

复合稀疏 attention

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

Transformer模型的变体有多少种?复旦大学邱锡鹏教授团队进行了全面综述

扩展稀疏 attention

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

Transformer模型的变体有多少种?复旦大学邱锡鹏教授团队进行了全面综述

还有一些视觉数据的扩展。image TRansfoRMeR 探索了两种类型的 attention:

按光栅扫描顺序展平图像像素,然后应用块局部稀疏 attention;

2D 块局部 attention,其中查询块和内存块直接排列在 2D 板中,如上图 (b) 所示。

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

线性化 attention

下图显示了标准 self-attention 和线性化 lineaR-attention 的复杂度区别。

Transformer模型的变体有多少种?复旦大学邱锡鹏教授团队进行了全面综述

查询原型和内存压缩

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

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

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

Transformer模型的变体有多少种?复旦大学邱锡鹏教授团队进行了全面综述

先验 attention

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