transformer综述汇总与变形分析(持续更新)

Note: 本文收集transformer领域的较流行的综述文章,将认为比较重要的内容整理在一起,用于学习和提供思路。

1.谷歌:Efficient Transformers: A Survey(2020年9月-新手不建议阅读)

该综述关注各种“X-former”的变形,重要关注模型效率的改进以及有关计算复杂度的模型讨论,作者称为“Efficient transformers”

在这里插入图片描述

高效transformer 结构分类

在这里插入图片描述
按照时间顺序对论文进行排序。包含算法的复杂度、是否使用Decode,

Fixed Patterns (FP)

早期对自注意力的修改仅仅通过限制可视View为固定的、预定义的模式来稀疏化注意力矩阵,如局部window、固定stride的block模式。

  • Blockwise Patterns 。这个最简单的例子是分块。通过将输入序列分成固定的block来考虑局部感受野的block。这样做的模型有Blockwise、Local Attention。把输入序列分割成blocks减少了模型复杂度 N 2 N^2 N2 B 2 ( b l o c k s i z e ) B^2(block size) B2(blocksize),这里 B < < N B << N B<<N,大大减少了计算量。这些blockwise或者分块方法作为许多复杂模型的基本操作使用。
  • Stride Patterns。另一种方法是考虑stride attention patterns,例如只关注固定间隔。模型有Sparse Transformer。Longformer应用strided或者离散window。
  • Compressed Patterns。另一种是使用池化操作下采样序列长度为一个固定模式的形式,举个例子,Compressed Attention使用stride convlution 有效减少了序列长度。
Combination of Patterns(CP) -

组合方法的关键是通过组合两个或者多个不同的接入模式来覆盖更多范围。如,稀疏transformer*通过分配一半的头给模式(直接翻译过来,不太好理解)*结合了strided以及local attention。类似地,Axial Transformer基于输入的高维张量使用自注意力计算序列,每一个都沿着输入张量的一个轴。这种模式与固定模式一样减少了内存消耗。不同的地方在于,多种模式的组合提高了自注意力机制的整体覆盖率。

Learnable Patterns(LP)-

对于FP模式的扩展,模型使用可学习模式是为了在数据驱动的方式下学到可接受的模式。一个关键特性是token 相关性的概念,然后分配tokens到存储或者聚类。值得注意的是,Re-former 引入一种基于哈希的相似性度量方式可以有效聚类token为块。类似的Routing Trnasformer 使用在线 K-means 聚类token。同时, S i n k h o r n Sinkhorn Sinkhorn Sorting Network 通过学习对输入序列排序暴露了注意力权重的稀疏性。在所有这些模型中,相似性函数都是与网络的其余部分联合进行端到端训练的。可学习模式的关键思想仍然是利用固定模式(组块模式)。然而,这类方法学习对输入令token进行排序/聚类–在保持固定模式方法的效率优势的同时,实现序列的更优化的全局视图。

Memory

另一种重要的方法是利用可以一次访问多个token的端内存模块。一种常见的形式是能够访问整个序列的全局存储器。全局token充当学习从输入序列令牌收集的一种存储器形式。这是在SET Transformers(Lee等人,2019年)中首次引入的诱导点法。这些参数通常被解释为“内存”,并用作未来处理的一种临时上下文形式。这可以被认为是参数注意力的一种形式(SukhbaTower等人,2019年)。全局内存也被用于ETC(Ainsle等人,2020)和Longformer(Belagy等人,2020)。使用有限数量的memory(或诱导点),我们能够对输入序列执行类似于池化的初步操作来压缩输入序列–这是在设计高效的自我注意模块时可以随意使用的巧妙技巧。

Low-Rank Methods

利用低秩方法近似自注意力矩阵,核心思想在 N × N N \times N N×N矩阵中使用低秩结构。Linformer是一个典型例子,它将K、V的维度映射到一个低维表征空间( N → k N \rightarrow k Nk).很容易看出低秩方法改善了自注意力的空间复杂度问题, N × N N \times N N×N 矩阵现在分解为 N × K N \times K N×K

Kernels

另一种提高效率的方法是通过核化来观察注意力机制。使用核方法可以避免显式计算注意力矩阵,也是一种近似方法。可以视为低秩方法的一种。

Recurrence

对于block wise方法的扩展,通过递归连接blocks。

2.华为、北大:A Survey on Visual Transformer(2020年12月)

3.复旦大学邱锡鹏组综述:A Survey of Transformers(2021年6月15日)

该篇综述以transformer结构变形为重点,分析了Module-level、Arc-level、PTM等结构和方法,给出了明确清晰的变形思路和路径。

随着transfomer的成功,各种基于原始transfomrer的变形不断被提出,作者将其归纳为3个方面:

  • 模型效率:由于原始self-attention模块的计算复杂度和内存要求,在长序列情况下应用transformer是一个挑战,提升方法包括轻量化模型(如稀疏注意力变形)和分而治之的方法。
  • 模型泛化:因为transformer是一个灵活的结构,在输入数据的几乎不作任何结构偏置的假设,这导致在小数据集上训练困难,容易过拟合。提升方法包括引入结构偏置或者正则化,在大规模数据上无监督训练等。
  • 模型适应:主要为了将transformer用于特定的下游任务和应用。
attention-module

在这里插入图片描述

这里关注一下softmax函数, D k \sqrt{D_{k}} Dk 的作用是为了缓解softmax函数的梯度消失问题。
在这里插入图片描述
依据Q,K,V ,transformer中有三种类型的注意力:self-attention(基本module)、masked self-attention(序列上下文位置信息,只依赖于之前信息,预测未来的信息)、Cross-attention(encoder与decoder之间的信息传递)。

Model usage
  • Encoder-Decoder :引入全部transformer结构,常用于序列到序列建模。
  • Encoder only:只使用编码器,编码器的输出用作输入序列的表示。这通常用于分类或序列标签问题。
  • Decoder only:仅使用解码器,encoder-decoder cross attention 也被移除。这通常用于序列生成,例如语言建模。
Model analysis

hidden-dimension :D
Sequence length: T
可见随着序列长度的增加,self-attention 的计算复杂度 O ( T 2 ⋅ D ) O(T^{2}\cdot D) O(T2D)将快速上升,因此对于长序列计算来说,transformer仍面临挑战。
在这里插入图片描述
transformer结构与其它结构计算复杂度比较
self-attention的advantages:

  • 它与全连接层具有相同的最大路径长度,因此适合于远程依赖关系建模。与全连接层相比,在处理可变长度输入时更具参数效率和灵活性。
  • 由于卷积层的感受野有限,人们通常需要通过堆叠一个深层网络来获得全局感受野。另一方面,恒定的最大路径长度能够让self-attention 建模具有固定layers数量的长距离依赖。
  • 固定的序列操作和最大路径长度使得self-attention比RNN网络更具并行性,更适合长距离建模。

在这里插入图片描述

归纳偏置

点击获取详细解释:inductive bias

transformer经常用来和CNN与RNN比较。众所周知,CNN利用共享的局部核函数施加平移不变性和局部性(局部权值共享)的归纳偏差,类似的,RNN通过其马尔可夫结构携带时间不变性和局部性的归纳偏差。Transformer结构对于数据的结构信息几乎不作任何假设,这使得trnasformer成为一种灵活、通用的体系结构,同时带来的负面影响就是在小数据集上容易过拟合。

另一种密切相关的网络类型是带有消息传递的图神经网络(GNNs)[149]。Transformer可以被看作是在一个完整的有向图(带有自循环)上定义的GNN,其中每个输入都是图中的一个节点。Transformer和GNNs之间的关键区别在于,Transformer没有引入关于输入数据结构的先验知识——Transformer中的消息传递过程完全依赖于内容的相似性度量。

TAXONOMY OF TRANSFORMERS

大量transformer模型变形已经被提出,主要可以分为以下三个方面:

  1. 结构修改
  2. 预训练模型PTM(pre-training model)
  3. 应用
    不同颜色对应不同的模块,左边是module的修改变形,中间是transformer结构,右边是三个方面对用的变形。
    在这里插入图片描述
    分类结构图
    在这里插入图片描述

这篇文章主要关注结构方面的修改。

attention

self-attention 在transformer中扮演重要角色,但是在实际应用中仍然面临两个挑战:

  • 复杂度。计算复杂度在长序列的情况下与序列长度平方正比。
  • 结构先验。self-attention对输入没有假设任何结构化偏置,即使是顺序信息也是从训练集中学习得到,因此容易在小数据集上过拟合。
    对应的提升方法可以分为以下几个方向:
  • Spase attention
    由5种原子稀疏注意力模式互相组合而成,图中彩色部分为实际连接部分,对应q与k,上下两部分的图一一对应,图(b)、(c)是类似的,(d)是随机选取一些node。
    在这里插入图片描述

下图是原子稀疏注意力模式的组合形成的一些表征模式。
在这里插入图片描述
针对特定数据类型提出的稀疏性注意力模型。
在这里插入图片描述

  • Lineariaed attention
    将softmax非线性函数用特征映射函数 ϕ ( ⋅ ) \phi(\cdot) ϕ()的内积来代替以降低计算复杂度。
    使用 ϕ ( Q ) ϕ ( K ) T 代替 e x p ( Q k T ) 使用\phi(Q)\phi(K)^T 代替exp(Qk^{T}) 使用ϕ(Q)ϕ(K)T代替exp(QkT),这里的 ϕ \phi ϕ就是机器学习中的核函数

    在这里插入图片描述

  • Prototype and memeory Compression.
    除了稀疏注意力和基于核的线性attention,也可以通过减少query或者key-value对的的数目来减少attention 的复杂度,分别提出了query prototyping 、memory compression两种方法。
    在这里插入图片描述

  • Low-rank self-attention
    一些研究分析报告self-attention 矩阵A通常是低秩的(local-rank)。这里有两重含义:

  1. 低秩属性可以参数化显示建模-----注意力矩阵的rank小于序列长度这一事实表明,对于输入序列较短的场景,设置 D k > T D_k>T Dk>T不仅导致参数量过多,而且导致过拟合。因此限制 D k D_k Dk的维度,明确将 建模低秩属性作为inductive bias 是合理的。
  2. self-attention 矩阵可以使用低秩矩阵近似代替-----最相关的一种方法是核矩阵的低秩近似。
  • Attention with prior
    注意力机制通常以向量加权和的方式输出一个期望值,其中权重是对values的注意力分布。通常分布是由输入数据产生的,但是也可以从其他来源产生,也就是先验。先验注意力分布可以作为原始数据分布的补充或替换,将这种形式称为attention with prior,如下图所示。在很多例子中,在大多数情况下,两种注意力分布的融合可以通过在应用softmax之前计算与先验和生成的注意力相对应的分数的加权和来实现。
    在这里插入图片描述

  • Improved Multi-Head attention
    多头注意是一种在不同位置共同关注不同表征子空间信息的能力。然而,没有任何机制可以保证不同的注意头确实捕捉到不同的特征。
    使用多头注意的一个基本动机是允许模型共同关注来自不同位置的不同表征子空间的信息。然而,在vanilla Transformer中,没有明确的机制来保证注意头之间的不同行为,也没有任何机制让注意头相互作用。一系列工作致力于通过引入更复杂的机制来改进多头机制,这些机制可以引导不同注意头的行为或允许不同注意头之间的交互。

未来方向:
  1. 理论分析。transformer在大规模数据集的情况下表现要比CNN和RNN更好,数据集越大,性能越高,同时,transformer关于数据结构几乎没有任何先验假设,因此比起CNN和RNN更灵活。然而,理论上的原因还不清楚。
  2. 更好的全局交互机制。transformer的一大优点就是使用注意力机制在输入数据中的节点建模全局依赖。然而,许多研究表明,对于大部分节点,full attention 不是必须的。在某种程度上,不加区分地计算所有节点的attention是低效的。因此,在有效建模全局互动方面仍有很大的改进空间。一方面,self-attention可以看作是一个具有动态连接权值的全连接神经网络,通过动态路由聚合非局部信息,因此,其他动态路由机制是值得探索的替代方法。另一方面,全局交互也可以由其他类型的神经网络建模,例如记忆增强模型。
  3. 对于多模态数据的统一框架。在许多应用场景中,集成多模态可以提高模型性能,通用AI也需要各种跨模态语义关系。transformer在文本、图像、语音、视频都取得了巨大的成功,因此有机会构建一个统一模型。

4.中科院、东南大学、联想公司 :A Survey of Visual Transformers(2021年11月)

5.清华、南开:Attention Mechanisms in Computer Vision:A Survey(2021年11月)

该篇综述关注注意力机制的发展,从attention的角度叙述模型发展。
人类可以轻易在复杂场景中找到感兴趣的目标,受此启发,将注意力机制引入计算机视觉领域,目的是为了模仿人类视觉系统。注意机制在许多视觉任务中取得了巨大的成功,包括图像分类、目标检测、语义分割、视频理解、图像生成、三维视觉、多模态任务和自监督学习。在这项调查中,我们全面回顾了计算机视觉中的各种注意机制,并根据data domain 而不是application对它们进行分类,如通道注意力、空间注意力、时间注意力和分支注意力;相关存储库https://github.com/MenghaoGuo/Awesome-Vision-Attentions致力于收集相关工作。论文还提出了注意机制研究的未来方向。
在这里插入图片描述

四种基本注意力机制以及两种混合注意力机制

在这里插入图片描述

根据data domain分为六种注意力机制
C代表通道域,H和W代表空间域,T代表时域,branch attention是补充。

人类视觉系统中的注意力机制可以视为一个动态选择的过程,通过对输入重要性进行自适应的加权来实现。

在这里插入图片描述

基于注意力机制的深度学习视觉模型 简要历史

General form

日常生活中,人类看见一个场景,将快速聚焦于一个感兴趣的判别区域,并可以快速处理,以上过程可以写为一个注意力通用形式,** a t t e n t i o n = f ( g ( x ) , x ) attention=f(g(x),x) attention=f(g(x),x)**这里g(x)产生注意力,对应于有关判别区域的处理过程。f(g(x),x)表示基于attention g(x)处理输入x,这与处理重要区域以及获取信息时一致的。

通过以上定义,可以将现有的所有注意力公式表示为以上形式,以self-attention以及squeeze-and-excitation(SE) attention 为例,对于self-attention
在这里插入图片描述
对于SE,
在这里插入图片描述

在这里插入图片描述

channel attention

channel attention 自适应地重新校准每个通道的权重,可以将其视为一个对象选择过程,从而确定要注意的内容(what to pay attention to )。SENet 首次提出了channel attention。根据图4顺序进行了说明

spatial attention

空间注意力可以看作是一种自适应的空间区域选择机制:where to pay attention。根据图4顺序进行了说明

Temporal attention

时间注意力可以看作是一种动态的时间选择机制,决定when to attention ,因此通常用于视频处理。根据图4顺序进行了说明

Branch attention

分支注意力可以被看作是一种动态的分支选择机制:which to pay attention,与多分支结构一起使用。

Channel & Spatial Attention

通道与空间注意力结合了通道注意力和空间注意力的优点。它自适应地选择重要对象和区域,The residual attention network 开创了channel&spatial attention 领域,强调了信息特征在空间和通道维度上的重要性。它采用自下而上的结构,由几个卷积组成,生成一个3D(高度、宽度、通道)attention map。然而,它有很高的计算成本和有限的应用领域。

为了利用全局空间信息,之后的工作引入了global average pooling 增强了特征识别,同时解耦通道注意力和空间注意力提升了计算效率。其它工作将self-attention应用于channel&spatial 注意力探索两两之间的交互。还有工作使用空间注意力机制扩大感受野。

Spatial & Temporal Attention

时空注意力结合了空间和时间注意力的优点能够自适应选择重点区域和关键帧。一些工作分计算时间注意力和空间注意力,也有一些联合生成时空attention maps。

future Direction
  1. 注意力机制的充分必要条件。一开始说的attention注意力公式是一个必要条件而不是一个充分条件,例如 GooleNet 可以用上述公式表示,但它不属于attention机制。为所有attention机制找到一个充分必要条件是困难的,但是仍然值得探索,可以进一步推进对于注意力机制的理解。

  2. 通用注意力block
    截至目前,对于特定任务需要设计一种特定的注意力机制,这需要付出相当大的努力去探索潜在的注意力方法。例如,channel attention对于图像分类来说是一个好的选择,然而spatial attention更适合于密集预测任务例如语义分割和目标检测。通道注意力聚焦于what to pay attention ,spatial attention 考虑where to pay attention ,基于以上这些观测,作者鼓励人们思考是否存在一种通用attention block 可以利用所有attention机制。例如,软选择机制(分支注意)可以根据所承担的特定任务在通道注意、空间注意和时间注意之间进行选择。

  3. 特征化和可解释性。注意力机制是受人类视觉系统启发,是朝着可解释性计算机视觉系统目标的重要一步。通常,基于注意力的模型通过绘制attentnion map来理解。然而,这只能给人一种直观的感觉,而不是精确的理解。然而,安全性或安全性很重要的应用,如医疗诊断和自动驾驶系统,通常有更严格的要求。在这些领域,需要更好地描述方法的工作方式,包括故障模式。开发具有特征性和可解释性的注意力模型可以使它们更广泛地适用。

  4. sparse activation。作者通过VIT模型可视化一些attention map获得了一直的结论 ,attention机制可以产生稀疏激活。这个现象给了我们灵感:稀疏激活可以在深度神经网络取得更优异得性能。值得注意的是,稀疏激活与人类的认知是相似的,这些激励着我们去探索哪种结构可以模仿人类视觉系统。

  5. 基于attention的预训练模型。大规模基于attention的预训练模型已经在NLP和CV领域取得成功,由于他们可以适应各种输入的能力,基于attention的模型可以处理unseen objects ,很自然的迁移预训练权重到各种任务。我们认为结合预训练和attention 模型可以有进一步提高:训练方法、模型结构、预训练任务和数据规模都值得探索。
    在这里插入图片描述

  6. 优化。SGD和Adam很适合优化CNN网络,对于视觉transformer,AdamW表现更好。CNN和transformer明显是不同的两种模型,不同的优化方法可能有不同的效果,探索新的attention-based优化方法是值得的。

  7. 部署。CNN有简单、统一的结构是的它们容易部署在各种不同的硬件设备上,然而,基于复杂多变的attention的模型很难优化、部署在边缘设备上。但是attention模型表现要比CNN更好,因此这也是值得探索的一个方面。

6.华为:A Survey on Vision Transformer(2022年年2月)

该篇综述从应用场景角度对transformer模型进行review,介绍了各种有关backbone的transformer模型,high/mid-level vision (分类、识别等中高层任务),low-level vision (提取特征等低层任务),and video tasks,同时简单介绍了有效的transformer方法。

按照应用场景将transformer分类:
在这里插入图片描述

transformer分类表格

在这里插入图片描述

重大突破模型
Vision transformer

基于transformer模型的应用,包括图像分类、high/mid-level vision,low-level vision and video processing.简单总结self-attention机制与模型压缩在高效transformer中的应用。
在这里插入图片描述

基于卷积和transformer的backbone的变形

除了CNN,transformer也可以作为图像分类的backbone。Wu等人将ResNet作为一个baseline,并使用视觉transformer来代替卷积的最后阶段。具体来说,他们应用卷积层来提取低级特征,然后将其输入视觉transformer。对于vision transformer,他们使用tokenizer(标记器)将像素分组为少量视觉标记,每个标记代表图像中的一个语义概念。这些视觉标记直接用于图像分类,transformer用于模拟标记之间的关系。如图4所示,这些作品可以分 为pure transformer,以及将CNN和transformer相结合。我们在表2和图6中总结了这些模型的结果,以展示backbone的发展。除了监督学习,视觉transformer还探索了自监督学习。

pure transformer

VIT 是第一个纯transformer结构直接将image patches 作为序列用于图像分类任务。它尽可能遵循了transformer的原始结构。
在这里插入图片描述
Variants of VIT:TNT、Twins、Swin、DeepViT、KVT等等

transformer with Convolution

即使transformer在各个领域取得不错的成绩与当前现有的CNN仍然有gap,一个主要原因是缺乏提取局部信息的能力,除了以上增强局部性的VIT变形,将transformer与CNN结合是将局部性引入transformer的直接方法。
有大量工作尝试使用卷积增强一个传统的block或self-attention层。例如,CPVT提出了一种条件位置编码(CPE)方案,该方案以输入标记的局部邻域为条件,并适用于任意输入大小,以利用卷积进行精细特征编码。CvT、CeiT、LocalViT和CMT分析了直接从NLP借用transformer架构并将CNN与transformer结合在一起时可能存在的缺点。具体而言,每个transformer block中的前馈网络(FFN)与卷积层相结合,CNN促进相邻token之间的相关性LeViT回顾了CNN大量文献中的原理,并将其应用于transformer,提出了一种用于快速推理图像分类的混合神经网络。BoTNet在ResNet的最后三个瓶颈块中,用global self-attention取代了空间卷积,并以最小的延迟开销在实例分割和目标检测任务上显著改进了baseline。

除此之外,一些研究人员表明基于transformer结构的模型更难获得优秀得拟合数据的能力,换句话说,他们对于优化器的选择、超参数以及训练时序比较敏感。Visformer通过两种不同的训练设置揭示了transformer与CNN之间的gap,第一种是CNN的标准配置,例如训练时序比较短而且数据增强仅仅包含随机裁剪和水平翻转。另一种配置:训练时序更长、数据增强也更强。

Self-supervised Representation Learning

图像生成式预训练方法已经存在很长时间,一些工作结合自监督重新研究了这类方法,扩展了基于生成的自监督学习方法在trnasformer中的应用。
例如:IGPT、GPT2
IGPT与ViT是两个将transformer应用于视觉任务的开创性工作。IGPT与VIT类模型之间的不同之处在于以下方面:

  1. iGPT的输入是通过对像素进行聚类得到的一系列color palettes(调色板),而ViT则将图像均匀地划分为多个局部patch;
  2. iGPT的体系结构是一个encoder-decoder frame,而ViT只有transformer encoder;
  3. iGPT采用自回归自监督损失进行训练,ViT采用有监督的图像分类任务进行训练。
Contrastive Learning Based Approach.

对抗学习目前在计算机视觉领域是最流行的自监督学习方法,已经被应用在视觉transformer和无监督预训练方法中。
有研究人员调查了几种训练自监督ViT的基本组件,发现不稳定性是导致准确度(accuracy)降低的主要原因,这些结果实际上是部分失败,当训练可以更稳定的时候他们可以被提高。
MoCo V3

High/Mid-level Vision
通用目标检测

传统目标检测器都是基于CNN,由于transformer的优异表现,一些目标检测方法尝试使用self-attention机制提升现代检测器的指定模块的性能,例如特征融合模块和预测头。基于transformer的目标检测方法可以分为两类:基于transformer的集合预测方法、以transformer为backbone的方法。相比CNN,基于transformer的方法展示出了强大的性能,无论准确度(accuracy),还是运行速度。
在这里插入图片描述
在这里插入图片描述

基于COCO2017的CNN-based 与transformer-base model 比较
Low-level Vision

极少的工作将transformer应用到low-level 视觉领域,例如图像超分辨率和图像生成。这些任务通常输出图像作为结果,比起high-level vision task (分类、分割、检测等输出labels或者boxes为结果)更具有挑战性。
在这里插入图片描述
一个简单有效的将transformer应用到图像生成任务的例子是直接把CNN结构改为transformer结构,如上图一样。由于很难生成像素级的高分辨率图像,因此通过在不同阶段逐渐提高特征映射分辨率来使用内存友好的生成器。相应地,多尺度判别器被设计来处理不同阶段的不同大小的输入。各种训练方法被引入,包括grid self-attention、数据增强、相对位置编码和修改normalization以稳定训练并提高其性能。在各种基准数据集上的实验证明了基于transformer的GAN模型在图像生成任务中的有效性和潜力。
ViTGAN,该方法在生成器和判别器中引入了几种技术,以稳定训练过程和收敛性。在self-attention模块中引入欧几里德距离来增强transformer 判别器的Lipschitz性。提出了self-moduled layernorm和implicit neural representation来增强生成器的训练。因此,ViTGAN是第一个证明基于transformer的GAN可以实现与基于CNN的最先进GAN相当性能的作品。

Image Processing

一些工作避免使用单个像素作为transformer模型的输入而采用patch(一些像素的集合)作为输入。

在这里插入图片描述
不同于分类和检测,图像生成处理的输出是图像,上图描述了low-level vision 的transformer,在图像处理任务中,图像首先被编码为token序列或patches,transformer encoder 使用该序列作为输入,允许transformer decoder成功生成所需图像。在图像生成任务中,基于GAN的模型直接学习一个解码器以生成patch,通过线性投影输出图像,而基于transformer的模型训练一个自动编码器学习图像的codebook,并使用自回归transformer 模型预测enoded tokens。未来研究的一个有意义的方向是为不同的图像处理任务设计合适的体系结构。

Efficient Transformer

虽然transformer已经在各个任务领域取得成功,但对于内存和计算资源的需求也阻碍了他们在资源有限的设备上(手机、嵌入式设备)使用,这一部分回顾研究人员通过压缩和加速transformer模型实现高效使用的工作。包括网络剪枝、低秩分解、知识蒸馏、网络量化和紧凑的架构设计。表4列出了压缩基于transformer模型的一些代表性工作。

在这里插入图片描述

Pruning and Decomposition(剪枝和分解)

在基于transformer的预训练模型(例如,BERT)中,并行执行多个attention operation,以独立地建模不同tokens之间的关系。然而,特定任务并不要求使用所有的heads。例如,Michel等人提出了经验证据,证明在测试时可以去除大部分attention heads,而不会显著影响性能。不同层所需的number of head不同——有些层甚至可能只需要一个head。考虑到attention head上的冗余,有的研究中定义了重要性分数,以估计每个注意头对最终输出的影响,并且可以移除不重要的注意头,以便高效部署。Dalvi等人从两个角度分析了预训练transformer模型中的冗余:一般冗余和特定任务冗余。根据lottery ticket hypothesis(彩票假设理论)[185],Prasanna等人[184]分析了BERT中的lotteries(彩票),并表明基于transformer的模型中也存在良好的子网络,同时减少FFN层和attention head,可以实现高压缩率。对于视觉transformer,其将图像分割为多个patch,有研究提出减少patch的计算以加速推理,考虑到冗余patch对有效输出特征的贡献,可以自动发现冗余patch。Zhu等人[187]将网络压缩方法[188]扩展到visoin transformer,以减少FFN和注意力模块中线性投影的尺寸。

除了transformer 模型的宽度,深度(如 layer数量)的减少也可以加速推理过程。与transformer模型中不同attention heads可以并行计算的概念不同,不同层必须按照顺序计算,因为下一层的输入依赖于上一层的输出。Fan等人提出了一种layer-wisely(逐层)丢弃策略来正则化模型训练,在测试阶段整个层将被移除。

除了直接放弃transformer模型部分module的剪枝方法,基于低秩假设,通过矩阵分解使用多个小矩阵近似大矩阵也是一个方向。

knowledge Distillation(知识蒸馏)

知识蒸馏是为了从大的teacher-network 迁移知识来训练student-network,相较于teacher-network,student-network 通常有更轻量化、更紧凑的结构,也更容易部署在资源有限的设备上。神经网络的输出和中间特征也可用来将有效信息从教师传递给学生。Mukherjee等人[204]以transformer模型为重点,利用大量未标记的数据,以预训练的BERT为teacher指导小模型的训练。Wang等人[205]训练学生网络模仿预训练的教师模型中self-attention的输出。value之间的点积是一种新的指导student network的形式。

Quantization (量化)

量化旨在减少表征网络权重或中间特征所需的number of bits。一般的神经网络的量化方法已经被讨论过很久,并可以达到与原始网络相当的性能。最近,人们对如何特别量化transformer模型越来越感兴趣。例如,Shridhar等人建议将输入嵌入到binary高维向量,然后使用binary输入表示来训练binary神经网络。Cheong等人用低位(如4位)表示transformer模型中的权重。赵等人实证研究了各种量化方法,并表明kmeans量化具有巨大的发展潜力。针对机器翻译任务,Prato等人提出了一种完全量化的transformer,正如论文所说,它是前8个-bit模型不会对翻译质量造成任何损失。此外,Liu等人探索了一种训练后量化方案,以减少视觉transformer的内存存储和计算成本。

compact Architecture Design(紧凑结构设计)

除了将预定义的transformer模型压缩成更小的模型外,一些工作还试图直接设计紧凑的模型。Jiang等人提出了一个新的模块——基于Span的动态卷积,将全连接层和卷积层结合起来,从而简化了self-attention的计算。有论文中提出了有趣的“汉堡包”层,使用矩阵分解替换原始的self-attention层。与标准的self-attention操作相比,矩阵分解可以更有效地计算,同时清楚地反映不同tokens之间的依赖关系。高效trnasformer结构的设计也可以通过神经结构搜索(NAS)实现自动化,它将自动搜索如何组合不同的组件。例如,Su等人[82]搜索了线性投影的patch大小和尺寸,以及注意模块的头部数量,以获得一个高效的视觉transformer。

上述方法在试图识别transformer模型中的冗余时采用了不同的方法(见下图)。剪枝和矩阵分解方法通常需要具有冗余的预训练模型。具体来说,剪枝侧重于减少transformer模型中组件(例如,层、头)的数量,而分解表示具有多个小矩阵的原始矩阵。紧凑型模型也可以直接手动(需要足够的专业知识)或自动化(例如通过NAS)设计。为了在资源有限的设备上高效部署,可以通过量化方法进一步用low-bits来表示所获得的紧凑模型。
在这里插入图片描述

furture Direction
  1. transformer对于大规模数据集得依赖,缺乏inductive bias,因此稳健性是一个等待解决的问题。
  2. 理论分析缺乏。
  3. 多模态探索,统一的多模态模型。
  4. CNN在小数据集上表现好,可以捕获局部信息等inductive bias,transformer由于缺乏inductive bias通过大规模数据集训练来弥补这种缺陷,未来使用哪一种结构是一个问题?也就是哪一个更好还有待探索。
  5. 是否可以通过简单的计算范式和大规模数据集来训练transformer得到一个令人满意的结果?
  • 26
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值