AFT:Attention Free Transformer论文笔记
原文链接
2105.14103 (arxiv.org)
原文翻译
Abstract
我们介绍了 Attention Free Transformer (AFT),这是 Transformer [1] 的有效变体,它消除了点积自注意力的需要。在 AFT 层,键key和值value首先与一组学习的位置偏差position biases相结合,其结果以元素方式与查询相乘。这种新操作的内存复杂度为线性 w.r.t。上下文大小和特征维度,使其与大输入和模型大小兼容。我们还引入了 AFT-local 和 AFT-conv,这是两个模型变体,它利用了局部性和空间权重共享的思想,同时保持全局连通性。我们在两个自回归建模任务(CIFAR10 和 Enwik8)以及图像识别任务(ImageNet-1K 分类)上进行了广泛的实验。我们表明 AFT 在所有基准测试中都表现出具有竞争力的性能,同时提供了出色的效率。
1 Introduction
以Transformers[1]为代表的自注意机制推动了各种机器学习问题的发展,包括语言理解[2,3]和计算机视觉应用[4 - 6]。与卷积神经网络(cnn)或循环神经网络(rnn)等经典模型架构不同,变形金刚可以在序列中的每对元素之间进行直接交互,这使得它们在捕获长期依赖关系方面特别强大。
然而,变压器需要很高的计算成本。这一挑战的原因是需要执行具有二次时间和空间复杂性的注意力操作,这涉及上下文大小。这使得transformer难以扩展到具有大上下文大小的输入。最近的许多工作都致力于解决transformer的可伸缩性问题[7 -13]。这里的共同思想是近似全注意力操作,使用的技术包括稀疏性、局域敏感散列、低秩分解、核近似等。
在本文中,我们提出了一个不使用或近似标准点积注意力的计算模块。因此,我们将我们的模型命名为不使用注意力的Transformer (AFT)。与点积注意力类似,AFT 由查询、键和值 (Q, K, V) 三个量的交互组成。不同之处在于,在 AFT 中,键和值(上下文)首先与一组可学习的位置偏执相结合然后使用元素乘法将查询与缩减的上下文相结合。有关说明,请参见图 2。
AFT 保留了在上下文中任意两个点之间的直接交互,这是点积注意力的主要优势。事实上,AFT 可以解释为执行注意力,其中注意力头的数量与模型特征维度相同,而注意力图不需要显式计算(详见第 3.1 节)。这导致内存复杂度线性 w.r.t。输入和模型大小。
Q、K、V 的重新排列计算排序在最近的“线性化注意力”工作中也被发现 [11, 13 –15]。不同之处在于 AFT 以元素方式组合 k 和 v,而所有线性注意力论文都依赖于矩阵点积。后一种方法导致复杂度与模型特征维度的二次方,这对大型模型大小不友好。有关 AFT 与其他变体相比的复杂性分析,请参见表 1。
根据经验,我们观察到经过训练的 Transformer 往往表现出广泛的局部模式(见图 1)。这促使我们提出了两种 AFT 变体:AFT-local 和 AFT-conv。在 AFT-local 中,学习到的位置偏差被限制在局部区域,同时保持全局连接。AFT-conv 通过施加空间权重共享进一步扩展了这种设计,有效地使其成为具有全局感受野的 CNN 变体。我们表明,局部性约束不仅提供了更好的参数和计算效率,而且大大提高了模型在所有任务中的表现。
我们在图像自回归建模、字符级语言建模和图像分类任务上使用 AFT 进行了实验。我们表明,AFT 提供了具有竞争力的性能,通常匹配或击败标准 Transformer 和其他变体(的准确度),同时提供了出色的效率。我们还对 AFT 的几种设计选择进行了广泛的消融研究,并讨论了它的独特属性,例如与 Transformer的兼容性、稀疏性和输入大小的可变性。
2 Multi-Head Attention
Transformers 的核心是多头注意力 (MHA) 操作。在自注意模式下,给定一个输入序列 X ∈ R^T ×d 和头部的数量 h,MHA 对每个头部 i 执行缩放的点积注意力,定义为:
其中 W Q i ∈ R^d×dk , W K i ∈ R^d×dk , W V i ∈ R^d×dv 是头部 i 的线性变换,σ 是默认设置为 sof tmax 函数的非线性(应用于矩阵的每一行)。dk, dv 分别是键和值的维度。MHA 将 h 个注意力头的输出沿通道维度拼接起来,得到特征维度 hdv。除非另有说明,我们假设dk=dv和h=d/dk。这意味着查询、键和值在每个头内都是相同的维度,输出维度与输入的维度匹配。
3 Methodology
3.1 Attention Free Transformer
我们现在定义 Attention free Transformer (AFT),它是 MHA 的插件替换,而不需要更改 Transformer 的其他架构方面。给定输入 X,AFT 首先将它们线性变换为 Q = XW^Q, K=XW^K,V =XW^V ,然后进行以下操作 2:
其中 是元素乘积; σq 是应用于query的非线性,默认为 sigmoid; w ∈ RT ×T 是学习的成对位置偏差(参见图 2 的说明)。
简而言之,对于每个目标位置t, AFT执行value的加权平均值,其结果与query进行元素间乘法相结合。具体来说,相结合的权重只是由键和一组学习得到的成对位置偏差组成。这提供了不需要计算和存储昂贵的注意力矩阵的直接优势,同时像MHA那样维护查询和值之间的全局交互。为了进一步了解AFT与MHA的关系,我们可以将方程2改写为:
这里我们使用上标 i 来索引矩阵的特征维度; <·, · >; 表示向量的点积。在这个重新排列的形式中,我们能够再次根据注意力来表达 AFT。具体来说,对于每个位置,我们对每个维度都有一个注意力向量 ai t ∈ RT,由 Q、K、w 组成。换句话说,AFT 可以解释为执行隐式注意力,头部数量与特征维度一样多,其中注意力矩阵采用分解形式。
下略
相关文章:

AFT:Attention Free Transformer论文笔记
原文链接 2105.14103 (arxiv.org) 原文翻译 Abstract 我们介绍了 Attention Free Transformer (AFT),这是 Transformer [1] 的有效变体,它消除了点积自注意力的需要。在 AFT 层,键key和值value首先与一组学习的位置偏差position biases相结…...
Linux grep技巧 结合awk查询
目录 一. 前提1.1 数据准备1.2 数据说明 二. 查询2.1 统计每个加盟店搜索的次数 一. 前提 1.1 数据准备 ⏹file1.log 140 2024/07/08 12:35:01.547 c1server2 5485 [ERROR] SPLREQUEST seqNo11459,eventControllerPMT.payinfoforprc.test.search,oldest_data_search2 110 20…...

关于Qt模型插入最后一行数据中存在未填满的项,点击导致崩溃的解决办法
在使用Qt模型视图框架的时候,你可能会遇见这种情况:给QTableView设置设置模型的时候,网模型里面插入数据,因为数据是一行一行插入的,即要使用model的appandRow函数,但有时候最后一行数据没有填满一行&#…...

Interpretability 与 Explainability 机器学习
「AI秘籍」系列课程: 人工智能应用数学基础人工智能Python基础人工智能基础核心知识人工智能BI核心知识人工智能CV核心知识 Interpretability 模型和 Explainability 模型之间的区别以及为什么它可能不那么重要 当你第一次深入可解释机器学习领域时,你会…...

Vue3项目如何使用npm link本地测试组件库
一、组件库操作 1、在组件库项目中先运行npm run lib,其效果如下 2、在组件库项目中在运行npm link,其效果如下 会创建一个全局的软连接指向本地的组件库 二、Vue3项目使用 1、在项目中运行 npm link 组件名称(即:组件库packag…...

后端之路——阿里云OSS云存储
一、何为阿里云OSS 全名叫“阿里云对象存储OSS”,就是云存储,前端发文件到服务器,服务器不用再存到本地磁盘,可以直接传给“阿里云OSS”,存在网上。 二、怎么用 大体逻辑: 细分的话就是: 1、准…...

大模型/NLP/算法面试题总结2——transformer流程//多头//clip//对比学习//对比学习损失函数
用语言介绍一下Transformer的整体流程 1. 输入嵌入(Input Embedding) 输入序列(如句子中的单词)首先通过嵌入层转化为高维度的向量表示。嵌入层的输出是一个矩阵,每一行对应一个输入单词的嵌入向量。 2. 位置编码&…...

【atcoder】习题——位元枚举
题意:求i&M的popcount的和,i属于0……N 主要思路还是变加为乘。 举个例子N22,即10110 假设M的第3位是1,分析N中: 00110 00111 00100 00101 发现其实等价于 0010 0011 0000 0001 也就是左边第4位和第5…...

世界人工智能大会 | 江行智能大模型解决方案入选“AI赋能新型工业化创新应用优秀案例”
日前,2024世界人工智能大会暨人工智能全球治理高级别会议在上海启幕。本次大会主题为“以共商促共享,以善治促善智”,汇聚了上千位全球科技、产业界领军人物,共同探讨大模型、数据、新型工业化等人工智能深度发展时代下的热点话题…...

css浮动及清除浮动副作用的三种解决方法
css浮动及清除浮动副作用的三种解决方法 文章目录 css浮动及清除浮动副作用的三种解决方法一、浮动定义二、浮动元素设置三、清除浮动副作用方法一四、清除浮动副作用方法二五、清除浮动副作用方法三 一、浮动定义 浮动(Float)是CSS中一种布局技术&…...
图像类别生成数字标签
类别 COCO 2017数据集分类标签。coco2017数据集下载。 cls [background, person, bicycle, car, motorcycle, airplane, bus,train, truck, boat, traffic light, fire hydrant,stop sign, parking meter, bench, bird, cat, dog,horse, sheep, cow, elephant, bear, zebra,…...

【Python】已解决:SyntaxError: invalid character in identifier
文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:SyntaxError: invalid character in identifier 一、分析问题背景 在Python编程中,SyntaxError: invalid character in identifier是一个常见的编译…...

RDNet实战:使用RDNet实现图像分类任务(一)
论文提出的模型主要基于对传统DenseNet架构的改进和复兴,通过一系列创新设计,旨在提升模型性能并优化其计算效率,提出了RDNet模型。该模型的主要特点和改进点: 1. 强调并优化连接操作(Concatenation) 论文…...
Java小白入门到实战应用教程-介绍篇
writer:eleven 介绍 编程语言介绍 编程语言按照抽象层次和硬件交互的方式划分为低级编程语言和高级编程语言。 低级编程语言更接近计算机硬件层面,通常具有执行效率高的特点,但是由于注重计算机底层交互,所以编程难度相对较大。 高级编程…...

python脚本“文档”撰写——“诱骗”ai撰写“火火的动态”python“自动”脚本文档
“火火的动态”python“自动”脚本文档,又从ai学习搭子那儿“套”来,可谓良心质量👍👍。 (笔记模板由python脚本于2024年07月07日 15:15:33创建,本篇笔记适合喜欢钻研python和页面源码的coder翻阅) 【学习的细节是欢悦…...
若依 / ruoyi-ui:执行yarn dev 报错 esnext.set.difference.v2.js in ./src/utils/index.js
一、报错信息 These dependencies were not found: * core-js/modules/esnext.set.difference.v2.js in ./src/utils/index.js * core-js/modules/esnext.set.intersection.v2.js in ./src/utils/index.js * core-js/modules/esnext.set.is-disjoint-from.v2.js in ./src/utils…...
移动端Vant-list的二次封装,查询参数重置
Vant-list的二次封装 场景:在写项目需求的时候,移动端有用到vant-list组件。后续需求更新说要对列表数据页加搜索和筛选的功能。发现每次筛选完得在页面内手动重置一次查询参数。不方便,所以封了一层。 二次封装代码 <template><…...
SMU Summer 2024 Contest Round 2
[ABC357C] Sierpinski carpet - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路:通过因为图形的生成过程是完全一样的。可以通过递归,不断分形。函数process(x,y,k)定义为以坐标(x,y)为左上角,填充sqrt3(k)级的地毯。 int n; int c[800][800]; 默认全为…...

Qt:11.输入类控件(QLineEdit-单行文本输入控件、QTextEdit-多行文本输入控件、QComboBox-下拉列表的控件)
一、QLineEdit-单行文本输入控件: 1.1QLineEdit介绍: QLineEdit 是 Qt 库中的一个单行文本输入控件,不能换行。允许用户输入和编辑单行文本。 1.2属性介绍: inputMask 设置输入掩码,以限定输入格式。setInputMask(con…...

Qt 音频编程实战项目
一Qt 音频基础知识 QT multimediaQMediaPlayer 类:媒体播放器,主要用于播放歌曲、网络收音 机等功能。QMediaPlaylist 类:专用于播放媒体内容的列表。 二 音频项目实战程序 //版本5.12.8 .proQT core gui QT multimedia greate…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...