FLatten Transformer_ Vision Transformer using Focused Linear Attention

paper: https://arxiv.org/abs/2308.00442
code: https://github.com/LeapLabTHU/FLatten-Transformer

摘要

当将transformer模型应用于视觉任务时,自注意的二次计算复杂度( n 2 n^2 n2)一直是一个持续存在的挑战。另一方面,线性注意通过精心设计的映射函数来近似Softmax操作,提供了一个更有效的替代方法。然而,当前的线性注意方法要么遭受显著的性能下降,要么从映射函数中引入额外的计算开销。在本文中,作者提出了一种新的聚焦线性注意模块,以实现高效率和表达性。具体来说,首先从聚焦能力和特征多样性两个角度分析了导致线性注意性能下降的因素。为了克服这些限制,引入了一个简单而有效的映射函数和一个高效的秩恢复模块,在保持低计算复杂度的同时提高自我注意的表达性。大量的实验表明,线性注意模块适用于各种高级视觉transorfomer,并在多个基准上取得了持续改进的性能。

介绍

将transorfomer应用于视觉模型是一项艰巨的任务。在将自注意力机制应用于全局感受野,与轻量级卷积神经网络不同,相对于序列长度 n n n的二次计算复杂度 O ( n 2 ) O(n^2) On2导致了较高的计算成本。之前的工作通过限制全局感受野为一个更小的区域感受野,比如稀疏的全局注意模式、更小的注意力窗口。尽管这些方法很有效,但由于它们的注意力模式,它们要么倾向于忽略其他区域的信息特征,要么不可避免地牺牲了建模长期依赖关系的能力。
另一方面,线性注意被认为是一种简单而有效的替代方法,通过降低一般的复杂性来解决计算困境。早期的研究利用了一种局部敏感的哈希方案,该方案将计算复杂度从 O ( n 2 ) O(n^2) O(n2)压缩为 O ( n l o g ( n ) ) O(nlog(n)) O(nlog(n))。然而,它在复杂度项之前引入了一个很大的常数,这使得它在常见情况下仍然负担不起。最近的研究注意到,在自注意操作中使用Softmax函数实际上迫使所有查询和键之间进行两两计算,从而导致主要的 O ( n 2 ) O(n^2) O(n2)复杂度。为了解决这个问题,一些方法开始采用简单的激活函数或者定制映射函数去近似原始的Softmax函数。如图1所示,通过将计算顺序从(查询键)值改为查询值(键值),可以将整体计算复杂度降低到 O ( n ) O (n) O(n)。然而,与Softmax注意相比,目前的线性注意方法仍然存在严重的性能下降,可能涉及映射函数的额外计算开销,从而限制了其实际应用。
image.png
本文针对当前线性注意方法的局限性,提出了一种新的Focused Linear Attention,该模块既具有高效率和表达性。具体来说,对导致线性关注性能下降的因素进行了双管齐下的分析,并提出了相应的解决方案。首先,前一种线性注意模块的注意权重分布相对平滑,缺乏处理信息最丰富的特征的聚焦能力。作为一种补救措施,本文提出了一个简单的映射函数来调整查询和键的特征方向,使注意力权重更容易区分。其次,注意矩阵的秩的减少限制了线性注意特征的多样性。为了解决这一问题,提出了一个对原始注意矩阵进行深度卷积(DWC)的秩恢复模块,这有助于恢复矩阵的秩,并保持不同位置的输出特征多样化。利用这些改进的技术,模块展示了与Softmax的同类产品相当或更优越的性能,同时享受了低计算复杂度的好处。

相关工作

Vision Transformer

transformer和自我注意机制首次引入自然语言处理领域,在计算机视觉领域获得了广泛的研究兴趣。然而,自注意集的高计算复杂度限制了其直接应用于视觉任务。之前的视觉transformer考虑通过将相邻像素合并为单个令牌来降低输入分辨率。接下来的研究也采用了类似的见解,也扩展到下游任务。另一项研究逐渐降低了特征的分辨率,并采用了精心设计的注意模式来限制token数量。例如,PVT 使用一个稀疏的注意模式,并从全局的角度选择注意令牌。AT 遵循该路径,设计了一个可变形的注意模块,以实现数据依赖的注意模式。Swin变压器通过将输入划分为孤立的窗口来局部选择注意令牌。NAT在卷积中遵循以查询为中心的模式,并为所有查询设计独立的注意标记。一些研究也注意到,卷积运算对变压器模型很有价值,可能有助于提高整体效率。CMT将变压器块与高效的卷积算子相结合,像深度可分离卷积(depthwise convolution,并实现了更好的效率和性能的权衡。ACmix 共享了卷积和自注意的计算开销,并以有限的成本集成了这两个模块。并提出了有效训练变压器的方法。
然而,这些方法仍然依赖于Softmax算子,其继承了较高的计算复杂度,不可避免地给模型架构设计和实际应用带来了不便。

Linear Attention

除了上述方法外,另一项研究利用线性注意解决高计算复杂度。具体地说,线性注意用单独的核函数代替了自注意中的Softmax函数。在这种情况下,线性注意不需要首先计算成对相似度 Q K T QK^T QKT,正如图1所示,这种情况softmax函数将不可用,因此需要再设计一个映射函数。如何设计与softmax注意力机制一样有效的线性注意模块仍然是一个重要的问题。Performer近似于具有正交随机特征的Softmax操作。Efficient attention 将Softmax函数分别应用于Q和K,这自然保证了每一行 Q K T QK^T QKT的总和为1。Nystromformer和SOFT通过矩阵分解近似全自注意矩阵。Hydra attention用余弦相似度代替Softmax。EfficientVit利用深度可分离卷积来提高线性注意的局部特征提取能力。然而,目前的线性注意设计要么没有足够的表达能力来赶上sotmax注意,要么涉及来自复杂核函数的额外计算开销。在本研究中,作者从聚焦能力和特征多样性的角度分析了线性注意性能下降的原因。在此基础上,作者提出了一种新的线性注意模块,称为聚焦线性注意,它在计算复杂度较低的情况下比Softmax注意更好的性能(图2)。
image.png
具体来说:
自注意力机制公式:对于每一个token有 O i = ∑ j = 1 N S i m ( Q i , K j ) ∑ j = 1 N S i m ( Q i , K j ) V j O_i = \sum_{j=1}^N\frac{Sim(Q_i,K_j)}{\sum_{j=1}^N Sim(Q_i,K_j)}V_j Oi=j=1Nj=1NSim(Qi,Kj)Sim(Qi,Kj)Vj S i m Sim Sim表示相似度函数, S i m ( Q i , K j ) = e x p ( Q j K j T / d ) Sim(Q_i,K_j)=exp(Q_j{K_j}^T/\sqrt{d}) Sim(Qi,Kj)=exp(QjKjT/d )
线性注意力机制:精心设计的核作为原始相似度函数的近似值 S i m ( Q i , K j ) = ϕ ( Q i ) ϕ ( K j ) T Sim(Q_i,K_j)=\phi (Q_i)\phi(K_j)^T Sim(Qi,Kj)=ϕ(Qi)ϕ(Kj)T
那么自注意力机制公式就可以被重写为 O i = ∑ j = 1 N ϕ ( Q i ) ϕ ( K i ) T ∑ j = 1 N ϕ ( Q i ) ϕ ( K j ) T V j O_i = \sum_{j=1}^N\frac{\phi(Q_i)\phi(K_i)^T}{\sum_{j=1}^N\phi(Q_i)\phi(K_j)T}V_j Oi=j=1Nj=1Nϕ(Qi)ϕ(Kj)Tϕ(Qi)ϕ(Ki)TVj
这样就可以将 ( Q K T ) V (QK^T)V (QKT)V转化为 Q ( K T V ) Q(K^TV) Q(KTV),即 O i = ϕ ( Q i ) ( ∑ j = 1 N ϕ ( K j ) T V j ) ϕ ( Q i ) ( ∑ j = 1 N ϕ ( K I ) T ) O_i = \frac{\phi(Q_i)(\sum_{j=1}^N\phi(K_j)^TV_j)}{\phi(Q_i)(\sum_{j=1}^N\phi(K_I)^T)} Oi=ϕ(Qi)(j=1Nϕ(KI)T)ϕ(Qi)(j=1Nϕ(Kj)TVj)
注意 Q i Q_i Qi为query向量, K j K_j Kj为key向量, V j V_j Vj为value向量。

方法(Focused Linear Attention)

Focus ability

softmax注意力机制实际上提供了一种非线性重加权机制,使其很容易集中在重要的特征。如图3所示,来自Softmax注意的注意图在某些区域的分布特别明显,如前景物体。相比之下,线性注意的分布是相对的平滑,使其输出更接近所有特征的平均值,而不能关注信息更丰富的区域。
image.png
作为补救措施,作者提出了一个简单而有效的解决方案,通过调整每个查询和关键特征的方向,接近相似的查询键对,同时消除不同的查询键对。具体来说,作者提出了一个简单的映射函数 f p f_p fp,称为Focused函数:
S i m ( Q i , K j ) = ϕ p ( Q i ) ϕ p ( K j ) T Sim(Q_i,K_j)=\phi_p(Q_i)\phi_p(K_j)^T Sim(Qi,Kj)=ϕp(Qi)ϕp(Kj)T
where ϕ p ( x ) = f p ( R e L U ( x ) ) , f p ( x ) = ∣ ∣ x ∣ ∣ ∣ ∣ x ∗ ∗ p ∣ ∣ x ∗ ∗ p \phi_p(x)=f_p(ReLU(x)),f_p(x)=\frac{||x||}{||x^{**p}||}x^{**p} ϕp(x)=fp(ReLU(x)),fp(x)=∣∣x∗∗p∣∣∣∣x∣∣x∗∗p
其中 x ∗ ∗ p x^{**p} x∗∗p表示x按元素的p次方。作者证明了所提出的映射函数 f p f_p fp实际上影响了注意力的分布。

命题1: f p f_p fp调整特征方向
x = ( x 1 , . . . , x n ) , y = ( y 1 , . . . , y n ) ∈ R n , x i , y i ≥ 0 x=(x_1,...,x_n),y=(y_1,...,y_n) \in \mathbb{R}^n,x_i,y_i\ge 0 x=(x1,...,xn)y=(y1,...,yn)Rn,xi,yi0假设x和y分别有一个最大的值 x m x_m xm y n y_n yn
m = n m=n m=n时,有 ∃ p > 1 , s . t . ⟨ ϕ p ( x ) , ϕ p ( y ) ⟩ > ⟨ x , y ⟩ \exists p> 1, s.t. \left \langle \phi_p(x),\phi_p(y) \right \rangle > \left \langle x,y \right \rangle p>1,s.t.ϕp(x),ϕp(y)>x,y
m ≠ n m\ne n m=n时,有 ∃ p > 1 , s . t . ⟨ ϕ p ( x ) , ϕ p ( y ) ⟩ < ⟨ x , y ⟩ \exists p> 1, s.t. \left \langle \phi_p(x),\phi_p(y) \right \rangle < \left \langle x,y \right \rangle p>1,s.t.ϕp(x),ϕp(y)<x,y
⟨ x , y ⟩ \left \langle x,y \right \rangle xy表示內积 x y T xy^T xyT

这个命题可以这样理解, f p f_p fp使相似的query-key更明显的区别( m = n m=n m=n时內积相比原始值变大),不相似的query-key恢复了尖锐的注意力分布作为原来的Softmax函数( m ≠ n m\ne n m=n內积更小),从而实现focus ablity。
为了更好地理解,我们给出了一个例子来显示图4中 f p f_p fp的影响。可以看出, f p f_p fp实际上将每个向量“拉”到它最近的轴上,而p决定了这种“拉”的程度。通过这样做, f p f_p fp有助于根据特征最近的轴将特征划分为几个组,提高每个组内的相似性,同时减少组之间的相似性。可视化与我们上面的分析一致。
image.png

Feature diversity

除了focus ablity外,特征多样性也是限制线性注意表达能力的因素之一。其中一个可能的原因可能归功于注意力矩阵的秩,其中可以看到显著的差异。以 N = 14 × 14 N=14×14 N=14×14的DeiT-Tiny的transformer层为例,从图5 (a)可以看出,注意力矩阵具有完整的秩(196中的196),显示了从值聚合特征时的多样性。
image.png
然而,在线性注意的情况下,这一点很难实现。事实上,注意矩阵在线性注意中的秩受到每个头部的令牌数N和通道维数d的限制: r a n k ( ϕ ( Q ) ϕ ( K ) T ) ≤ m i n { r a n k ( ϕ ( Q ) ) , r a n k ( ϕ ( Q ) ) } ≤ m i n { N , d } rank(\phi(Q)\phi(K)^T) \le min\{rank(\phi(Q)),rank(\phi (Q))\} \le min\{N,d\} rank(ϕ(Q)ϕ(K)T)min{rank(ϕ(Q)),rank(ϕ(Q))}min{N,d}
因为d通常小于N,所以线性注意力机制的注意力矩阵小于等于d,而softmax注意力小于等于N(大概率是等于d和等于n)。在这种情况下,注意矩阵秩的上界被限制在一个较低的比率,这表明注意映射的许多行被严重均质化。由于自注意力的输出是同一组V的加权和,注意力权重的均匀化不可避免地导致聚合特征之间的相似性。
为了更好地说明,我们将DeiT-Tiny中的原始Softmax注意替换为线性注意,并显示了图5 (b).中的注意图的rank,可以观察到,rank大大下降(196中有54),注意矩阵的许多行是相似的。
作为一种补救方法,我们提出了一个简单而有效的解决方案来解决线性注意的限制。具体地说,在注意矩阵中添加了一个深度卷积(DWC,depthwise convolution)模块,输出可以表示为: O = ϕ ( Q ) ϕ ( K ) T V + D W C ( V ) O=\phi(Q)\phi(K)^TV+DWC(V) O=ϕ(Q)ϕ(K)TV+DWC(V)
为了更好地理解这个DWC模块的效果,我们可以把它看作是一种attention,即每个query只关注空间中的几个相邻特征,而不是所有特征V。这种局部性保证了即使两个查询对应的线性注意值相同,我们仍然可以从不同的局部特征中得到不同的输出,从而保持特征的多样性。DWC的影响也可以从矩阵秩的角度来解释:
O = ( ϕ ( Q ) ϕ ( K ) T + M D W C ) V = M e q V O=(\phi(Q)\phi(K)^T+M_{DWC})V=M_{eq}V O=(ϕ(Q)ϕ(K)T+MDWC)V=MeqV
M D W C M_{DWC} MDWC是深度卷积的稀疏矩阵, M e q M_{eq} Meq对应于注意力矩阵,因为 M D W C M_{DWC} MDWC是满秩,所以 M e q M_{eq} Meq大概率也满秩。
为了更好地说明,我们在DeiT-Tiny上进行了类似的修改。通过附加的DWC模块,注意图在线性注意中的秩可以恢复到全秩(196/196,如图5©所示),从而保持特征多样性作为原来的Softmax注意。

模块构成

我们的模块可以表述为: O = S i m ( Q , K ) V = ϕ p ( Q ) ϕ p ( K ) T V + D W C ( V ) O=Sim(Q,K)V=\phi_p(Q)\phi_p(K)^TV+DWC(V) O=Sim(Q,K)V=ϕp(Q)ϕp(K)TV+DWC(V)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/448605.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PyCM:Python中的混淆矩阵库

PyCM&#xff1a;Python中的混淆矩阵库 在机器学习和数据科学领域&#xff0c;评估模型的性能是至关重要的。混淆矩阵是一种常用的评估工具&#xff0c;用于可视化和量化分类模型的预测结果。PyCM是一个开源的Python库&#xff0c;提供了丰富的功能来计算和分析混淆矩阵。本文将…

CKB转型为BTC Layer2后月涨超 300%,还有哪些转型热门赛道的老项目?

虽然说牛市下&#xff0c;炒新不炒旧。但一些渡过漫长熊市的老牌项目方&#xff0c;重新回到牌桌前开始新叙事后&#xff0c;市场依然有人买单。 部分项目方已经初步尝到了甜头&#xff0c;Arweave&#xff08;AR&#xff09;宣布从去中心化数据存储转换到「以太坊杀手」后&am…

信息安全、网络安全以及数据安全三者之间的区别

随着信息技术的飞速发展&#xff0c;网络安全、信息安全、数据安全等词汇在平时出现的频率越来越高&#xff0c;尤其是数据安全&#xff0c;是大家都关心的一个重要话题。事实上&#xff0c;有很多人对网络安全、信息安全、数据安全的概念是区分不清的&#xff0c;下面由我帮大…

【C++】STL(二) string容器

一、string基本概念 1、本质 string是C风格的字符串&#xff0c;而string本质上是一个类 string和char * 区别&#xff1a; char * 是一个指针 string是一个类&#xff0c;类内部封装了char*&#xff0c;管理这个字符串&#xff0c;是一个char*型的容器。 2、特点 1、stri…

20240309web前端_第一周作业_古诗词

作业三&#xff1a;古诗词 成果展示&#xff1a; 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&q…

冒泡排序的理解与实现【C语言、C++、java】

冒泡排序介绍 冒泡排序(Bubble Sort)&#xff0c;又被称为气泡排序或泡沫排序。 它是一种较简单的排序算法。它会遍历若干次要排序的数列&#xff0c;每次遍历时&#xff0c;它都会从前往后依次的比较相邻两个数的大小&#xff1b;如果前者比后者大&#xff0c;则交换它们的位…

【教程】使用小米换机来迁移数据

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 1、在新旧手机上都下载安装小米换机app&#xff1a;小米换机-小米应用商店 2、在新手机上&#xff0c;选择旧手机类型 3、授予权限 4、在旧手机上&#xff0c;授予权限 4、输入锁屏密码 5、选择发现的新手机 6、等…

后端八股笔记------Redis

Redis八股 上两种都有可能导致脏数据 所以使用两次删除缓存的技术&#xff0c;延时是因为数据库有主从问题需要更新&#xff0c;无法达到完全的强一致性&#xff0c;只能达到控制一致性。 一般放入缓存中的数据都是读多写少的数据 业务逻辑代码&#x1f447; 写锁&#x1f4…

论文笔记:Evaluating the Performance of Large Language Models on GAOKAO Benchmark

1 论文思路 采用zero-shot prompting的方式&#xff0c;将试题转化为ChatGPT的输入 对于数学题&#xff0c;将公式转化为latex输入 主观题由专业教师打分 2 数据 2010~2022年&#xff0c;一共13年间的全国A卷和全国B卷 3 结论 3.1 不同模型的zeroshot 高考总分 3.2 各科主…

Helix QAC—源码级静态自动化测试工具

Helix QAC概述 Helix QAC是一款源码级静态自动化测试工具&#xff0c;主要用于C/C代码的完全自动化静态分析工作&#xff0c;提供一个高效、健壮和自动化的环境来引入和执行编码标准。Helix QAC根据尽早、更频繁测试的理念&#xff0c;在软件生命周期最早期软件开发阶段应用识别…

03:HAL---中断

目录 一:中断 1:简历 2:AFIO 3:EXTI 4:NVIC基本结构 5:使用步骤 6:设计中断函数 二:中断的应用 A:对外式红外传感计数器 1:硬件介绍 2:计数代码 B:旋转编码计数器 1:硬件介绍 2:旋转编码器代码 C:按键控制LED D:代码总结 一:中断 1:简历 中断&#xff1a;在主程序…

数据分析-Pandas如何画图验证数据随机性

数据分析-Pandas如何画图验证数据随机性 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表…

地球系统模式(CESM)

目前通用地球系统模式&#xff08;Community Earth System Model&#xff0c;CESM&#xff09;在研究地球的过去、现在和未来的气候状况中具有越来越普遍的应用。CESM由美国NCAR于2010年07月推出以来&#xff0c;一直受到气候学界的密切关注。近年升级的CESM2.0在大气、陆地、海…

ctfshow web入门 php特性总结

1.web89 intval函数的利用&#xff0c;intval函数获取变量的整数值&#xff0c;失败时返回0&#xff0c;空的数组返回&#xff0c;非空数组返回1 num[]1 intval ( mixed $var [, int $base 10 ] ) : int Note: 如果 base 是 0&#xff0c;通过检测 var 的格式来决定使用的进…

论文解读:NAND闪存中读电压和LDPC纠错码的高效设计-2

在NAND闪存中&#xff0c;理论结果表明&#xff0c;LDPC解码器的性能可通过密度进化&#xff08;Density Evolution, DE&#xff09;技术进行详尽分析。针对MLC NAND闪存&#xff0c;研究者首先建立了一个离散无记忆信道模型&#xff0c;将存储单元的阈值电压划分为七个区间&am…

前端学习之HTML 下拉框 文本框

注&#xff1a;注释是对下列代码中标签的解释 下拉框 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>下拉框</title> </head> <body><!--使用&#xff1a;select标签option标…

通信总线协议之CAN-FD协议详解

文章目录 通信总线之CAN-FD总线协议详解1. CAN-FD 简介1.1 什么是CAN FD1.2 CAN FD的特点 2. CAN-FD总线协议2.1 帧起始2.2 仲裁段2.3 控制段2.4 数据段2.5 CRC段2.6 ACK段2.7 帧结束 3. 如何从传统的CAN升级到CAN FD 通信总线之CAN-FD总线协议详解 1. CAN-FD 简介 1.1 什么是…

AJAX学习(三)

版权声明 本文章来源于B站上的某马课程&#xff0c;由本人整理&#xff0c;仅供学习交流使用。如涉及侵权问题&#xff0c;请立即与本人联系&#xff0c;本人将积极配合删除相关内容。感谢理解和支持&#xff0c;本人致力于维护原创作品的权益&#xff0c;共同营造一个尊重知识…

SpringBoot 多环境的配置(附带有截图)

文章目录 概要整体配置流程配置详细说明技术细节小结 概要 多环境开发 在实际项目开发中&#xff0c;一般需要针对不同的运行环境&#xff0c;如开发环境、测试环境、生产环境等&#xff0c;每个运行环境的数据库等配置都不相同&#xff0c;每次发布测试、更新生产都需要手动…

精酿啤酒:酿造工艺的与众不同之处与魅力

Fendi Club啤酒的酿造工艺具有与众不同之处和魅力&#xff0c;这些特点使得啤酒口感与众不同、品质卓着。 Fendi Club啤酒采用与众不同的原料配方。他们精选上好麦芽、酵母和啤酒花&#xff0c;并按照与众不同的比例进行搭配。这种与众不同的原料配方为啤酒提供了丰富的口感和…