邻域注意力Transformer

news2024/10/5 12:41:36

邻域注意力(NA),这是第一个高效且可扩展的视觉滑动窗口注意力机制,NA是一种逐像素操作,将自注意力(SA)定位到最近的相邻像素,因此与SA的二次复杂度相比,具有线性时间和空间复杂度。与Swin Transformer的窗口自注意力不同,滑动窗口模式允许NA的感受野增长,而无需额外的像素移位,并保留平移等变性。

Neighborhood Attention Transformer可以自适应地将接收域定位到每个token周围的一个邻域,在不需要额外操作的情况下引入局部归纳偏差;而Swin Transformer则通过Window Self Attention和Shifted Window Self Attention两种自注意力,通过像素移位实现两种划分并降低计算复杂度。


NAT(Neighborhood Attention Transformer)是基于NA的新型分层Transformer设计,提高图像分类性能。在视觉范围内,token的数量通常与图像分辨率呈线性相关。因此,较高的图像分辨率会导致严格使用SA的模型的复杂性和内存使用量呈二次方增加。二次复杂度使得此类模型无法轻松应用于下游视觉任务,例如对象检测和分割,其中图像分辨率通常比分类大得多。


独立自注意力

独立自注意力(SASA)是基于局部窗口的视觉注意力的最早应用之一,其中每个像素关注其周围的一个窗口,其显式滑动窗口模式与相同卷积的模式相同,周围有零填充和简单的二维光栅扫描,因此保持平移等变性。

在计算机图形学中,二维光栅扫描算法主要用于将二维图像转换成三维模型,以便在三维空间中进行处理和分析。

平移等变性是指模型对输入数据的平移不敏感,即无论输入数据如何平移,模型的输出都保持不变。这是卷积神经网络(CNNs)的一个关键属性,而SASA通过其局部注意力机制也保持了这一属性。

随着邻域大小的增加,NA 也接近 SA,并且在最大邻域时相当于 SA。

方法描述

邻域注意力(NA):一种简单而灵活的显式滑动窗口注意力机制,将每个像素的注意力范围定位到其最近邻域,随着其范围的增长而接近自注意力,并保持平移等变性。

单个像素的邻域注意力 (NA) 与自注意力 (SA) 的查询键值结构图如下所示

相关工作

自注意力

将缩放点积注意力定义为对查询和一组键值对的操作;

Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d}})V        其中d是嵌入维度(输入向量维度)。

自注意力将点积注意力应用于与查询和键值对相同的输入的线性投影。多头注意力在不同的嵌入上多次应用点积注意力,从而形成注意力头。

给定输入X\in R^{n\times d},其中n是token数量,d是嵌入维度,该操作的复杂度为O(n^2d);注意力权重的空间复杂度为O(n^2)

Vision Transformer

Dosovitskiy 等人提出了一种基于 Transformer 的图像分类器,仅由 Transformer 编码器和图像标记器组成,称为 Vision Transformer (ViT)

DETR探索了用于目标检测的CNN-Transformer混合体。另一方面,ViT提出了一种仅依赖于单个非重叠卷积层(修补和嵌入)的模型。

数据高效图像转换器(DeiT)模型通过使用先进的增强和训练技术,以最小的架构变化推动 ViT 取得进展。

局部自注意力

独立自注意力(SASA)是最早的滑动窗口自注意力模式之一,旨在取代现有 CNN 中的卷积。它的操作类似于零填充的卷积,并通过跨过特征图来提取键值对。

Liu等人引入了窗口和移位窗口(Swin)注意力作为基于非滑动窗口的自注意力机制,该机制对特征图进行分区并将自注意力分别应用于每个分区。

Swin Transformer产生金字塔的特征图,减少空间维度,同时增加深度。

HaloNet

通过用新的块注意力模式取代它来避免SASA的速度问题。虽然这种变化放宽了平移等变性,但它可以提供速度和内存的合理权衡。

这种模式将输入序列划分为多个块(blocks),并且每个块只关注它自己的块以及相邻的几个块。通过这种方式,每个块只需要计算与其相邻块的注意力权重,而不是整个序列。这大大降低了计算复杂性,并且使得 HaloNet 能够有效地处理长序列。

HaloNet的注意力机制由三个阶段组成:块、haloing和注意力。输入特征图被分为不重叠的子集,这些子集将用作查询。接下来,提取“haloing”相邻块,将其用作键和值。然后将注意力应用于提取的查询和键值对。

HaloNet相比于SASA可以有效降低成本,并且提高性能,特别是与网络中的卷积层结合使用时。

卷积基线

Liu等人提出了一种受Swin等模型影响的新CNN架构,称为ConvNeXt。这些模型不是基于注意力的,并且在不同的视觉任务中都表现优于 Swin。

Neighborhood Attention

将感受野定位到每个查询周围的窗口,因此不需要额外的技术,例如Swin使用的循环移位。此外,Neighborhood Attention保持平移等差性,Neighborhood Attention 可以比 Swin 等方法运行得更快,同时使用更少的内存。我们引入了一种具有这种注意力机制的分层变压器模型,称为 Neighborhood Attention Transformer。

方法

邻域注意力,考虑视觉数据结构的自注意力的本地化。与自注意力相比,不仅降低了计算成本,而且还引入了局部归纳偏差,类似于卷积。

NAT采用多层级联设计,类似于Swin,意味着特征图在不同层级之间进行下采样,而不是一次全部下采样。与Swin不同,NAT使用重叠卷积来对特征图进行下采样,而不是非重叠卷积。

  • NAT使用了一个多层级联设计,这与Swin相似。这种设计意味着特征图(feature maps)在不同的层级之间进行了下采样(downsampling),而不是一次性完成所有下采样。
  • 在深度学习中,多层级联设计通常用于捕获不同尺度的信息。较低层级的特征图包含更多的细粒度信息,而较高层级的特征图则包含更多的粗粒度或全局信息。
  • 重叠的卷积意味着卷积核在特征图上移动时,相邻的卷积操作会有部分重叠。这通常可以增加模型的表达能力,因为它允许模型捕捉更多的局部和全局信息。
  • 归纳偏置是机器学习中的一个概念,它指的是模型在学习过程中自动获取的一些有用的假设或约束。这些偏置可以帮助模型更好地泛化到未见过的数据。

 Neighborhood Attention

Swin 的 WSA(Window Self Attention) 可以被认为是现有最快的限制自我注意力的方法之一,其目的是降低二次注意力成本。它只是简单地对输入进行分区,并将自注意力分别应用于每个分区。

SWSA会移位这些分区线以允许窗口外交互。对于扩大感受野来说至关重要。然而,局部限制自注意力的最直接方法是允许每个像素关注其相邻像素,这导致大多数像素周围有一个动态移位的窗口,扩大了感受野,因此不需要手动移位。

与Swin不同且类似于卷积,这种受限自注意力的动态形式可以保留平移等差性。


给定输入X\in R^{n\times d},它是一个矩阵,其一行是 d 维标记向量,以及X的线性投影Q,K和V以及相对位置偏差B(i,j);我们定义注意力权重对于领域大小为 k 的第 i 个输入,A^k_i作为第 i 个输入的查询投影与其 k 个最近邻键的点积

其中\rho _j(i)表示 i 的第 j 个最近邻。然后,我们将邻近值V^k_i定义为一个矩阵,其行是第 i 个输入的 k个最近邻值投影。

 邻域大小为 k 的第 i 个标记的邻域注意力

 其中\sqrt{d}是缩放参数,对特征图中的每个像素重复此操作。

随着k的增长,A^k_i接近自注意力权重,V^k_i接近V_i本身。因此邻域注意力接近自注意力。每个像素都关注其周围的窗口,并在输入周围进行填充以处理边缘情况,正是由于这种差异,随着窗口大小的增加,NA逐渐接近自注意力,但由于输入周围的零填充,在SASA(独立自注意力)中并不适用。

平铺领域注意力和NATTEN(Neighborhood Attention Extension)

以像素方式限制自注意力,被认为是一种成本高昂的操作,需要较低级别的重新实现。因为自注意力本身被分解为矩阵乘法,这是一种可以在加速器上轻松并行化的操作,并且为计算软件中的不同用例定义了无数高效的算法(LAPACK、cuBLAS、CUTLASS)


由于像素级结构NA以及NA中邻域定义的新颖性,使用这些平台实现NA的唯一方法是堆叠许多低效操作来提取邻域,将它们存储为中间张量,然后计算注意力。这会导致操作速度明显变慢,并且内存使用量呈指数级增长。

NATTEN包括半精度支持、对1D和2D数据的支持以及与PyTorch的autograd兼容集成。

用户可以简单地将NA作为PyTorch模块导入并将其集成到现有管道中。

平铺NA算法:通过将不重叠的查询平铺加载到共享内存中去计算邻域注意力权重,以最大程度地减少全局内存读取。与简单的实现相比,平铺NA可以将延迟降低一个数量级。

Neighborhood Attention Transformer

NAT使用两个连续的3*3卷积(步幅为2)的嵌入输入,从而产生\frac{1}{4}输入大小的输出。这类似于使用补丁和具有4\times 4补丁的嵌入层,但它利用重叠卷积来引入有用的归纳偏差。使用重叠卷积会增加成本,并且两个卷积会产生更多参数。然而,我们通过重新配置模型来处理这个问题,从而实现更好的权衡。

NAT 由 4 个级别组成,每个级别后面都有一个下采样器(最后一个除外)。

下采样器将空间大小减少一半,同时通道数量增加一倍。我们使用步长为 2 × 2 的 3 × 3 卷积,而不是 Swin 使用的 2 × 2 非重叠卷积(补丁合并)。

 “Overlapping Tokenizer” 指的是一种分词器(Tokenizer)的设计方法,它在将文本切分为词或标记(tokens)时,允许词与词之间有重叠的部分。这与传统的分词器不同,传统的分词器通常会将文本切分为不重叠的词或标记。

复杂性分析

给定形状为 h × w × d 的输入特征图,其中 d 是通道数,h 和 w 分别是特征图的高度和宽度。

深度学习中的FLOPs是指模型中的浮点运算操作总数

QKV的线性变换的浮点运算次数是3hwd^2 FLOPs;

SA(自注意力)计算复杂度与输入大小的平方成正比,因为计算注意力权重和输出的浮点运算总数是h^2w^2d FLOPs;并且注意力权重的形状为hw\times hw

Swin的WSA(基于窗口的自注意力机制)将查询、键、值划分为k\times k个形状为\frac{h}{k}\times \frac{w}{k}的窗口,然后对每个窗口应用自注意力,即hwdk^2 FLOPs。由于其注意力权重的形状为\frac{h}{k}\times \frac{w}{k}\times k^2\times k^2,WSA的内存消耗为hwdk^2 。

在NA中,A^k_i的大小为h\times w\times k^2,计算它的成本为hwdk^2 。V^k_i的形状为h\times w\times k^2\times d,对其应用注意力权重的成本为hwdk^2。内存使用量为d^2k^2

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

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

相关文章

6 7 8 9 11 12 15 17 18 20 22cm散热风扇防护网风扇金属网罩

品牌:威驰 颜色分类:60mm/6cm金属网,80mm/8cm金属网,92mm/9.2cm金属网,110mm/11cm金属网,120mm/12cm金属网,150mm/15cm金属网,172mm/17.2cm金属网,200mm/20cm金属网,280mm/28cm金属网 1产品参数,防护网罩60 80 90 110 120 125 145 150 180…

详解:ic网站建设开发需要注意什么?

IC网站建设开发需注重专业内容的呈现、强大的产品检索功能、全面的技术支持、严格的合规性展示、便捷的采购工具、良好的用户账户管理、移动适应性和多语言支持,以及高性能与高安全性,以满足行业用户的专业需求,提升网站的实用性和吸引力。 …

linux - 搭建部署ftp服务器

ftp 服务: 实现ftp功能的一个服务,安装vsftpd软件搭建一台ftp服务器 ftp协议: 文件传输协议 (file transfer protocol),在不同的机器之间实现文件传输功能, 例如 视频文件下载,源代码文件下载 公司内部:弄一个专门的文件服务器,将公司里的文档资料和视频都存放…

游戏测试的基本要求

一.测试基本要求 1.研发开发游戏时:编写测试用例、提前开始测试独立模块、催促开发在规定工时完成内容 2.需求开发完成后:研发自测完成、我们执行测试用例、如果用例不完整(时间够就维护用例)、实际测试发现用例之外的问题 3.完…

DIY可视化软件环境准备

DIY官网可视化工具做好的可视化拖拽开发工具无须编程、零代码基础、所见即所得设计工具支持轻松在线可视化导出微信小程序、支付宝小程序、头条小程序、H5、WebApp、UNIAPP等源码 支持组件库,高颜值,卡片,列表,轮播图,导航栏,按钮,标签,表单,单选,复选,下拉选择,多层选择,级联选…

python中的数据可视化:二维直方图 hist2d()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 python中的数据可视化: 二维直方图 hist2d() 选择题 关于以下代码输出结果的说法中正确的是? import matplotlib.pyplot as plt import numpy as np x np.random.normal(0, 1, …

短剧奔向小程序,流量生意如何开启?

随着移动互联网的飞速发展,小程序作为一种轻量级、易传播的应用形态,逐渐在各个领域展现出其独特的商业价值。而最近爆火的短剧小视频作为一种受众广泛的娱乐形式,与小程序结合后,不仅为观众提供了更为便捷的观看体验,…

Windows下安装httpd

一、下载http安装包 1、下载地址 Welcome! - The Apache HTTP Server Project 2、点击“Download” 3、选择对应httpd服务,点击“Files for Microsoft Windows” 4、选择“Apache Lounge”,进入下载页面 5、点击“httpd-2.4.59-240404-win64-VS17.zip …

基于SSM框架多人命题系统

采用技术 基于SSM框架多人命题系统的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringMVCMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 页面展示效果 学生端 登录 个人中心 公告信息 试题信息 管理员 登录 个人信息…

Blazor入门-基础知识+vs2022自带例程的理解

参考: Blazor 教程 - 生成首个应用 https://dotnet.microsoft.com/zh-cn/learn/aspnet/blazor-tutorial/intro Blazor基础知识:Visual Studio 2022 中的Blazor开发入门_vs2022 blazor webassembly-CSDN博客 https://blog.csdn.net/mzl87/article/detail…

局域网手机端远程控制手机

局域网手机端远程控制手机 随着科技的进步和智能设备的普及,远程控制技术在日常生活与工作中的应用越来越广泛。其中,局域网内的手机端远程控制手机技术,因其便捷性和实用性,受到了众多用户的关注。本文将简要介绍该技术及其应用…

【Vue】Vue的核心

目录 计算属性-computed插值语法实现methods实现计算属性实现使用使用总结: 监视属性-watch监视的两种写法:深度监视备注: computed和watch之间的区别 绑定样式class样式绑定字符串写法数组写法对象写法 style样式绑定对象式1对象式2数组式 条…

探索GitHub上的GPTs项目:泄露和被破解的GPT提示

GPTs项目是一个在GitHub上由用户linexjlin发起的开源项目,专注于提供泄露的GPT(生成式预训练转换器)提示。这些提示用于指导和优化AI模型的输出,进而提升代码生成的质量和效率。项目页面提供了丰富的功能和资源,旨在帮…

【C++】CentOS环境搭建-升级CMAKE

【C】CentOS环境搭建-升级CMAKE CMAKE报错CMake 3.12 or higher is required. You are running version 2.8.12.2升级步骤1.移除当前的cmake2.安装必要的构建工具和库3.下载最新的cmake源码并解压5.编译和安装6.验证安装 CMAKE报错CMake 3.12 or higher is required. You are r…

hypack如何采集多波束数据?(上)

多波束设备有3种:多波束阵列,比如Seabat T50P;相干声纳,比如EdgeTeck 6205;多个单波束并列,比如Ross Sweep System,见下图。 辅助传感器主要有:罗经(提供航向&#xff09…

Linux 进程间通信 System V系列: 共享内存,信号量,简单介绍消息队列

进程间通信 System V系列: 共享内存,初识信号量 一.共享内存1.引入2.原理3.系统调用接口1.shmget2.shmat和shmdt3.shmctl 4.边写代码边了解共享内存的特性1.ftok形成key,shmget创建与获取共享内存2.shm相关指令3.shmat和shmdt挂接和取消挂接4.shmctl获取共享内存信息,释放共享内…

org.hsqldb.jdbcDriver 类,导致 ClassNotFoundException 异常如何解决?

确保JDBC驱动包存在:检查系统是否已经安装了HSQLDB JDBC驱动。如果没有安装或驱动没有正确放置在类路径中,需要下载并添加它。你可以从 HSQLDB官网 下载JDBC驱动包。 添加JDBC驱动到类路径:将下载的HSQLDB JDBC驱动(通常是一个JA…

【ArcGISProSDK】condition属性

示例 通过caption属性可以看出esri_mapping_openProjectCondition的条件是一个工程被打开 condition的作用 由此可知示例中的Tab实在工程被打开才能使用,否则他禁用显示灰色,在未禁用的时候说明条件满足。 参考文档 insertCondition 元素 (arcgis.com…

西门子PLC定时器使用与疑难杂症

一、简介 S7-200提供了256个定时器,依据分辨率分三种类型:1ms,10ms和100ms;依据功能分为接通延时定时器(TON)、有记忆的接通延时定时器(TONR)和断开延时定时器(TOF)。 接通延时定时…

Promise魔鬼面试题

文章目录 题目解析难点分析分析输出step1step2step3step4step5step6 参考/致谢:渡一袁老师 题目 Promise.resolve().then(() > {console.log(0);return Promise.resolve(4);}).then((res) > {console.log(res);});Promise.resolve().then(() > {console.l…