热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【CS224n】(lecture9)Transformer的变体

学习总结Transformer的进一步改进可能在于以下几个方向:0.1理论分析Transformer的架构已被证明能够支持具有足够参数的大规模训练数据集。许多工
学习总结

Transformer 的进一步改进可能在于以下几个方向:

0.1 理论分析

Transformer 的架构已被证明能够支持具有足够参数的大规模训练数据集。许多工作表明,Transformer 具有比 CNN 和 RNN 更大的容量,因此具有处理大量训练数据的能力。当 Transformer 在足够的数据上进行训练时,它通常比 CNN 或 RNN 具有更好的性能。一个直观的解释是 Transformer 对数据结构的先验假设很少,因此比 CNN 和 RNN 更灵活。然而,理论原因尚不清楚,我们需要对 Transformer 能力进行一些 理论分析。

0.2 全局交互机制

Transformer 的一个主要优点是使用注意力机制来模拟输入数据中节点之间的全局依赖关系。然而,许多研究表明,对于大多数节点来说,完全注意是不必要的。在某种程度上,无法区分地计算所有节点的注 意力是低效的。因此,在有效地建模全局交互方面仍有很大的改进空间。

  • 一方面,self-attention 模块可以看成是一个具有动态连接权重的全连接神经网络,通过动态路由聚合非局部信息。因此,其他动态路由机 制是值得探索的替代方法。
  • 另一方面,全局交互也可以由其他类型的神经网络建模,例如记忆增强模型。

0.3 多模态统一框架

在许多应用场景中,集成多模态数据对于提高任务性能是有用且必要的。此外,通用人工智能还需要 能够捕捉不同模态的语义关系。由于 Transformer 在文本、图像、视频和音频方面取得了巨大的成功,我们有机会构建一个统一的框架,更好地捕捉多模态数据之间的内在联系。然而,模内和跨模态注意力的设 计仍有待改进。

文章目录

  • 学习总结
    • 0.1 理论分析
    • 0.2 全局交互机制
    • 0.3 多模态统一框架
  • 五、transformer的变体(谷歌版)
    • 5.1 transformer的分类
      • (1)固定模式(FP)
        • 固定模式(FP)
          • (1)块状模式
          • (2)跨步模式
          • (3)压缩模式
        • 组合模式(CP)
      • (2)学习模式(LP)
      • (3)内存(M)
      • (4)低秩/内核(LR/KR)
        • 1)低秩
        • 2)内核
      • (5)循环(RC)
    • 5.2 transformer的变体
      • (1)Memory Compressed Transformer
      • (2)Image Transformer
      • (3)Set Transformer
      • (4)Spare Transformer
      • (5)AXial Transformer
      • (6)Longformer
      • (7)Extended Transformer Construction
      • (8)BigBird
      • (9)Routing Transformer
      • (10)Reformer
      • (11)SinkhornTransformer
      • (12)Linformer
      • (13)Linear Transformer
      • (14)Performer
      • (15)Synthesizer
      • (16)Transformer-XL
        • 1)循环机制
        • 2)相对位置编码
      • (17)Compressive Transformer
    • 5.3 小结
  • 六、transformer的变体(复旦版)
    • 6.1 四种类型
    • 6.2 模型级修改类型
      • (1)位置表示
      • (2)注意力
        • 1)两个挑战
        • 2)可改进的几个方向
      • (3)层归一化
      • (4)FNN
    • 6.3 架构级修改类型
      • (1)轻量化
      • (2)加强跨区块连接
      • (3)自适应计算时间
      • (4)分而治之
      • (5)替代架构
      • (6)transformer预训练
        • 1)仅编码器
        • 2)仅解码器
        • 3)编码器和解码器
    • 6.4 transformer的应用
      • (1)自然语言处理
      • (2)计算机视觉
      • (3)音频应用
      • (4)多模式应用
    • 6.5 小结
      • (1)理论分析
      • (2)全局交互机制
      • (3)多模态统一框架
  • 七、导图大总结


五、transformer的变体(谷歌版)

transformer在NLP和CV领域都大放光彩,Yi Tay et al.,Efficient Transformers: A Survey,2020文中列出了一些高效的transformer模型。
在这里插入图片描述

表注:分类缩写:FP = 固定模式或固定模式的组合,M = 内存,LP = 学习模式,LR = 低秩,KR = 内核和 RC = 循环。 n 是指序列长度,b 是局部窗口(或块)大小。我们使用 ng 来表示全局内存长度,使用 nc 来表示卷积压缩的序列长度。

在这里插入图片描述

高效transformer架构的分类

5.1 transformer的分类

大多数这些 模型的主要目标,除了那些基于段的递归,是近似二次成本注意力矩阵。每种方法都将一些稀疏性概念应用于原本密集的注意力机制。

(1)固定模式(FP)

FP = 固定模式或固定模式的组合。

固定模式(FP)

对自注意力的最早修改只是通过将视野限制为固定的、预定义的模式(例如局部窗口和固定步幅的块 模式)来简化注意力矩阵。

(1)块状模式

在实践中&#xff0c;这种技术最简单的例子是 blockwise&#xff08;或分块&#xff09;范式&#xff0c;它通过将输入序列分 块为固定块来考虑局部感受野的块。 执行此操作的模型示例包括 Blockwise&#xff08;Qiu 等人&#xff0c;2019 年&#xff09;和/或 Local Attention&#xff08;Parmar 等人&#xff0c;2018 年&#xff09;。 将输入序列分块成块将复杂度从 N2N^2N2 降低到 B2B^2B2&#xff08;块大小&#xff09;&#xff0c; B <<

(2)跨步模式

另一种方法是考虑跨步注意力模式&#xff0c;即仅以固定时间间隔参与。稀疏 Transformer (Child et al., 2019) 和/或 长格式&#xff08;Longformer&#xff09; (Beltagy et al., 2020) 等模型采用跨步或“扩张”窗口。

(3)压缩模式

这里的另一条攻关线是使用一些池化运算符将序列长度下采样为固定模式的一种形式。 例如&#xff0c;压缩 Attention (Liu et al., 2018) 使用跨步卷积来有效地减少序列长度。

组合模式(CP)

组合方法的关键思想是通过组合两个或更多不同的访问模式来提高覆盖范围。 例如&#xff0c;稀疏 Transformer (Child et al., 2019) 通过将其一半的头部分配给模式来结合跨步和局部注意力。类似地&#xff0c;轴向 Transformer&#xff08;Ho 等人&#xff0c;2019 年&#xff09;在给定高维张量作为输入的情况下应用一系列自注意力计算&#xff0c;每个计算 都沿着输入张量的单个轴。本质上&#xff0c;模式的组合以与固定模式相同的方式降低了内存复杂性。 然而&#xff0c;不 同之处在于多个模式的聚合和组合提高了自注意力机制的整体覆盖率。

这种组合方法通常也被称为分解(factorization)方法&#xff0c;例如在 (Child et al., 2019) 中。 我们决定将此类模型称为组合方法&#xff0c;因为 (1) 它更适合这些模型实际执行的操作&#xff0c;以及 (2) 避免与矩阵分解或低秩方法混淆。


&#xff08;2&#xff09;学习模式&#xff08;LP&#xff09;

固定的、预先确定的模式的扩展是学习模式。不出所料&#xff0c;使用学习模式的模型旨在以数据驱动的方式 学习访问模式。学习模式的一个关键特征是确定符记相关性的概念&#xff0c;然后将符记分配给桶或集群。

注意&#xff0c;重整器&#xff08;Reformer&#xff09;&#xff08;Kitaev 等人&#xff0c;2020 年&#xff09;引入了一种基于哈希的相似性度量&#xff0c;以有效地将 标记聚类为块。与此类似&#xff0c;路由 Transformer&#xff08;Roy 等人&#xff0c;2020 年&#xff09;在符记上采用在线 k 均值聚类。同时&#xff0c; Sinkhorn 排序网络&#xff08;Tay 等人&#xff0c;2020b&#xff09;通过学习对输入序列的块进行排序来暴露注意力权重的稀疏性。 在所有这些模型中&#xff0c;相似度函数与网络的其余部分一起进行端到端的训练。

学习模式的关键思想仍然是利用固定模式&#xff08;分块模式&#xff09;。然而&#xff0c;这类方法学习对输入标记进行排序/聚类——在保持固定模式方法的效率 优势的同时&#xff0c;实现更优化的序列全局视图

&#xff08;3&#xff09;内存&#xff08;M&#xff09;

一次访问多个符记。一种常见的形式是 - 另一个突出的方法是利用可以访问整个序列的全局内存的侧 内存模块。全局标记充当一种内存形式&#xff0c;可以学习从输入序列标记中收集信息。这首先在 Set Transformers (Lee et al., 2019) 中作为诱导点方法引入。 这些参数通常被解释为“内存”&#xff0c;并用作未来处理的一种临时上 下文。这可以被认为是参数注意力的一种形式&#xff08;Sukhbaatar 等人&#xff0c;2019&#xff09;。 ETC&#xff08;Ainslie 等人&#xff0c;2020 年&#xff09; 和 长格式&#xff08;Beltagy 等人&#xff0c;2020 年&#xff09;中也使用了全局内存。 在有限数量的内存&#xff08;或诱导点&#xff09;下&#xff0c;我们能够对输入序列进行初步的池化操作以压缩输入序列——这是设计高效自注意力模块时可以随意使用的巧妙 技巧。

&#xff08;4&#xff09;低秩/内核&#xff08;LR/KR&#xff09;


1&#xff09;低秩

一种新兴技术是通过利用自注意力矩阵的低秩近似来提高效率。关键思想是在 N×N 矩阵中假设低秩结 构。Linformer(Wang et al., 2020b) 是这种技术的经典示例&#xff0c;因为它将键和值的长度维度投影到低维表示 (N→k)。很容易看出&#xff0c;低秩方法改善了自注意力的内存复杂度问题&#xff0c;因为 N×N 矩阵现在被分解为 N×k。

2&#xff09;内核

最近流行的另一种提高 Transformer 效率的方法是通过内核化来查看注意力机制。内核的使用 &#xff08;Katharopoulos 等人&#xff0c;2020 年&#xff1b;Choromanski 等人&#xff0c;2020 年&#xff09;可以对自注意力机制进行巧妙的数学重写&#xff0c; 以避免显式计算 N×N 矩阵。由于内核是注意力矩阵的一种近似形式&#xff0c;因此它们也可以被视为一种低秩方法。

&#xff08;5&#xff09;循环&#xff08;RC&#xff09;

逐块方法的自然扩展是通过循环连接这些块。Transformer-XL (Dai et al., 2019) 提出了一种连接多个段 和块的段级循环机制。 在某种意义上&#xff0c;这些模型可以被视为固定模式模型。 但是&#xff0c;由于它与其他块/本地 方法的偏差&#xff0c;我们决定创建自己的类别。

我们注意到这些桶&#xff08;buckets&#xff09;是不同高效 Transformer 模型的广泛表征。在现实中&#xff0c;这些群体之间没 有明显的界限&#xff0c;模型可能由多个不同的技术创新组成。 例如&#xff0c;路由 Transformer (Roy et al., 2020)中的 k-means 聚类也可以解释为一种全局内存方法&#xff0c;因为人们可以将质心视为参数化内存。 然而&#xff0c;在重整器 中&#xff0c;这用于学习注意力权重的稀疏模式。此外&#xff0c;池化(Liu et al., 2018) 也可以解释为内存模型的一种形式。

5.2 transformer的变体


&#xff08;1&#xff09;Memory Compressed Transformer

内存压缩()Transformer (Liu et al., 2018) 是修改 Transformer 以处理更长序列的早期尝试之一。内存压 缩 Transformer 中引入的修改有两个方面&#xff1a;一是局部注意力跨度&#xff0c;在 Transformers 中处理长序列的一个直 接解决方案是将注意力范围限制在局部邻域&#xff1b;二是内存压缩注意力&#xff0c;内存压缩注意力的想法是使用跨步卷积减少键和查询的数量&#xff0c;同时查询保持不变。

&#xff08;2&#xff09;Image Transformer

图像 Transformer (Parmar et al., 2018) 受到卷积神经网络的启发&#xff0c;将自注意力的感受野限制在局部邻 域。这有助于模型扩展以处理更大的批量&#xff0c;同时保持似然损失易于处理。除了效率之外&#xff0c;适应局部性的概 念可能是处理图像的理想归纳偏差。图像 Transformer 提供编码器-解码器架构&#xff0c;其中编码器为输入中的每 个像素通道生成上下文表示&#xff0c;解码器在每个时间步为每个像素自动回归生成一个通道。

&#xff08;3&#xff09;Set Transformer

设置&#xff08;Set&#xff09;Transformer (Lee et al., 2019) 使 Transformer 模型适用于 set-input 问题——也就是说&#xff0c; 输入是一组特征而输出是该组特征的某个函数的问题&#xff08;因此对输入特征的排列或排序是不变的&#xff09;。设置 Transformer 利用注意力来捕获输入集合元素之间的交互。此外&#xff0c;它应用了从稀疏高斯过程文献中引入点 的思想&#xff0c;以将注意力的复杂性从输入集的大小从二次方降低到线性。

&#xff08;4&#xff09;Spare Transformer

Sparse Transformer (Child et al., 2019) 提出了一个简单的初步尝试&#xff0c;以降低标准自注意力机制的二次复 杂度。 关键思想是通过仅计算稀疏数量的 qi , kj 对的注意力&#xff0c;将密集注意力矩阵减少到稀疏版本。稀疏Transformer 采用由步幅和局部邻域定义的固定注意力模式。计算被分解&#xff0c;其中局部和步幅模式在头部之 间分开。

&#xff08;5&#xff09;AXial Transformer

轴向(Axial)Transformer&#xff08;Ho 等人&#xff0c;2019 年&#xff09;在一个简单而有效的设置中使用因式分解&#xff0c;用于自注意 力机制来处理组织为多维张量的大型输入。轴向 Transformer 不是将注意力应用于输入的扁平版本&#xff0c;而是 简单地应用多个注意力&#xff0c;每个注意力都沿着输入张量的一个轴。事实上&#xff0c;每个注意力都沿着特定轴混合信 息&#xff0c;同时保持其他轴上的信息独立。由于任何单个轴的长度通常远小于元素总数&#xff0c;因此轴向 Transformer 显 著节省了计算和内存。

&#xff08;6&#xff09;Longformer

长格式(Longformer) (Beltagy et al., 2020) 是稀疏 Transformer 的变体。 与稀疏 Transformer 相比&#xff0c;它 的主要区别是“扩张滑动窗口”&#xff0c;它可以在不牺牲稀疏性的情况下实现更好的远程覆盖。这是通过在注意力 模式中存在差距来增加感受野来实现的 随着模型的深入&#xff0c;长格式也会逐渐增加感受野&#xff0c;将较低级别用于 建模局部模式&#xff0c;将较高级别用于建模全局模式&#xff0c;即全局注意力&#xff1a;对于分类任务&#xff0c;长格式采用可以访问所有 输入序列的全局符记&#xff08;例如&#xff0c;CLS 符记&#xff09;。

&#xff08;7&#xff09;Extended Transformer Construction

Extended Transformer Construction&#xff08;ETC&#xff09;模型&#xff08;Ainslie 等人&#xff0c;2020 年&#xff09;是稀疏 Transformer 系列 的另一个变体。它引入了一种新的全局-局部注意力机制。 这种新的注意力机制有四个组成部分&#xff0c;即&#xff08;1&#xff09; 全局到全局&#xff08;g2g&#xff09;、全局到局部&#xff08;g2l&#xff09;、局部到全局&#xff08;l2g&#xff09;和局部到局部&#xff08;l2l&#xff09;。

&#xff08;8&#xff09;BigBird

BigBird 模型&#xff08;Zaheer 等人&#xff0c;2020 年&#xff09;是另一种用于对较长序列建模的 Transformer&#xff0c;主要建立在 ETC 之上。关键思想&#xff1a;用一系列其他交互替换所有对交互&#xff0c;例如本地窗口、查看所有内容和随机交互。BigBird 模型由几个关键组件组成&#xff0c;即&#xff08;1&#xff09;全局符记&#xff0c;&#xff08;2&#xff09;随机注意力&#xff08;查询随机键&#xff09;和&#xff08;3&#xff09;固定模式&#xff08;局部 滑动窗口&#xff09;。

  • 全局注意力&#xff1a;从根本上讲&#xff0c;使用全局内存的想法可以追溯到 长格式/ETC 和 设置 Transformer 模型。
  • 局部注意力&#xff1a;首先在早期基于局部的注意力模型&#xff08;压缩注意力&#xff0c;图像/稀疏 Transformer&#xff09;中提出。
  • 随机注意力&#xff1a;最后&#xff0c;每个查询处理 r 个随机键。这个模式是固定的&#xff0c;见图&#xff1a;

在这里插入图片描述

&#xff08;9&#xff09;Routing Transformer

路由(Routing) Transformer (Roy et al., 2020) 是一种基于内容的稀疏注意力机制。它提出了一种基于聚类的注意力机制&#xff0c;以数据驱动的方式学习注意力稀疏性。

&#xff08;10&#xff09;Reformer

重整器(Reformer) (Kitaev et al., 2020) 是另一种基于局部敏感哈希 (LSH) 的高效注意力模型。重整器还 引入了可逆的 Transformer 层&#xff0c;这有助于进一步减少其内存占用。

&#xff08;11&#xff09;SinkhornTransformer

Sparse Sinkhorn Transformer&#xff08;Tay 等人&#xff0c;2020b&#xff09;属于学习模式家族。该模型是一个分组/分块模 型&#xff0c;它通过以分块方式重新排序输入键和值&#xff0c;然后应用基于块的局部注意力来学习稀疏模式。

&#xff08;12&#xff09;Linformer

Linformer (Wang et al., 2020b) 是一种基于低秩自注意力思想的高效 Transformer。

关键思想&#xff1a;将序列长度维度映射到值、键的较低维度空间。

长度尺寸的低秩预测&#xff1a;Linformer 使用额外的投影层将 N × d 维键和值投影到 k × d 维。长度维 度上的投影导致在单个变换中混合序列信息&#xff08;维度&#xff09;。因此&#xff0c;在计算注意力分数时保持因果掩蔽和/或防止 过去和未来信息的混合是非常重要的。

&#xff08;13&#xff09;Linear Transformer

线性(Linear)Transformer&#xff08;Katharopoulos 等人&#xff0c;2020 年&#xff09;通过使用基于内核的自注意力公式和矩 阵乘积的关联特性&#xff0c;将自注意力的复杂性从二次型提高到线性。 此外&#xff0c;它通过 casual masking&#xff08;用于自 回归解码&#xff09;将注意力减少到线性时间、恒定内存循环神经网络 (RNN)。 该模型已被证明可以将推理速度 提高多达三个数量级&#xff0c;而不会对预测性能造成太大损失。

&#xff08;14&#xff09;Performer

Performer (Choromanski et al., 2020) 模型的特点是其广义注意力机制和随机内核的使用。

广义注意力&#xff1a;广义注意力将 Qi , Kj 与内核函数 K 纠缠在一起。

通过正交随机特征&#xff08;FAVOR&#xff09;的快速注意力&#xff1a;上述计算的复杂度仍然是二次的。 因此&#xff0c;Performer 利用近似技巧来避免存储和计算 N × N 注意力矩阵。 它利用正交随机特征 (ORF) 来做到这一点。

&#xff08;15&#xff09;Synthesizer

合成器(Synthesizer)模型&#xff08;Tay 等人&#xff0c;2020a&#xff09;试图研究和调查自我注意机制中条件反射的真正重要 性。 在 (Tay et al., 2020a) 中&#xff0c;作者研究了一个合成的自注意力模块&#xff0c;其中注意力权重是近似的&#xff0c;而不 是通过成对的点积计算。合成器仅与高效的 Transformer 隐含相关。 然而&#xff0c;分解变体可以被认为是一个 低秩的高效 Transformer 模型。

密集合成器&#xff1a;在密集合成器中&#xff0c;使用两层非线性前馈网络将每个标记 xi 投影到长度为 N 的向量。
随机合成器&#xff1a;Synthesizer 模型的另一个变体对 A 使用随机矩阵。
因式分解&#xff1a;密集和随机合成器还带有考虑注意力矩阵低秩结构的分解变体。

&#xff08;16&#xff09;Transformer-XL

Transformer-XL 模型&#xff08;Dai 等人&#xff0c;2019 年&#xff09;相比原始 Transformer&#xff0c;有以下两个变化&#xff1a;

1&#xff09;循环机制

在原始 Transformer 中&#xff0c;每个序列的计算相互独立&#xff0c;因此也导致了其只能够学习到同个序列内的语义 联系。而在 Transformer-XL 中&#xff0c;依赖于基于段的循环。基于段的循环可以被认为是其他技术的正交方法&#xff0c; 因为它没有明确的稀疏密集的自注意力矩阵。相反&#xff0c;它使用循环机制连接相邻的块。每个序列计算后的隐 状态会参与到下一个序列的计算当中&#xff0c;使得模型能够学习到跨序列的、更长的语义联系。

2&#xff09;相对位置编码

由于注意力机制忽视了位置信息&#xff0c;因此在 Transformer 中必须加入位置编码。
原始 Transformer 采用了正弦/余弦函数来编码绝对位置信息。
在 Transformer-XL 中&#xff0c;若采用和 Transformer 一样的绝对位置编码&#xff0c;那么不同序列间同一个位置会得到同样的编码。因此这种方法在 Transformer-XL 中行不通&#xff0c;为了解决这个问题 Transformer-XL 采用了相 对位置编码。Transformer-XL 引入了新颖的相对位置编码。 在这个方案中&#xff0c;绝对位置编码没有添加到内容 嵌入中。相反&#xff0c;它们只在计算注意力权重时才被考虑&#xff0c;在那里它们可以用相对位置编码代替。由于相对位 置编码与模型的效率没有直接关系&#xff0c;更多可以通过 (Dai et al., 2019)了解更多细节。

&#xff08;17&#xff09;Compressive Transformer

压缩(Compressive) Transformer&#xff08;Rae 等人&#xff0c;2020 年&#xff09;是 Transformer-XL 模型的自然延伸。 压缩 Transformer 背后的关键思想是保持对过去段激活的细粒度内存。 这与 Transformer-XL 不同&#xff0c;后者在跨段 移动时会丢弃过去的激活。

内存&#xff1a;压缩 Transformer 的特点是双内存系统——一个主内存和一个二级压缩内存。
压缩&#xff1a;这些内存使用各种压缩函数进行压缩&#xff0c;例如 (1) 平均/最大池化 (2) 一维卷积&#xff0c;(3) 扩张卷积&#xff0c; 以及 (4) 最常用的&#xff08;例如&#xff0c;按注意力的使用排序&#xff09;。
内存重建&#xff1a;为了更好地保留长序列上的内存&#xff0c;压缩 Transformer 实现了一种自动编码损失&#xff0c;学习从其 压缩版本重建原始内存&#xff0c;第二个注意力重建是一种有损重建&#xff0c;它是重建注意力而不是内存本身的无损重建。

5.3 小结

综述了有关高效 Transformer 模型的文献&#xff0c;特别是与自注意力模块的二次复杂度相关的文献。 提供了此类新模型中采用的核心技术的分类法和高级抽象。描述了现有模型&#xff0c;并提供了几个高效 Transformer 模型的全面演练。讨论了这些模型的评估前景以及这些模型的设计趋势。最后&#xff0c;讨论了其他 可以提高 Transformer 模型效率的并行正交工作。

六、transformer的变体&#xff08;复旦版&#xff09;

2021 年 6 月 15 日&#xff0c;复旦大学邱锡鹏团队发表了 Transformer 综述。
transformer最初是为了解决机器翻译的seq2seq任务提出的&#xff0c;现在PTM预训练模型使得各任务上实现SOTA&#xff0c;各种X-former从不同角度改进了vanilla Transformer。

  • 模型效率。应用 Transformer 的一个关键挑战是其处理长序列的效率低下&#xff0c;这主要是由于 self-attention 模块的计算和内存复杂性。改进方法包括轻量级注意力&#xff08;例如稀疏注意力变体&#xff09;和分而治之 的方法&#xff08;例如循环和分层机制&#xff09;。
  • 模型泛化。由于 Transformer 是一种灵活的架构&#xff0c;并且对输入数据的结构偏差几乎没有假设&#xff0c;因此 很难在小规模数据上进行训练。改进方法包括引入结构偏差或正则化&#xff0c;对大规模未标记数据进行预训练等。
  • 模型适配。这一系列工作旨在使 Transformer 适应特定的下游任务和应用程序。
    虽然我们可以根据上述观点来组织 X-former&#xff0c;但许多现有的 X-former 可能会解决一个或几个问题。 例如&#xff0c;稀疏注意力变体不仅降低了计算复杂度&#xff0c;而且在输入数据上引入了结构先验以缓解小数据集上的过 度拟合问题。因此&#xff0c;需要根据对 vanillaTransformer 的改进方式提出新的分类法。

6.1 四种类型

本文提出了的 Transformer 四种类型&#xff1a;模型级修改类型、架构级修改类型、预训练方法和应用程序。 Transformer 变体的分类见图&#xff1a;
在这里插入图片描述
Transformer 分类法和一些代表性模型见图&#xff1a;
在这里插入图片描述

6.2 模型级修改类型

按照原始模型的结构&#xff0c;逐层修改&#xff1a;

&#xff08;1&#xff09;位置表示

定义&#xff1a;如果 f(πx)&#61;πf(x)f(\pi x)&#61;\pi f(x)f(πx)&#61;πf(x), 则称 f(x)f(x)f(x) 为置换等变函数。

很容易验证卷积和循环网络不是置换等变的。然而&#xff0c;Transformer 中的自注意力模块和位置前馈层都 是置换等变的&#xff0c;这在建模问题时可能是一个问题&#xff0c;而不是需要输入结构的集合输入问题。例如&#xff0c;在对文本 序列建模时&#xff0c;单词的顺序很重要&#xff0c;因此在 Transformer 架构中正确编码单词的位置至关重要。因此&#xff0c;需要 额外的机制将位置信息注入到 Transformer 中。一种常见的设计是首先使用来向量表示位置信息&#xff0c;然后将 向量作为附加输入注入模型。

修改的变体表现在以下几个方向&#xff1a;绝对位置编码、相对位置编码、其它编码、没有显式编码的位置表 示、Transformer 解码器的位置表示。

&#xff08;2&#xff09;注意力


1&#xff09;两个挑战

Self-attention 在 Transformer 中扮演着重要的角色&#xff0c;但在实际应用中存在两个挑战。

(1)复杂性。自注意力的复杂度是O(T2d)O\left(T^{2} d\right)O(T2d)。因此&#xff0c;注意力模块在处理长序列时成为瓶颈。
(2)结构先验。Self-attention 不假设对输入有任何结构性偏见。甚至顺序信息也需要从训练数据中学习。 因此&#xff0c;Transformer&#xff08;无预训练&#xff09;通常容易在中小型数据上过拟合。

2&#xff09;可改进的几个方向

注意力机制的改进可以分为几个方向&#xff1a;
(1)稀疏注意力。这一系列工作将稀疏偏差引入了注意力机制&#xff0c;从而降低了复杂性。
(2)线性化注意力。这一系列工作将注意力矩阵与内核特征解开。然后以相反的顺序计算注意力。
(3)原型和内存压缩。此类方法减少了查询或键值记忆对的数量&#xff0c;以减小注意力矩阵的大小。
(4)低阶自注意力。这一系列工作捕获了自注意力的低级属性。
(5)注意与先验。该研究领域探索用先前的注意力分布来补充或替代标准注意力。
(6)改进的多头机制。该系列研究探索了不同的替代多头机制。

&#xff08;3&#xff09;层归一化

层归一化(LN)以及残差连接被认为是一种稳定深度网络训练的机制&#xff08;例如&#xff0c;减轻不适定梯度和模型退 化&#xff09;。有一些研究致力于分析和改进 LN 模块。

层归一化的改进可以分为几个方向&#xff1a;层归一化的部署位置、层归一化的替代品、无归一化 Transformer。

&#xff08;4&#xff09;FNN

尽管它很简单&#xff0c;但位置前馈网络(FFN)层对于 Transformer 实现良好性能很重要。Dong 等人[32]观察到&#xff0c; 简单地堆叠自注意力模块会导致等级崩溃问题&#xff0c;导致符记(token)均匀性归纳偏差&#xff0c;并且前馈层是缓解此问 题的重要构建块之一。各种工作都探索了对 FFN 模块的修改。

FNN 的改进可以分为几个方向&#xff1a;FFN 中的激活函数、调整 FFN 以获得更大容量、删除 FFN 层。

6.3 架构级修改类型

在模型层面之外修改 vanillaTransformer 的 X-former。

&#xff08;1&#xff09;轻量化

除了在模块级别为减轻计算开销所做的努力外&#xff0c;还有一些尝试通过更高级别的修改来使 Transformer 变得轻量级。

Lite Transformer 建议将 Transformer 中的每个注意力模块替换为两个分支结构&#xff0c;其中一个 分支使用 注意力来捕获远程上下文&#xff0c;而另一个分支使用深度卷积和线性层来捕获局部依赖关系。 该架构在模型大小和计算方面都是轻量级的&#xff0c;因此更适合移动设备。

Funnel Transformer 利用类似漏斗的编码器架构&#xff0c;其中隐藏序列的长度使用沿序列维度的池化逐渐减 少&#xff0c;然后使用上采样恢复。 与普通的 Transformer 编码器相比&#xff0c;该架构有效地减少了 FLOP 和内存。 自然&#xff0c;人们可以使用这种架构使用相同的计算资源构建更深或更广的模型。

DeLighT 提出了替换 Transformer 的三个子模块&#xff1a;
&#xff08;1&#xff09;“扩展和减少”DeLightT 转换模块&#xff0c;以低计算 要求学习更广泛的表示&#xff1b;
&#xff08;2&#xff09; 单头自注意力学习成对交互&#xff1b;
&#xff08;3&#xff09; 一个轻量级的“reduce-and-expand”FFN&#xff08;与 vanilla Transformer 相反&#xff0c;它首先扩展隐藏表示的维度&#xff0c;然后将它们缩减回&#xff09;。他们还提出了一种逐块缩放 策略&#xff0c;允许输入附近的更浅和更窄的块以及输出附近更宽和更深的块。诱导网络比普通 Transformer 深得 多&#xff0c;但参数和操作更少。

&#xff08;2&#xff09;加强跨区块连接

在 vanilla Transformer 中&#xff0c;每个块都将前一个块的输出作为输入并输出一系列隐藏表示。人们可能对 创建更多路径感兴趣&#xff0c;输入信号可以沿着这些路径通过网络。Realformer 和 Predictive Attention Transformer&#xff0c;它们重用前一个块的注意力分布来引导当前块的注意力。 这可以看作是在相邻的 Transformer 块之间创建了一条前向路径。

在深度 Transformer 编码器-解码器模型中&#xff0c;解码器中的交叉注意模块仅利用编码器的最终输出&#xff0c;因此 误差信号必须沿着编码器的深度遍历。这使得 Transformer 更容易受到优化问题的影响&#xff08;例如&#xff0c;梯度消失&#xff09;。 Transparent Attention 使用每个交叉注意力模块中所有编码器层&#xff08;包括嵌入层&#xff09;的编码器表示的加权和。

与 vanilla Transformer 相关的另一个问题是每个位置只能处理来自较低层的历史表示。 Feedback Transformer 建议向解码器添加反馈机制&#xff0c;其中每个位置都关注来自所有层的历史表示的加权总和。

&#xff08;3&#xff09;自适应计算时间

VanillaTransformer 使用固定&#xff08;学习过的&#xff09;计算程序来处理每个输入。一个有趣且有前途的修改是使 计算时间以输入为条件&#xff0c;即将自适应计算时间(ACT)引入 Transformer 模型。此类修改可能会带来以下优势&#xff1a;

  • 困难示例的特征细化。对于难以处理的数据&#xff0c;浅层表示可能不足以完成手头的任务。应用更多计算 来获得更深入、更精细的表示会更理想。
  • 简单示例的时间效率。在处理简单的示例时&#xff0c;浅层表示可能足以完成任务。在这种情况下&#xff0c;如果网 络可以学习使用减少的计算时间来提取特征&#xff0c;那将是有益的。

&#xff08;4&#xff09;分而治之

序列长度上的自注意力的二次复杂度会显着限制一些下游任务的性能。例如&#xff0c;语言建模通常需要远程 上下文。一种处理长序列的有效方法是使用分治策略&#xff0c;即将输入序列分解为可以由 Transformer 或 Transformer 模块有效处理的更精细的段。我们确定了两类有代表性的方法&#xff0c;循环 Transformer 和分层 Transformer。这些技术可以理解为 Transformer 模型的包装器&#xff0c;其中 Transformer 作为一个基本组件&#xff0c;可重 用以处理不同的输入段&#xff0c;见图&#xff1a;
在这里插入图片描述

&#xff08;5&#xff09;替代架构

尽管 Transformer 架构取得了成功&#xff0c;但人们可能会质疑当前的 Transformer 架构是否是最佳的。因此&#xff0c; 有几项研究探索了 Transformer 的替代架构。

SandwichTransformer 探索重组注意力模块和 FFN 模块&#xff0c;使得注意力模块主要位于较低层&#xff0c;FFN 模块 主要位于较高层。诱导模型在不增加参数、内存或训练时间的情况下&#xff0c;提高了多语言建模基准的困惑度。

掩码注意力网络(MAN)在每个 Transformer 块中将动态掩码注意力模块添加到自注意力模块。所提出 的动态掩码注意力被证明可以有效地对文本数据中的局部性进行建模&#xff0c;并且诱导模型在机器翻译和抽象摘 要中始终优于基线模型。

使用神经架构搜索(NAS)来搜索替代的 Transformer 架构。EvolvedTransformer(ET)采用基于进化架构 搜索&#xff0c;搜索到的模型在多种语言任务上表现出持续改进。DARTSformer 采用基于可微架构搜索&#xff08;DARTS&#xff09;&#xff0c; 结合多分裂可逆网络和反向传播重建算法以提高内存效率&#xff0c;并且搜索成本显着降低。

&#xff08;6&#xff09;transformer预训练

作为与卷积网络和循环网络的一个关键区别&#xff0c;它们固有地结合了局部性的归纳偏差&#xff0c;Transformer 不 对数据的结构做出任何假设。一方面&#xff0c;这有效地使 Transformer 成为一种非常通用的架构&#xff0c;具有捕获不同 范围依赖关系的潜力。另一方面&#xff0c;这使得 Transformer 在数据有限时容易过拟合。缓解此问题的一种方法 是在模型中引入归纳偏置。预训练中使用 Transformer 的典型方法分类如下&#xff1a;

1&#xff09;仅编码器

一系列工作使用 Transformer 编码器作为其主干架构。

  • BERT 是典型的 PTM&#xff0c;通常用于自然语言理解 任务。它利用掩码语言建模(MLM)和下一句预测(NSP)作为自监督训练目标。
  • RoBERTa 进一步调整了 BERT 的训练并删除了 NSP 目标&#xff0c;因为它被发现会损害下游任务的性能。

2&#xff09;仅解码器

一些研究侧重于对语言建模的 Transformer 解码器进行预训练。例如&#xff0c;生成式预训练 Transformer(GPT) 系列&#xff08;即 GPT、GPT-2 和 GPT-3&#xff09;专门用于缩放预训练的 Transformer 解码器&#xff0c;并且最近表明大规模 PTM 可以通过将任务和示例作为构造提示输入模型来实现令人印象深刻的少拍性能。

3&#xff09;编码器和解码器

也有采用 Transformer 编码器-解码器作为整体架构的 PTM。BART 将 BERT 的去噪目标扩展到编码 器-解码器架构。使用编码器-解码器架构的好处是&#xff0c;诱导模型具备执行自然语言理解和生成的能力。T5 采 用类似的架构&#xff0c;是最早在下游任务中使用特定于任务的文本前缀的研究之一。

6.4 transformer的应用


&#xff08;1&#xff09;自然语言处理

Transformer 及其变体在 NLP 任务中得到了广泛的应用&#xff0c;例如机器翻译&#xff0c;语言建模和命名实体识别。

&#xff08;2&#xff09;计算机视觉

Transformer 还适用于各种视觉任务&#xff0c;例如图像分类&#xff0c;物体检测&#xff0c;图像生成和视频处理。

&#xff08;3&#xff09;音频应用

Transformer 还可以扩展到与音频相关的应用&#xff0c;例如语音识别&#xff0c;语音合成&#xff0c;语音增强和音乐生成。

&#xff08;4&#xff09;多模式应用

由于其灵活的架构&#xff0c;Transformer 还被应用于各种多模式场景&#xff0c;例如视觉问答、视觉常识推理、字幕生 成、语音到文本翻译和文本到图像生成。

6.5 小结

在本次综述中&#xff0c;我们对 X-former 进行了全面概述&#xff0c;并提出了一个新的分类法。现有的大部分工作都 是从效率、泛化和应用等不同角度对 Transformer 进行了改进。改进包括结合结构先验、设计轻量级架构、 预训练等。尽管 X-former 已经证明了它们在各种任务中的能力&#xff0c;但挑战仍然存在。除了当前的关注点&#xff08;例 如效率和泛化&#xff09;&#xff0c;Transformer 的进一步改进可能在于以下几个方向&#xff1a;

&#xff08;1&#xff09;理论分析

Transformer 的架构已被证明能够支持具有足够参数的大规模训练数据集。许多工作表明&#xff0c;Transformer 具有比 CNN 和 RNN 更大的容量&#xff0c;因此具有处理大量训练数据的能力。当 Transformer 在足够的数据上进 行训练时&#xff0c;它通常比 CNN 或 RNN 具有更好的性能。一个直观的解释是 Transformer 对数据结构的先验假 设很少&#xff0c;因此比 CNN 和 RNN 更灵活。然而&#xff0c;理论原因尚不清楚&#xff0c;我们需要对 Transformer 能力进行一些 理论分析。

&#xff08;2&#xff09;全局交互机制

Transformer 的一个主要优点是使用注意力机制来模拟输入数据中节点之间的全局依赖关系。然而&#xff0c;许 多研究表明&#xff0c;对于大多数节点来说&#xff0c;完全注意是不必要的。在某种程度上&#xff0c;无法区分地计算所有节点的注 意力是低效的。因此&#xff0c;在有效地建模全局交互方面仍有很大的改进空间。一方面&#xff0c;self-attention 模块可以 看成是一个具有动态连接权重的全连接神经网络&#xff0c;通过动态路由聚合非局部信息。因此&#xff0c;其他动态路由机 制是值得探索的替代方法。另一方面&#xff0c;全局交互也可以由其他类型的神经网络建模&#xff0c;例如记忆增强模型。

&#xff08;3&#xff09;多模态统一框架

在许多应用场景中&#xff0c;集成多模态数据对于提高任务性能是有用且必要的。此外&#xff0c;通用人工智能还需要 能够捕捉不同模态的语义关系。由于 Transformer 在文本、图像、视频和音频方面取得了巨大的成功&#xff0c;我 们有机会构建一个统一的框架&#xff0c;更好地捕捉多模态数据之间的内在联系。然而&#xff0c;模内和跨模态注意力的设 计仍有待改进。

七、导图大总结

在这里插入图片描述


推荐阅读
  • 由中科院自动化所、中科院大学及南昌大学联合研究提出了一种新颖的双路径生成对抗网络(TP-GAN),该技术能通过单一侧面照片生成逼真的正面人脸图像,显著提升了不同姿态下的人脸识别效果。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 机器学习核心概念与技术
    本文系统梳理了机器学习的关键知识点,涵盖模型评估、正则化、线性模型、支持向量机、决策树及集成学习等内容,并深入探讨了各算法的原理和应用场景。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 探讨ChatGPT在法律和版权方面的潜在风险及影响,分析其作为内容创造工具的合法性和合规性。 ... [详细]
  • 深入理解Java字符串池机制
    本文详细解析了Java中的字符串池(String Pool)机制,探讨其工作原理、实现方式及其对性能的影响。通过具体的代码示例和分析,帮助读者更好地理解和应用这一重要特性。 ... [详细]
  • 本文详细介绍了在不同操作系统中查找和设置网卡的方法,涵盖了Windows系统的具体步骤,并提供了关于网卡位置、无线网络设置及常见问题的解答。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 本文提供了 CIW Dreamweaver MX2004 认证考试的详细试题解析,涵盖不同难度级别的选择题、多项选择题和判断题。通过这些题目,考生可以更好地理解考试内容并为实际考试做好准备。 ... [详细]
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • 本文探讨了C++编程中理解代码执行期间复杂度的挑战,特别是编译器在程序运行时生成额外指令以确保对象构造、内存管理、类型转换及临时对象创建的安全性。 ... [详细]
  • 圆形进度指示器忽略宽度/高度属性并且不缩放 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
author-avatar
手机用户2502895961
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有