当前位置:首页> AI教程> 局部注意力模块Slide Attention在ViT中的应用

局部注意力模块Slide Attention在ViT中的应用

释放双眼,带上耳机,听听看~!
本文介绍了局部注意力模块Slide Attention在Vision Transformer(ViT)中的应用,讨论了其优势和对传统方法的改进。

零、前言

📌本文为稀土掘金技术社区首发签约文章,30天内禁止转载,30天后未获授权禁止转载,侵权必究!

📕欢迎访问

个人博客:conqueror712.github.io/

知乎:www.zhihu.com/people/soeu…

Bilibili:space.bilibili.com/57089326

掘金:juejin.cn/user/129787…

注意,本文不涉及太多复杂的公式与数学推导,初学者或者像笔者一样数学不好的读者可以放心阅读!

论文链接:arxiv.org/pdf/2304.04…

代码链接:github.com/LeapLabTHU/…虽然只有README(lll¬ω¬)

一、引言与摘要

Self Attention自注意力机制是视觉Transformer(ViT) 最近取得进展的关键因素,它使得从全局上下文中进行自适应特征提取成为可能。

然而,现有的自注意力方法要么采用稀疏的全局注意力,要么采用窗口注意力来降低计算复杂度,这可能会损害局部特征学习或受到一些手工设计的限制。相比之下,Local Attention局部注意力将每个查询的receptive field限制在其自身相邻的像素上,享受卷积和自注意力的好处,即局部归纳偏差动态特征选择

但是,这种方法就是最好的了吗?显然不是,不然我也不会在这里解读这篇文章了(笑)。

事实上,当前的局部注意力模块要么使用效率低下的Im2Col函数,要么依赖于特定的CUDA内核,难以推广到不支持CUDA的设备。本文提出了一种新颖的局部注意力模块Slide Attention,它利用常见的卷积操作实现高效率、灵活性和通用性

具体来说,文章首先从新的基于行的角度重新解释了基于列的Im2Col函数,并使用深度卷积作为高效的替代方法。在此基础上,我们提出了一种基于重新参数化技术的变形移位模块,进一步将固定的key/value位置”放松”到局部区域中的变形特征。

通过这种方式,我们的模块以高效和灵活的方式实现了局部注意力范式。

广泛的实验表明,我们的Slide Attention模块适用于各种先进的ViT模型,并兼容各种硬件设备,在综合基准测试中实现了持续改进的性能。(当然,本篇解读不会涉及到繁琐的实验数据,读者有兴趣可以自行查看,链接就在开篇!)

Q:那原本的以前的局部注意力是怎么做的?

A:传统的局部注意力模块通常使用Im2Col函数将局部区域内的像素展开成一列(基于列),然后使用矩阵乘法来计算query和key之间的相似度,最后根据相似度加权求和得到每个query的值。这种方法的缺点是计算效率低下,因为需要进行大量的矩阵乘法运算。同时,这种方法也不够灵活,因为需要手动设计Im2Col函数和矩阵乘法的实现方式。

Q:可以简要介绍一下ViT吗?

A:ViT是Vision Transformer的缩写,是一种基于Transformer的图像分类模型。

与传统的卷积神经网络不同,ViT使用Transformer的自注意力机制来处理图像。它将输入的图像分割成一系列的图像块,然后将这些图像块展平成一维向量序列,作为Transformer的输入。在Transformer中,每个块向量都会与其他块向量进行自注意力计算,从而得到每个块向量的表示。最后,这些表示会被送入一个全连接层进行分类。

ViT的优点是可以处理任意大小的图像,而且在一些图像分类任务上取得了与传统卷积神经网络相当的性能。但是,ViT需要将图像分割成块,这可能会导致信息丢失和计算复杂度增加。此外,ViT的训练需要大量的计算资源和时间,因此在实际应用中可能不太实用。

二、Slide-Transformer简介

Transformer最初是为NLP而提出的,并在近年来获得了越来越多的研究兴趣。随着ViT的出现,研究人员开始意识到它在处理视觉数据方面的巨大潜力,并进一步将Transformer模型扩展到各种视觉任务,包括图像分类、语义分割、目标检测和多模态任务。

然而,将Transformer适应于视觉是一项非常困难的任务。具有全局receptive field的自注意力计算复杂度随着序列长度的增加呈二次增长,这导致计算成本过高,使得它在需要高分辨率输入和大内存消耗的视觉模型中不切实际。Slide-Transformer提出了一种新的Slide Attention模块,它不仅像局部注意力一样施加局部归纳偏差,而且具有高效率和灵活性。

下图是本文提出的模型和其他注意力模式的比较,读者可以先简单看一下,有个概念:

局部注意力模块Slide Attention在ViT中的应用

Q:等一下,我们先别跳过这个图,这其他三种方法,都是什么?

A:

  • PVT(Pyramid Vision Transformer):PVT是一种基于Transformer的图像分类模型,它使用金字塔式的特征提取方法,将输入图像分成多个尺度,并在每个尺度上使用Transformer进行特征提取。PVT使用全局自注意力机制来捕捉全局信息,但由于需要处理多个尺度的特征,因此计算复杂度较高。
  • Swin Transformer:Swin Transformer是一种基于Transformer的图像分类模型,它使用了一种新的窗口注意力机制,将图像分成多个窗口,并在每个窗口上使用Transformer进行特征提取。这种窗口注意力机制可以减少计算复杂度,但需要手动设计窗口大小和数量,不够灵活。
  • Local Attention:局部注意力是一种传统的注意力机制,它使用Im2Col函数将局部区域内的像素展开成一列,然后使用矩阵乘法来计算查询和键之间的相似度,最后根据相似度加权求和得到每个查询的值。这种方法的缺点是计算效率低下,因为需要进行大量的矩阵乘法运算。

尽管这些精心设计的注意力模式具有高效性,但仍存在一些限制。一方面,稀疏全局注意力往往不如局部特征捕捉能力强,并且容易丢弃其他区域中的信息特征。另一方面,窗口注意力可能会阻碍窗口间的交叉通信,并涉及额外的设计,如窗口移位,从而对模型结构设置限制。

本文提出了一种新的局部注意力模块,通过限制每个查询的receptive field在其自身相邻的像素中,来捕捉局部特征。与之前提到的注意力模式相比,局部注意力具有卷积的平移等变性局部归纳偏差的优点,同时也具有自注意力机制的灵活性和数据依赖性

已经有一些研究将局部注意力应用于现代卷积或Transformer模型中,但它们要么使用效率低下的Im2Col函数,要么依赖于精心编写的CUDA内核,限制了在没有CUDA支持的设备上的适用性。因此,开发一种既高效又具有高通用性的局部注意力模块仍然具有挑战性。

Q:我说停停,卷积的平移等变性,局部归纳偏差,数据依赖性,这都是什么?

A:客官莫急,这就为您解释一下:

  • 卷积的平移等变性:指在输入信号平移的情况下,输出特征图也会相应地平移,即卷积操作对输入信号的平移具有等变性。

    Example:在图像分类任务中,当输入图像发生平移时,卷积神经网络可以仍然正确地识别图像中的物体。

  • 局部归纳偏差:指卷积操作在每个位置上都使用相同的卷积核,从而使得卷积操作具有局部归纳偏差。这种偏差可以使得卷积神经网络更好地捕捉输入信号中的局部特征。

    Example:继续以图像分类举例,卷积神经网络可以通过卷积操作来捕捉图像中的边缘、纹理等局部特征。

  • 数据依赖性:指卷积操作的输出值不仅取决于输入信号,还取决于卷积核的权重。这种依赖性使得卷积操作可以学习到输入信号中的不同特征,并将其编码为卷积核的权重。

    Example:还是图像分类,没别哒!卷积神经网络可以通过学习不同的卷积核来提取图像中的不同特征,如边缘、纹理、形状等。

Slide Attention还可以有效地集成到各种Vision Transformer模型和硬件设备中。当在没有CUDA支持的设备上采用,如Metal Performance Shader(MPS)或iPhone 12上,本文的方法也被证明是高效的。

简单来说,本文针对以前的局部注意力模块中采用的效率低下的Im2Col函数,并从新的角度来看待这个过程。原始的Im2Col函数从列的视角生成键和值矩阵,其中每一列表示输入的某个位置为中心的局部区域。 相反,我们从行的视角重新构建键和值矩阵,并展示每一行对应于在不同方向上移动的输入特征

这种新的方法允许我们用精心设计的深度可分离卷积来替换移位操作。通过这种方式,Im2Col函数被替换为标准的卷积操作,可以更有效地实现,并且可以轻松地在不同的硬件设备上实现

局部注意力模块Slide Attention在ViT中的应用

不仅如此,为了进一步增强灵活性,本文引入了一种新的变形移位模块,将固定的键和值位置放松到局部区域内的变形特征。通过使用重新参数化技术,我们有效地增加了模型容量,同时保持了推理效率

(各位读者这个时候可以再回去看上面的那个图,可能就有点感觉了,如果还是有点迷糊,没关系,我们继续往下看就明白了)

三、原理简析

如上所分析,局部注意力存在效率问题,阻碍了其实现。

在本节中,我们首先展示低效的Im2Col函数可以从另一个角度重新解释,并证明其等效于一组简单的特征偏移。

在此基础上,我们用高效的深度可分离卷积替换了特征偏移操作,配备了一种新颖的变形移位模块,以放松固定的局部key/value位置到变形特征,

最后我们提出了一种名为Slide Attention的局部注意力模块,具有高效性和灵活性。

(其实大概就三个技术细节,最后由这三个东西组成了Slide-Attention,下面我们来一一介绍)

1 New Perspective on Im2Col

为了更便于读者理解,这里我们直接以很好理解的例子进行说明,具体的公式可以跳转至原文进行查看。

1.1 基于列的Im2Col

我们首先来回顾一下基于列的Im2Col函数的过程,先给出一个图:

局部注意力模块Slide Attention在ViT中的应用

可以看到,我们以4×4的原始像素矩阵为例,假设局部窗口的大小是3×3,中心有2×2的固定窗口,则我们会有四种方法选取这3×3的局部窗口,我们用红绿黄蓝(看着有点像黑色)来区分之,随后我们把它们排成列,排的顺序是从上到下,从左到右(也就是我们大多数人熟悉的顺序),然后对应到右边的注意力模块,如上图所示。

照葫芦画瓢地,我们可以知道,如果上述条件不变,仅仅把局部窗口的大小改成2×2,那么会有九种方法来选取,就像下面的1.2所示。

1.2 基于行的Im2Col

局部注意力模块Slide Attention在ViT中的应用

这个时候就不是排成列了,是排成行,不过顺序还是从上到下,从左到右的这么一个顺序,如上图所示。

2 Shift as Depthwise Convolution

2.1 Efficient Depthwise Convolutions

局部注意力模块Slide Attention在ViT中的应用

这就是本文的新方法了,虽然上述基于行的方法为我们提供了一种理解Im2Col函数的新方式,但简单地将特征向不同方向移动仍涉及低效的切片操作,这对于提高局部注意力的效率而言意义不大。

不过与上述方法不同的是,特征移位的效果有一种更有效的实现方式。

论文中提出了一种通过深度卷积操作来代替低效的数据切片操作的方法。

具体来说,对于每个需要进行位移的方向,使用一个特定的深度卷积核来进行卷积操作。这样,每个卷积核就相当于对应于输入图像的一个局部区域,并且这些卷积核的权重是根据位移方向进行精心设计的。通过这种方式,可以避免使用Im2Col函数中的数据切片操作,并且可以通过对不同硬件上卷积操作的优化来提高计算效率。

3 Deformed Shifting Module

基于上述方法,我们虽然通过将原始的Im2Col函数替换为深度卷积,让局部注意力的效率得到了极大的提高。然而,精心设计的卷积核权重的限制性使得这可能不是捕获多样化特征的最佳解决方案。

因此,本文提出了一种新的变形位移模块来进一步增强局部注意力的灵活性

具体而言,利用位移卷积中的设计范式,在训练过程中引入了一个并行卷积路径,其中卷积核参数是随机初始化和可学习的。与上面说的将固定卷积核用于不同方向的特征移位不同,可学习卷积核可以被解释为所有局部特征的线性组合。这类似于变形卷积网络中的变形receptive field,我们的模块实际上将固定的键和值位置”放松”到局部区域中的变形特征。

局部注意力模块Slide Attention在ViT中的应用

如上图所示,附加的卷积路径从多个方面改善了局部注意力模块:

  1. 局部注意力中的键值对由一个更灵活的模块提取,这大大提高了模型的capacity并可以捕获多样化的特征。
  2. 可学习卷积核与DCN中的变形技术类似。类似于DCN中四个相邻像素的双线性插值,我们的变形位移模块可以被视为局部窗口内特征的线性组合。这最终有助于增加空间采样位置和模型输入的几何变换。
  3. 我们使用重新参数化的技术将两个并行路径转换为单个卷积。通过这种方式,我们可以提高模型容量,同时保持推理效率。

对于训练和推理两个阶段,其实是这样进行的:

  • 训练阶段,我们维护两条路径,一条使用设计的卷积核权重向不同方向进行位移,另一条使用可学习参数以实现更高的灵活性。
  • 推理阶段,我们通过重新参数化将这两个卷积操作合并为单个路径,这可以提高模型容量同时保持推理效率。

更通俗地讲:

假设我们想要对一张图像进行局部注意力操作,以提取图像中的重要区域。传统的方法是使用Im2Col函数将局部区域转换为矩阵,并对这个矩阵应用矩阵乘法。然而,这可能会涉及到大量的数据切片操作,导致计算效率低下。

而采用深度卷积操作的方法,可以使用不同的卷积核来代替Im2Col函数,每个卷积核对应于输入图像的一个局部区域。但是,由于卷积核权重是固定的,可能会限制局部区域的特征表示能力。

因此,本文提出了变形位移模块来增强局部注意力的灵活性。这个模块包括两个并行路径:一个使用设计好的卷积核权重进行位移操作,另一个使用可学习参数进行位移操作。在训练阶段,这两个路径同时进行,可学习参数的路径可以捕获更多的局部特征信息。在推理阶段,我们使用重新参数化技术将这两个路径合并成一个单一的卷积操作,以提高模型容量并保持推理效率。

因此,通过使用变形位移模块,我们可以更灵活地捕获局部特征信息,并减少计算量。

四、结论与尾声

在本文中,我们重新审视了Local Attention机制,并通过提出一种仅使用常规卷积操作的新型Slide Attention模块来解决其效率开销问题。

一句话概括:通过用深度可分离卷积替换效率低下的Im2Col函数,并配备变形移位模块,本文的Slide Attention模块实现了高效、灵活和通用的Local Attention

FIN

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

深度学习在时间序列中的应用

2023-11-23 19:56:14

AI教程

波士顿房价预测数据探索性分析

2023-11-23 20:08:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索