自注意力的计算复杂性在将 Transformer 模型应用于视觉任务时一直是一个持续的挑战。与此相反,线性注意力通过通过精心设计的映射函数来近似 Softmax 操作,提供了一个计算复杂性为线性的更高效的选择。然而,目前的线性注意力方法要么遭受明显的性能下降,要么引入了来自映射函数的额外计算开销。在这篇论文中,我们提出了一个新颖的“聚焦线性注意”模块,旨在实现高效率和表达能力。 具体来说,我们首先从焦点能力和特征多样性两个角度分析了线性注意力性能下降的因素。为了克服这些局限性,我们引入了一个简单而有效的映射函数和一个高效的等级恢复模块,以增强自注意力的表达能力,同时保持低计算复杂性。大量的实验表明,我们的线性注意力模块适用于多种先进的视觉 Transformers,并在多个基准测试中均实现了持续改进的性能。
论文标题:
FLatten Transformer: Vision Transformer using Focused Linear Attention
https://arxiv.org/pdf/2308.00442.pdf
Introduction 近年来,Transformer 和自注意力在计算机视觉领域得到了广泛的发展,尤其是随着 ViT 的出现,自注意力技术在各种视觉任务中都显示出了巨大的潜力。然而,将 Transformer 应用于视觉模型是一个复杂的任务。与轻量级卷积神经网络相比,自注意力具有 的计算复杂性,这在全局感受野中会导致高计算成本。 尽管某些方法试图通过限制全局感受野的大小来减轻这一挑战,但这些方法可能会忽视其他区域的信息特征或牺牲建模长距离依赖关系的能力。 线性注意力被视为一个简单有效的替代方案,但相对于 Softmax 注意力,现有的线性注意力方法仍存在性能下降,并可能引入额外的计算开销。 在这篇论文中,我们针对现有线性注意力方法的局限性提出了一个新颖的“聚焦线性注意力”模块,该模块旨在实现高效率和高表达能力。我们经验性地验证了我们模块在图像分类、语义分割和目标检测任务上的有效性,并使用五种先进的 ViT 模型。结果表明,我们的方法相对于所有基线和其他线性注意力方法都有一致的改进。
▲ 图1. Softmax注意力和线性注意力的差异
上图中, 分别表示查询、键和值矩阵。Softmax 注意力需要计算查询和键之间的成对相似性,其复杂度为 。线性注意力通过适当的近似来解耦 Softmax 操作,并首先计算 来改变计算顺序,这导致了复杂度为 。 考虑到在ViT设计中,通道维度 通常小于 token 数量 ,例如在 DeiT 中, ,而在 Swin Transformer 中, 。线性注意力模块在实际上节省了整体的计算成本,同时也能享受到更大的感受野和更高的吞吐量的好处。 Preliminaries
2.1 Vision Transformer and Self-Attention 首先,我们回顾了在 ViT 中自注意力的通用形式。给定输入的 N 个 tokens ,在每个头内,自注意力可以写为: 其中 是投影矩阵 ,而 表示相似性函数。ViT 主要采用 Softmax 注意力,其中相似性被测量为 。在这种情况下,通过计算所有查询键对之间的相似性来获得注意力映射,这导致了 的计算复杂度。 由于二次计算复杂性,简单地使用具有全局感受野的自注意力变得难以处理,这通常导致过多的计算成本。先前的工作要么通过设计稀疏的全局注意模式来解决这一问题,要么应用较小的注意窗口。尽管这些方法有效,但它们容易受到精心设计的注意模式的影响,或不可避免地牺牲了建模长距离依赖关系的能力。 2.2 Linear Attention 相对地,线性注意力被认为是一个有效的替代方案,它将计算复杂度从 限制到 。具体来说,引入了新的核作为原始相似性函数的近似,即: 这样,我们可以根据矩阵乘法的结合性质将计算顺序从 更改为 : 然而,当前的线性注意力方法也面临着模型复杂度与表现力之间的两难选择。一方面,简单的近似,例如使用 ReLU 激活,过于宽松,导致了明显的性能下降。另一方面,新的核函数或矩阵分解方法可能导致额外的计算开销。总的来说,线性注意力和 Softmax 注意力之间在实际性能上仍然存在差距。
2.3 Focused Linear Attention 尽管线性注意力具有线性的计算复杂度,但是多个之前的研究已经证明,简单地将 Softmax 注意力替换为线性注意力通常会导致严重的性能下降。在这一部分,我们首先从两个角度:聚焦能力和特征多样性,对线性注意力的性能进行详细分析。接着,我们介绍我们的“Focused Linear Attention”(专注线性注意力)方法,这一方法充分地解决了这些问题,并实现了高效率和高表达能力。
实际上, Softmax 注意力提供了一个非线性的重新加权机制,这使得它能够很容易地集中于重要的特征 。如图 3 所示,Softmax 注意力的注意力分布图在某些区域特别明显,例如前景物体。相比之下,线性注意力的分布相对平滑,使其输出更接近所有特征的平均值,并未能集中在更具信息性的区域。 为了解决这一问题,我们提出了一个简单但有效的解决方案,通过调整每个查询和关键特征的方向, 使相似的 Query-Key 对更接近,而将不相似的 Query-Key 对推远 。具体地说,我们提出了一个名为“Focused Function”(专注函数)的简单映射函数 : 其中
而 表示 的逐元素的 次幂。我们首先遵循先前的线性注意力模块使用 ReLU 函数,以确保输入的非负性和分母的有效性。直接观察可知,映射后特征的范数被保留,即, ,这表明只是调整了特征的方向。基于这一观察,我们展示了在某些假设下,所提出的映射函数 实际上会影响注意力的分布。 假设 和 分别具有单一的最大值 和 。对于一对特征 当 时: 因此,通过合适的 , 我们的专注函数 实际上在相似的 Query-Key 对(公式(7))和不相似的 Query-Key 对(公式(8))之间实现了更为明显的区别, 恢复了原始 Softmax 函数的锐利注意力分布。 为了更好地理解,我们在图 4 中给出一个例子来展示 的效果。可以看到 实际上将每个向量“拉”到其最近的轴,而 决定了这种“拉”的程度。这样做有助于根据它们最近的轴将特征划分为几个组,提高每个组内的相似性,同时减少组间的相似性。这些可视化结果与我们上面的分析一致。 Softmax 注意力 和线性注意力 是两种不同的计算注意力权重的方法。其中,Softmax 注意力有一个优势,它可以非常明确地关注于某些特定的特征(例如图像中的某个目标)。但是,直接用线性注意力替代 Softmax 注意力通常会导致性能下降,原因之一是线性注意力的输出往往更加平滑,不能很好地突出那些重要的特征。 这里提到的焦点能力是指注意力模型的能力,能够集中关注于输入特征中的某些重要部分,而不是给所有特征平均的关注度。例如,如果我们要处理一张有猫的图片,那么 Softmax 注意力可能会更多地关注猫的位置,而线性注意力可能会更均匀地关注整张图片。 为了解决线性注意力的这个问题,作者提出了一个叫做 专注函数 的新方法。这个函数的目的是调整每个 Query 和 Key 特征的向,使相似的 Query-Key 对更接近,而不相似的 Query-Key 对更远。 给定两个特征 和 ,如果它们的最大值在同一位置(即 ),那么经过这个函数处理后,它们的内积(也可以理解为相似度)会比原来更大。如果它们的最大值不在同一位置,则它们的内积会比原来更小。 通过这样的调整,我们可以使相似的 Query-Key 对之间的相似度变得更高,而不相似的 Query-Key 对之间的相似度变得更低。这样做的结果是,我们得到了一个更加“尖锐”的注意力分布, 类似于 Softmax 注意力的分布。例如, 使用这个函数处理后,图像中的猫可能会得到更高的关注度,而背景部分可能会得到更低的关注度。
证明过程: 定义与公式回顾:
*函数 定义为: 。 *函数 的定义中包含了一种对 的元素逐位求 次幂的操作, 这里用 表示。 为什么用 ReLU 函数?
*使用 ReLU 函数是为了确保输入是非负的,这样在后续的证明中,我们可以只考虑 。
证明的初步部分:
*首先明确,由于输入 和 是非负的,ReLU函数对它们没有改变,所以 且 。 *接下来,通过 的定义,我们可以明确 以及 。 内积的转换:
*我们计算 ,这其实就是 的内积。 *之后,这个内积又可以被表示为它们的模长与两向量单位化后的内积的乘积,即 。
单位向量的内积: *定义 为 的单位向量,而 为 的单位向量。 *计算 ,得到的是两个单位向量的内积,这里提供了一个明确的表达式来表示这个内积。 *为了方便处理,我们将 和 分别除以它们的最大值,得到 和 。这样的好处是 和 的值都在 [0,1] 之间。 首先,我们的假设是向量 和 中各自只有一个最大值。对于 来说是 ,对于 来说是 ,且这两个值都为 1。
推论: 当 趋近于无穷大时,任何小于 1 的数的 次方都会趋近于 0,而 1 的 次方始终为 1。这意味着,对于 和 中的所有其他值,它们的 次方都会趋近于 0。 接下来我们分两种情况进行考虑:
1.当 时: 在这种情况下,我们只需考虑向量 和 中的最大值,即 和 。由于它们都是 1,所以它们的 次方也是 1。因此,我们得出: 。 这意味着,当 趋近于无穷大时, 的值会超过 。 2.当 时: 在这种情况下,由于 和 是两个不同的数(一个是 1,另一个小于 1),我们可以推断出: 。 这是因为小于 1 的数的 次方会趋近于 0。 这意味着,当 趋近于无穷大时, 的值会小于 。
结论: 通过上面的证明,我们可以得知对于合适的 值,函数 能够有效地区分相似和不相似的 Query-Key 对。实际上, 根据最接近的轴将特征分成了几个组,提高了每个组内的相似性,同时降低了组与组之间的相似性,从而恢复了原始 Softmax 函数的尖锐注意力分布。 2.5 Feature diversity
本文继续讨论了线性注意力(Linear Attention)在 ViT(如 DeiT-Tiny 和 Swin Transformer)中的局限性,并提出了一个解决方案。
1. 注意力矩阵的秩(Rank): 在传统的 Transformer 模型中,注意力矩阵的秩通常是满秩的(full rank),这意味着该矩阵具有很高的特征多样性。这有助于更精确地聚合来自值(Values)的特 2. 线性注意力的秩问题: 在使用线性注意力的情况下,注意力矩阵的秩受到限制。 这里, 是每个头部(Head)的通道维度。在常见的视觉 Transformer 设计中, 通常小于 。 3. 特征均质化: 由于上述的秩限制,注意力矩阵中的很多行变得相似,导致聚合的特征也趋于相似。
为了解决这一问题,作者提出了在注意力矩阵中加入 Depthwise Convolution, DWC 模块的解决方案。
1. 局部特征关注:在使用 DWC 模块时,每个查询(query)将只关注空间上几个相邻的特征而非所有特征 。这种局部性确保即使两个不同的查询在线性注意力下具有相同的权重,它们也能从不同的局部特征中获取不同的输出。 2. 矩阵秩的角度:从矩阵秩的角度来看,加入 DWC 模块可以有效地提高注意力矩阵的上界秩。
其中, 是对应于深度卷积功能的稀疏矩阵,而 是等价的完整注意力矩阵。由于 有潜力成为一个满秩矩阵,实际上我们提高了等价注意力矩阵的秩的上界。
3.1 Focused linear attention module Focused Linear Attention 模块 基于上述分析,文章提出了一个名为 Focused Linear Attention 的新型线性注意力模块。该模块在保持表达能力的同时减少了计算复杂性。 Focused Linear Attention 模块的数学表达为: 其中, 是一个特定的映射函数,用于模仿原始 Softmax 注意力的尖锐分布。
1.低计算复杂性:通过改变自注意力(Self-Attention)的计算顺序,复杂性从 降低到 。这里, 和 分别代表 Tokens 数量和每个头的通道维度。在常见的 ViT 设计中, 通常小于 ,因此总体计算实际上是减少的。 2.高表达能力:与Softmax 注意力相比,由于使用了专注函数 和深度卷积(DWC),这个新的线性注意力模块在焦点能力和特征多样性方面表现得更好。 此模块还具有适应更大 receptive field 和不同模型架构的潜力。由于其线性复杂性,我们可以在保持相同的计算量的情况下扩大接收区域,同时享受建模长范围依赖关系的优势。此外,这个模块可以作为一个插件模块,很容易地应用到各种 ViT 架构上。 实验在包括 DeiT,PVT,PVT-v2,Swin Transformer 和 CSwin Transformer 在内的五个先进模型上实现。考虑到扩大 receptive field 的优点,Focused Linear Attention 模块主要应用在ViT的早期阶段,其他部分保持不变。 总体而言,Focused Linear Attention 模块是一个旨在解决线性注意力在计算复杂性和表达能力之间的权衡的有效方案。它不仅减少了计算成本,而且通过添加深度卷积和一个新的映射函数来提高了模型的表达能力。
#投 稿 通 道 #
让你的文字被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读 ,也可以是学术热点剖析 、科研心得 或竞赛经验讲解 等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品 ,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬 ,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱: hr@paperweekly.site
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02 )快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」 也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」 订阅我们的专栏吧