AFT:Attention Free Transformer论文笔记

news2024/9/23 3:15:50

原文链接

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 可以解释为执行隐式注意力,头部数量与特征维度一样多,其中注意力矩阵采用分解形式。

下略

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海南云亿商务咨询有限公司助力品牌快速崛起

在数字化浪潮的推动下&#xff0c;电商行业日新月异&#xff0c;短视频平台更是成为品牌宣传和销售的新宠。海南云亿商务咨询有限公司&#xff0c;作为抖音电商服务的领军者&#xff0c;凭借其专业的团队和丰富的经验&#xff0c;助力众多品牌在抖音平台上实现了快速增长。 一…

通过rpmbuild构建Elasticsearch-7.14.2-search-guard的RPM包

系列文章目录 rpmbuild从入门到放弃 search-guard插件使用入门手册 文章目录 系列文章目录前言一、资源准备二、spec文件1.基础信息2.%prep3.%Install4.%file5.%post6.%postun 三、成果演示1.执行构建过程图示例2.执行安装RPM包示例3.进程检查4.访问esApi 总结 前言 不管是源…

Google AlphaGo 繁忙训练的一天

早晨&#xff1a;启动与准备 7:00 AM - 起床与准备 AlphaGo的研发团队成员早早起床&#xff0c;进行晨练活动&#xff0c;如跑步或瑜伽&#xff0c;保持身体健康和精力充沛。 8:30 AM - 到达工作场所 研发团队到达Google的办公室或远程工作站&#xff0c;启动设备&#xff…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十六章 Linux 第一个程序 HelloWorld

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

Docker——简介、安装(Ubuntu22.04)

1、简介 Docker 是一个开源的容器化平台&#xff0c;旨在简化应用程序的开发、交付和运行。它通过将应用程序及其所有依赖项打包到一个称为容器的标准化单元中&#xff0c;使应用程序能够在任何环境中一致地运行。Docker 解决了“在我的机器上能运行”的问题&#xff0c;使开发…

如何检测用户的Chrome插件

背景 已知一些Chrome插件会影响到网站的一些功能&#xff0c;希望在前端主动检测到用户使用了某插件然后弹出提示让用户关闭&#xff0c;以减少客诉 方法 1. 检测资源文件 如图获取插件的ID 启用插件后&#xff0c;打开 chrome-extension://${ID}/manifest.json 找到 web_a…

Java实战:寻找完美数

文章目录 一、何谓完美数二、寻找完美数&#xff08;一&#xff09;编程思路&#xff08;二&#xff09;编写程序&#xff08;三&#xff09;运行程序 三、实战小结 一、何谓完美数 完美数是一种特殊的自然数&#xff0c;它等于其所有正除数&#xff08;不包括其本身&#xff…

【好物推荐】2024年最佳无线耳塞和耳机

深入三星生态系统找到最适合使用的三星无线耳塞和耳机。 如果你有一部三星手机&#xff0c;你可以很容易地从市场上最好的无线耳机中选择。有与airpods相当的Galaxy Buds Pro 2&#xff0c;或者大量与Android兼容的第三方选项。其中许多还支持aptX或LDAC音频编解码器&#xff…

Python 利用pandas处理CSV文件(DataFrame的基础用法)

前面介绍过通过Python标准库中的CSV模块处理CSV文件&#xff1a; Python 利用CSV模块处理数据 相比CSV模块&#xff0c;pandas的功能更加强大&#xff0c;本文将简单介绍如何通过pandas来处理CSV文件。 文章目录 一、pandas简介二、用法示例2.1 读取CSV文件2.1.1 read_csv参数…

3D模型进入可快速编辑时代,51建模网赋能Web3D展示!

丰富多样的Web3D展示形式&#xff0c;离不开强大的3D互动引擎作为坚实后盾。51建模网依托WebGL技术的先进力量&#xff0c;匠心打造了一款在线3D模型编辑器&#xff0c;它不仅能够迅速优化3D模型效果&#xff0c;更能够生成引人入胜的3D互动内容&#xff0c;让创意无界&#xf…

【问题记录】Windows中Node的express无法直接识别

问题描述 在使用express_generator的时候windows平台中出现无法识别express命令的问题&#xff0c;另外就算添加了全局环境变量也没用。 问题解决 查看官方文档发现在node版本8之前的时候使用的是express&#xff0c;但是之后的版本使用npx&#xff0c;这个工具的出现主要想…

数字身份管理发展趋势:IAM 和数据安全相结合

数据安全和IAM作为网络安全领域中不同的学科而存在。然而&#xff0c;随着越来越多的组织利用云服务&#xff0c;情况发生了显著的转变。许多公司现在将重要的安全控制(例如管理存储、应用程序和网络的控制)委托给他们选择的云服务提供商(CSP)。 图&#xff1a;用户与云服务商职…

C++ QT实现验证码功能

codearea.h #ifndef RENDERAREA_H #define RENDERAREA_H#include <QList> #include <QPainterPath> #include <QRect> #include <QWidget>#define DEF_CODECOUNT 4 // 验证码默认位数#define DEF_NOISYPOINTCOUNT 60 // 噪点数量 #define DEF_C…

印尼“支付宝” DANA 如何借力 OceanBase 实现3个“关键零”

当前&#xff0c;移动支付在东南亚正迅猛发展&#xff0c;据谷歌、淡马锡与贝恩公司发布的报告预测&#xff0c;东盟地区蓬勃兴起的移动支付市场有望在2030年突破至2万亿美元的交易规模。 在此背景下&#xff0c;DANA作为印尼——东南亚最大经济体中的一员&#xff0c;秉持着推…

【docker 把系统盘空间耗没了!】windows11 更改 ubuntu 子系统存储位置

系统&#xff1a;win11 ubuntu 22 子系统&#xff0c;docker 出现问题&#xff1a;系统盘突然没空间了&#xff0c;一片红 经过排查&#xff0c;发现 AppData\Local\packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\ 这个文件夹竟然有 90GB 下面提供解决办法 步…

磁力搜索引擎是什么?为什么有些资源喜欢用磁力链接?

磁力链接是什么东西&#xff1f;在日常生活中&#xff0c;我们接触的比较多的下载链接是直链。 所谓的直链简单来说就是直接指向服务器文件资源的链接&#xff0c;如B站app的下载链接&#xff0c;这种链接有统一的服务器提供保障&#xff0c;通常比较稳定&#xff0c;可以追溯源…

数据结构 —— Dijkstra算法

数据结构 —— Dijkstra算法 Dijkstra算法划分集合模拟过程打印路径 在上次的博客中&#xff0c;我们解决了使用最小的边让各个顶点连通&#xff08;最小生成树&#xff09; 这次我们要解决的问题是现在有一个图&#xff0c;我们要找到一条路&#xff0c;使得从一个顶点到另一个…

java之数组练习

思路&#xff1a; 代码&#xff1a; public static void main(String[] args) {char[] arrnew char[26];for (char i0;i<arr.length;i ){arr[i] (char) (Ai);}System.out.println(arr);} 结果&#xff1a;

VMware使用技巧

目录 1. 系统快照 1.1 拍摄快照 1.2 查看快照 1.3 应用/删除快照 2. 克隆虚拟机 3. 删除虚拟机 1. 系统快照 1.1 拍摄快照 将当前系统的状态保存下来&#xff0c;如果将来系统出现不可修复的故障&#xff0c;使用快照可以恢复操作系统&#xff1b; CentOS7——拍照—…

【STM32】MDK的编译过程及文件类型全解

1.编译过程简介 编译&#xff1a;MDK软件使用的编译器是armcc和armasm&#xff0c; 它们根据每个c/c和汇编源文件编译成对应的以“.o”为后缀名的对象文件(Object Code&#xff0c;也称目标文件)&#xff0c; 其内容主要是从源文件编译得到的机器码&#xff0c;包含了代码、数据…