(2021,AFT,MHA,RWKV 基础,线性内存复杂度)无注意力的 Transformer

An Attention Free Transformer

公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群

目录

0. 摘要

2. 多头注意力(MHA)

3. 方法

3.1 无注意力 Transformer

3.2 AFT 变体:局部性、权重共享和参数化

5. 实验


0. 摘要

我们引入了 Attention Free Transformer(AFT),一种高效的 Transformer变体【1】,消除了点积自注意力的需求。在 AFT 层中,键和值首先与一组学习到的位置偏置(position biases)结合,其结果与查询按元素方式相乘。这种新的操作具有线性内存复杂度,相对于上下文大小和特征维度,使其兼容大输入和大模型规模。我们还引入了 AFT-local 和 AFT-conv,这两个模型变体利用了局部性和空间权重共享的思想,并保持全局连接性(global connectivity)。我们在两个自回归建模任务(CIFAR-10 和 Enwik8)以及一个图像识别任务(ImageNet-1K 分类)上进行了广泛的实验。结果显示,AFT 在所有基准测试中都表现出具有竞争力的性能,同时提供了出色的效率。

2. 多头注意力(MHA)

(2023|EMNLP,RWKV,Transformer,RNN,AFT,时间依赖 Softmax,线性复杂度) 

3. 方法

3.1 无注意力 Transformer

我们现在定义无注意力 Transformer(AFT),它是多头注意力(MHA)的替代插件,不需要改变 Transformer 的其他架构方面。给定输入 X,AFT 首先将其线性变换为 Q = XW^Q, K = XW^K 和 V = XW^V,然后执行以下操作:

其中,⊙ 是按元素的乘积;σ_q 是应用于查询的非线性函数,默认是 sigmoid;w ∈ R^(TxT) 是学习到的成对位置偏置(见图 2 的说明)。

用语言解释,对于每个目标位置 t,AFT 执行一个加权平均值的计算,其结果与查询按元素相乘。特别地,加权值仅由键和一组学习到的成对位置偏置组成。这提供了不需要计算和存储昂贵的注意力矩阵的直接优势,同时保持了查询和值之间的全局交互,就像 MHA 一样。 为了进一步理解 AFT 与 MHA 的关系,我们可以将公式 2 重新写为: 

我们在此使用上标 i 来索引矩阵的特征维度;<⋅,⋅> 表示向量的点积。在这种重新排列的形式中,我们能够再次以注意力的形式表达 AFT。具体来说,对于每个位置,我们有一个注意力向量 a^i_t ∈ R^T  用于每个维度,由 Q,K,w 组成。换句话说,AFT 可以解释为对每个特征维度执行隐式注意力,其中注意力矩阵采取因式分解的形式。

3.2 AFT 变体:局部性、权重共享和参数化

AFT-full:我们将定义在公式 2 中的基本版本 AFT 称为 AFT-full。

AFT-local:在许多应用中,局部性是一个重要的归纳偏差,已被 CNN 和最近在 Transformer 中的工作所利用。此外,我们发现训练后的标准 Transformer 往往表现出广泛的局部注意力模式。具体来说,我们可视化了一个经过预训练的 ImagenetNet Vision Transformer (ViT),它由 12 层组成,每层有 6 个头。为了便于可视化,我们忽略了分类标记,并将每层的注意力张量重塑为 6 × 196 × 196 的形状(ViT 的特征图的空间大小为 14 × 14)。然后,我们从 ImageNet 验证集中抽样了 256 张图像。对于每一层和每一个头,我们计算平均相对 2d 注意力,在查询位置(query positions)和图像之间取平均。这产生了一组大小为 12 × 6 × 27 × 27 的注意力图。(12 是层数,6 是头数,27 × 27 是由 14 × 14 特征图生成的相对 2D 注意力的大小)

结果显示在图 1(左)中,我们展示了每 2 层的注意力(完整的可视化见附录)。我们看到,相对注意力图显示出强烈的局部模式(如锐度所示),尤其是在较低层。这激发了一种 AFT 的变体,称为 AFT-local,其中我们仅在局部应用一组学习到的相对位置偏差:

其中,s<T 是一个局部窗口大小。AFT-local 提供了进一步的计算节省,无论是在参数数量还是时间/空间复杂度方面。注意,与局部 Transformer(例如,[7])不同,AFT-local 无论窗口大小 s 都保持全局连接性(global connectivity)。在实验中,我们验证了这一设计选择的有效性。

AFT-simple:AFT-local 的一种极端形式是当 s = 0 时,即没有位置偏差被学习到。这产生了一种非常简单的 AFT 版本,其中我们有:

在这个版本中,语境简化(context reduction)进一步简化为逐元素操作和全局池化。AFT-simple 类似于线性注意力【11, 13, 14】,其公式为:Y_t =

然而,很容易看出,AFT-simple 完全摆脱了点积操作的需求,这使得其复杂度为 O(Td) 而不是O(Td^2)。

AFT-conv:我们还可以进一步扩展局部性的概念,以包含空间权重共享,即卷积。这种变体尤其与视觉任务相关,因为通常希望将预训练模型扩展到可变大小的输入。具体来说,我们让 w_(t,t') 的值仅依赖于 t 和 t' 的相对位置,对应于给定的空间网格(1d 或 2d)。类似于 CNN,我们还可以学习多组位置偏差(我们借用 “头” 的概念以便参考)。为了应对随着头数增加而增长的参数数量,我们采用了一种设计选择,即将 K 的维度与头数绑定。这使得 AFT-conv 可以依赖于深度可分离卷积、全局池化和逐元素操作来实现。

我们现在展示一个具有 1d 输入的 AFT-conv 的示例,2d 和 3d 输入可以类似地推导。我们将模型配置表示为 AFT-conv-h-s,其中 h 是头数,s 是 1d 局部窗口大小。我们现在有 w ∈ R^(h x s),Q, V ∈ R^(T x h x d/h),K ∈ R^(T x h)。对于每个头 (i = 1, 2, ..., h),我们有: 

其中 conv1d(x, w) 是一种深度可分离(depth-wise separable)的一维卷积操作,其中卷积滤波器 w 在通道维度上共享。注意,公式 (6) 可以被解释为一个特定的卷积层,具有以下特点:1) 全局连接性,2) 非负卷积权重,3) 复杂的除法/乘法门控机制。实验表明,这三个方面对 AFT-conv 的性能贡献显著。

参数化。实验证明,适当地参数化位置偏置 w 非常重要。对于 AFT-full 和 AFT-local,我们采用 w 的因子化形式:

其中 d' 是一个小的嵌入维度(例如 128)。这种简单的因子化不仅极大地减少了参数数量( 2Td' 对比 T^2),而且在训练和测试中均显著提高了模型的性能。

对于 AFT-conv,因子化技巧不可适用。我们采用了一种简单的重新参数化方法,对于每个头 i,我们令

其中 γ,β ∈ R^h 是可学习的增益和偏置参数,初始值均为 0。

5. 实验

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

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

相关文章

【python】OpenCV—Tracking(10.2)

文章目录 BackgroundSubtractorcreateBackgroundSubtractorMOG2createBackgroundSubtractorKNN BackgroundSubtractor Opencv 有三种背景分割器 K-Nearest&#xff1a;KNN Mixture of Gaussian&#xff08;MOG2&#xff09; Geometric Multigid&#xff08;GMG&#xff09; …

【题解 | 分享】2023年十四届蓝桥杯国赛(Java B组)

互质 答案&#xff1a;640720414 参考&#xff1a; public class Main {static int mod 1000000007;public static void main(String[] args) {long sum power(2023, 2023);long p1 ((sum % mod) * power( 7, mod - 2)) % mod;long p2 ((sum % mod) * power( 17, mod -…

高效派单的秘诀:探索运维工单处理软件的五大关键功能-亿发

在快节奏的现代企业运营中&#xff0c;如何高效管理生产流程&#xff0c;确保任务按时完成&#xff0c;同时保持产品质量和客户满意度&#xff0c;是每个管理者面临的重要课题。工单管理系统&#xff0c;作为企业数字化转型的关键工具&#xff0c;正逐渐成为解决这些问题的利器…

大模型微调常见方法

0&#xff0c; prefix tuning prefix-tuning 跟 soft prompt tuning 类似&#xff0c;只不过&#xff0c;soft prompt tuning 仅仅针对 transformer模型的输入进行&#xff0c;而prefixt-tuning 是针对 每一个 transformer block进行 soft prompt tuning 跟 hard prompt tunin…

AI预测体彩排3采取888=3策略+和值012路一缩定乾坤测试6月1日预测第8弹

今天继续基于8883的大底进行测试&#xff0c;今天继续测试&#xff0c;好了&#xff0c;直接上结果吧~ 首先&#xff0c;888定位如下&#xff1a; 百位&#xff1a;8,9,7,6,4,3,2,0 十位&#xff1a;4,5,3,2,7,8,0,9 个位&#xff1a;3,4,5,2,…

【Python系列】Python 中方法定义与方法调用详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

处理3D数据的强大工具 CloudCompare (多平台兼容)

CloudCompare 是一个开源的3D点云&#xff08;Point Cloud&#xff09;和网格&#xff08;Mesh&#xff09;处理软件&#xff0c;广泛应用于地理信息系统&#xff08;GIS&#xff09;、计算机图形学、测绘、考古、建筑和工程等领域。自2004年由Daniel Girardeau-Montaut开发以来…

记录深度学习GPU配置,下载CUDA与cuDnn,安装tensorflow

目标下载: cuda 11.0.1_451.22 win10.exe cudnn-11.0-windows-x64-v8.0.2.39.zip Anaconda的安装请看别的博主的,这里不再赘述 看看自己电脑的cuda 方法一:打开英伟达面板查看 方法二:使用命令行 随便找个文件夹,在顶部路径输入"cmd" 输入下面命令 nvidia-smi 我…

使用QtCreator C++编写串口调试助手

100编程书屋_孔夫子旧书网 1.首先看一下我设计的界面&#xff08;我这里比较简单&#xff0c;大家可根据自己的需求进行设计&#xff09; &#xff08;界面设计的过程中&#xff0c;每一个控件的名称最好进行修改&#xff0c;便于后续控件太多不好区分&#xff0c;给控件命名的…

Linux目录的基本结构(RHEL8系统基本使用之文件操作)

1.Linux的目录树结构 2.各目录的功能介绍 3.理解文件路径表示方法 Who&#xff1f;——>当前登录的用户 Where?——>路径 我要在哪儿创建文件&#xff1f; 我要删除什么地方的什么文件&#xff1f; 我所要查看的文件在哪里&#xff1f; What?——>操作命令 Ho…

黑马程序员——Spring框架——day03

目录&#xff1a; AOP AOP简介 问题导入AOP简介和作用【理解】AOP的应用场景为什么要学AOPAOP入门案例【重点】 问题导入AOP入门案例思路分析AOP入门案例实现AOP中的核心概念AOP工作流程【理解】 问题导入AOP工作流程AOP核心概念在测试类中验证代理对象AOP切入点表达式 问题导…

双指针练习:快乐数

1.题目链接&#xff1a;202.快乐数 2.题目描述&#xff1a; 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无…

丛林生存法则其实就两个字:输出

不管你是在上班&#xff0c;还是在灵活就业&#xff0c;现在的大环境下&#xff0c;你要想活下来&#xff0c;生存下去&#xff0c;一定要记住这两个字&#xff1a;输出。如果你能记住更多的字&#xff0c;那便是持续高水平的输出。 你如果是大厂程序员&#xff0c;你肯定发现…

会议管理系统(含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 会议管理系统拥有两种角色 管理员&#xff1a;部门管理、员工管理、会议管理、会议室管理、预订会议、添加员工、注册员工审批等 用户&#xff1a;个人通知中心、预订会议、查看所有会议…

Java网络编程(下)

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:Java网络编程&#x1f649; &#x1f439;今日诗词:姑苏城外寒山寺&#xff0c;夜半钟声到客船&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主…

es的总结

es的collapse es的collapse只能针对一个字段聚合&#xff08;针对大数据量去重&#xff09;&#xff0c;如果以age为聚合字段&#xff0c;则会展示第一条数据&#xff0c;如果需要展示多个字段&#xff0c;需要创建新的字段&#xff0c;如下 POST testleh/_update_by_query {…

PTA 计算矩阵两个对角线之和

计算一个nn矩阵两个对角线之和。 输入格式: 第一行输入一个整数n(0<n≤10)&#xff0c;第二行至第n1行&#xff0c;每行输入n个整数&#xff0c;每行第一个数前没有空格&#xff0c;每行的每个数之间各有一个空格。 输出格式: 两条对角线元素和&#xff0c;输出格式见样例…

音视频开发—H264码流组成

本文包含了编码过程的相关概念&#xff0c;如果不了解编码过程&#xff0c;请看这篇文章&#xff1a;H264相关概念和压缩原理详解 H.264视频编码标准将视频编码过程分为两个主要层次&#xff1a;视频编码层&#xff08;VCL, Video Coding Layer&#xff09;和网络抽象层&#x…

Vue:Bin Code Editor格式化JSON编辑器

最终效果如下图所示&#xff0c; Bin Code Editor安装 npm或yarn安装命令如下&#xff0c; npm i bin-code-editor -S # or yarn add bin-code-editor 组件注册 全局注册 在 main.js 中写入导入以下内容&#xff0c; import Vue from vue; import CodeEditor from bin-cod…

0、机器学习知识点

机器学习知识点 知识点汇总 知识点汇总 https://blog.csdn.net/seagal890/article/details/105352987 https://blog.csdn.net/fengdu78/article/details/115878843