作者丨小马
编辑丨极市平台

写在前面

由于Transformer对于序列数据进行并行操作,所以序列的位置信息就被忽略了。因此,相对位置编码(Relative position encoding, RPE)是Transformer获取输入序列位置信息的重要方法,RPE在自然语言处理任务中已被广泛使用。

但是,在计算机视觉任务中,相对位置编码的有效性还没有得到很好的研究,甚至还存在争议。因此,作者在本文中先回顾了现有的相对位置编码方法,并分析了它们在视觉Transformer中应用的优缺点。接着,作者提出了新的用于二维图像的相对位置编码方法(iRPE)。iRPE考虑了方向,相对距离,Query的相互作用,以及Self-Attention机制中相对位置embedding。作为一个即插即用的模块,本文提出的iREP是简单并且轻量级的。

实验表明,通过使用iRPE,DeiT和DETR在ImageNet和COCO上,与原始版本相比,分别获得了1.5%(top-1 Acc)和1.3%(mAP)的性能提升(无需任何调参)。

论文和代码地址

论文地址:

https://arxiv.org/abs/2107.14222

代码地址:

https://github.com/microsoft/AutoML/tree/main/iRPE

研究动机

Transformer最近在计算机视觉领域引起了极大的关注,因为它具有强大的性能和捕获Long-range关系的能力。然而,Transformer中的Self-Attention有一个固有的缺陷——它不能捕获输入token的顺序。因此,Transformer在计算的时候就需要显式的引入位置信息。

为Transformer编码位置表示的方法主要有两类。一个是绝对位置编码,另一个是相对位置编码。绝对位置编码 将输入token的绝对位置从1编码到最大序列长度。也就是说,每个位置都有一个单独的编码向量。然后将编码向量与输入token组合,使得模型能够知道每个token的位置信息。相对位置编码 对输入token之间的相对距离进行编码,从而来学习token的相对关系。

这两种编码方式在NLP任务中都被广泛应用,并且证明是非常有效的。但是在CV任务中,他们的有效性还没被很好的探索。因此,在本文中,作者重新思考并改进相对位置编码在视觉Transformer中的使用。

在本文中,作者首先回顾了现有的相对位置编码方法,然后提出了专门用于二维图像的方法iRPE。

方法

方法背景

绝对位置编码

由于Transformer不包含递归和卷积,为了使模型知道序列的顺序,需要注入一些关于token位置的信息。原始Self-Attention采用了绝对位置,并添加绝对位置编码p=(p1,...,pn)p=(p_1,... ,p_n)p=p1...,pn到输入token,用公式表示如下:

相对位置编码

除了每个输入token的绝对位置之外,一些研究人员还考虑了token之间的相对关系。相对位置编码使得Transformer能够学习token之间的相对位置关系,用公式表示如下:

3.2. 回顾相对位置编码

Shaw’s RPE

[1]提出一种Self-Attention的相对位置编码方法。输入token被建模为一个有向全连通图。每条边都代表两个位置之间的相对位置信息。此外,作者认为精确的相对位置信息在一定距离之外是无用的,因此引入了clip函数来减少参数量,公式表示如下:

RPE in Transformer-XL

[2]为query引入额外的bias项,并使用正弦公式进行相对位置编码,用公式表示如下:

Huang’s RPE

[3]提出了一种同时考虑query、key和相对位置交互的方法,用公式表示如下:

RPE in SASA

上面的相对位置编码都是针对一维的序列,[4]提出了一种对二维特征进行相对位置编码的方法,用公式表示如下:

相对位置编码的确定

接下来,作者引入了多种相对位置编码方式,并进行了详细的分析。首先,为了研究编码是否可以独立于输入token,作者引入了两种相对位置模式:Bias模式Contextual模式 。然后,为了研究方向性的重要性,作者设计了两种无向方法和两种有向方法

Bias Mode and Contextual Mode

以前的相对位置编码方法都依赖于输入token,因此,作者就思考了,相对位置的编码信息能否独立于输入token来学习。基于此,作者引入相对位置编码的Bias模式Contextual模式来研究这个问题。前者独立于输入token,而后者考虑了与query、key或value的交互。无论是哪种模式,相对位置编码都可以用下面的公式表示:

对于Bias模式,编码独立于输入token,可以表示成:

对于Contextual 模式,编码考虑了与输入token之间的交互,可以表示成:

A Piecewise Index Function

由于实际距离到计算距离的关系是多对一的关系,所以首先需要定义一个实际距离到计算距离的映射函数。

先前有工作提出了采用clip函数来进行映射,如下所示:

在这种方法中,相对距离大于β\betaβ的位置分配给相同的编码,因此丢失了远距离相对位置的上下文信息。

在本文中,作者采用了一种分段函数将相对距离映射到相应的编码。这个函数基于一个假设:越近邻的信息越重要,并通过相对距离来分配注意力。函数如下:

如下图所示,相比于先前的方法,本文提出的方法感知距离更长,并且对不同的距离分布施加了不同程度的注意力。

2D Relative Position Calculation

为了衡量二维图像上两个点的相对距离,作者提出了两种无向方法 (Euclidean method,Quantization method)和两种有向方法 (Cross method,Product method),如上图所示。

  • Euclidean method

在Euclidean method中,作者采用了欧氏距离来衡量两个点之间的距离,如上图a所示:

  • Quantization method

在上述的Euclidean method中,具有不同相对距离的两个距离可能映射到同一距离下标(比如二维相对位置(1,0)和(1,1)都映射到距离下标1中)。因此,作者提出Quantization method,如上图b所示,公式如下所示:

quant(⋅)quant(·)quant函数可以映射一组实数0,1,1.41,2,2.24,…{0,1,1.41,2,2.24,…}011.4122.24到一组整数0,1,2,3,4,…{0,1,2,3,4,…}01234

  • Cross method

像素的位置方向对图像理解也很重要,因此作者又提出了有向映射方法。Cross method分别计算水平方向和垂直方向上的编码,然后对它们进行汇总。编码信息如上图c所示,公式如下:

  • Product method

如果一个方向上的距离相同(水平或垂直),Cross method将会把不同的相对位置编码到相同的embedding中。因此,作者又提出了Product method,如上图d所示,公式如下所示:

有效实现

对于Contextual模式的相对位置编码,编码信息可以通过下面的方式得到:

但是这么做的计算复杂度是O(n2d)O(n^2d)O(n2d),所以作者在实现的时候就只计算了不同映射位置的位置编码,如下所示:

这样做就可以将计算复杂度降低到O(nkd)O(nkd)O(nkd),对于图像分割这种任务,k是远小于n的,就可以大大降低计算量。

4.实验

相关位置编码分析

  • Directed-Bias v.s. Undirected-Contextual

上表的结果表明了:

1)无论使用哪种方法,Contextual模式都比Bias模式具有更好的性能。

2)在视觉Transformer中,有向方法通常比无向方法表现更好。

  • Shared v.s. Unshared

对于bias模式,在head上共享编码时,准确度会显著下降。相比之下,在contextual模式中,两种方案之间的性能差距可以忽略不计。

  • Piecewise v.s. Clip.

上表比较了clip函数和分段函数的影响,在图像分类任务中,这两个函数之间的性能差距非常小,甚至可以忽略不计。但是从下表中可以看出,在检测任务中,两个函数性能还是有明显差距的。

  • Number of buckets

bucket数量影响了模型的参数,上图展示了不同bucket数量下,模型准确率的变化。

  • Component-wise analysis

从上表可以看出,相对位置编码和绝对位置编码对DeiT模型的精度都有很大帮助。

  • Complexity Analysis

上图表明,本文方法在高效实现的情况下最多需要1%的额外计算成本。

在图像分类任务上的表现

通过仅在key上添加相对位置编码,将DeiT-Ti/DeiT-S/DeiT-B模型分别提升了1.5%/1.0%/0.6%的性能。

在目标检测任务上的表现

在DETR中绝对位置嵌入优于相对位置嵌入,这与分类中的结果相反。作者推测DETR需要绝对位置编码的先验知识来定位目标。

可视化

上图展示了Contextual模式下相对位置编码(RPE)的可视化。

5. 总结

本文作者回顾了现有的相对位置编码方法,并提出了四种专门用于视觉Transformer的方法。作者通过实验证明了通过加入相对位置编码,与baseline模型相比,在检测和分类任务上都有比较大的性能提升。此外,作者通过对不同位置编码方式的比较和分析,得出了下面几个结论:

1)相对位置编码可以在不同的head之间参数共享,能够在contextual模式下实现与非共享相当的性能。

2)在图像分类任务中,相对位置编码可以代替绝对位置编码。然而,绝对位置编码对于目标检测任务是必须的,它需要用绝对位置编码来预测目标的位置。

3)相对位置编码应考虑位置方向性,这对于二维图像是非常重要的。

4)相对位置编码迫使浅层的layer更加关注局部的patch。

参考文献

[1]. Peter Shaw, Jakob Uszkoreit, and Ashish Vaswani. Self-attention with relative position representations. ACL, 2018.

[2]. Zihang Dai, Zhilin Yang, Yiming Yang, Jaime G Carbonell,Quoc Le, and Ruslan Salakhutdinov. Transformer-xl: Attentive language models beyond a fixed-length context. In ACL,2019.

[3]. Zhiheng Huang, Davis Liang, Peng Xu, and Bing Xiang. Improve transformer models with better relative position embeddings. In EMNLP, 2020

[4]. Prajit Ramachandran, Niki Parmar, Ashish Vaswani, Irwan Bello, Anselm Levskaya, and Jonathon Shlens. Standalone self-attention in vision models. arXiv preprint arXiv:1906.05909, 2019.

还在魔改Transformer结构吗?微软中山大学开源超强的视觉位置编码,涨点显著相关推荐

  1. 微软中山大学开源超强的视觉位置编码,涨点显著

    文 | 小马 源 | 极市平台 1.写在前面 由于Transformer对于序列数据进行并行操作,所以序列的位置信息就被忽略了.因此,相对位置编码(Relative position encoding ...

  2. 豪取4个SOTA,谷歌魔改Transformer登NeurIPS 2021!一层8个token比1024个还好用

      视学算法报道   编辑:小咸鱼 好困 [新智元导读]谷歌改造Vision Transformer的新作被NeurIPS 2021收录了.在这篇文章里,谷歌提出了TokenLearner方法,Vis ...

  3. 谷歌魔改Transformer登NeurIPS 2021!一层8个token更好用

    转自:新智元 目前,Transformer模型在计算机视觉任务(包括目标检测和视频分类等任务)中获得了最先进的结果. 不同于逐像素处理图像的标准卷积方法,Vision Transformer(ViT) ...

  4. 有哪些令你印象深刻的魔改Transformer?

    作者 | 汤诗雨  编辑 | 汽车人 原文链接:https://www.zhihu.com/question/349958732/answer/28728688 点击下方卡片,关注"自动驾驶 ...

  5. 【网络结构】小议如何跳出魔改网络结构的火坑

    公众号关注 "ML_NLP" 设为 "星标",重磅干货,第一时间送达! 机器学习算法与自然语言处理出品 @公众号原创专栏作者 纵横 知乎专栏 | 机器不学习 引 ...

  6. 推荐!小议如何跳出魔改网络结构的火坑(完整版)

    点击我爱计算机视觉标星,更快获取CVML新技术 本文原载于知乎,已获作者授权转载,请勿二次转载, https://zhuanlan.zhihu.com/p/108838471 昨天发布过上半部分,不少 ...

  7. 小议如何跳出魔改网络结构的火坑

    点击我爱计算机视觉标星,更快获取CVML新技术 本文原载于知乎,已获作者授权转载,请勿二次转载, https://zhuanlan.zhihu.com/p/108838471 引言 0202 年,CV ...

  8. 蒙纳士大学提出高效建模高低频信息的LITv2,在性能、FLOPs、吞吐量和显存消耗方面均优于现有Transformer结构!...

    关注公众号,发现CV技术之美 本文分享论文『Fast Vision Transformers with HiLo Attention』,由蒙纳士大学提出能够高效建模高低频信息的LITv2,在性能.FL ...

  9. 【源码级】butterfly魔改

    首页文章使用新标签页打开 官方没有提供解决方案,但是可以通过修改源码的方式进行修改. 找到主题下的layout/includes/mixins/post-ui.pug,在第16行.第19行添加targ ...

最新文章

  1. 控制-频域操作-傅里叶级数和傅里叶变换
  2. 烂泥:vcenter5.5无AD下的安装与配置
  3. HDU - 6558/概率dp(从后往前推导)
  4. [css] 举例说明attr()的使用场景
  5. oracle rman备份整库,RMAN备份恢复整个库
  6. Serverless Framework 无服务器架构
  7. mysql 禁用swap_MySQL如何避免使用swap
  8. 【php】面向过程的文件上传过程
  9. 小米路由器挂php,小米路由器mini 安装openWrt+更新源+挂载U盘+安装python
  10. 计算机组成原理ACC中文含义,计算机组成原理答案.ppt
  11. android小米卸载app,MIUI系统软件卸载工具
  12. java webp 图片处理_Java处理Webp图片格式转换的示例代码
  13. kubuntu我显示服务器,kubuntu 开启ssh 与加速连接速度
  14. 【MySQL学习笔记】电子杂志订阅表的操作
  15. Mac键盘实现Home End Page UP Page DOWN这几个键
  16. Web——软件开发实践
  17. js 解析多层json字符串
  18. pandas将dataframe的所有数据列的名称转化为大写形式(all column labels in dataframe to uppercase)
  19. 深度学习训练时GPU利用率忽高忽低问题
  20. php对接短信宝,php使用短信宝发送短信的方法

热门文章

  1. px,em, rem的区别,在项目中怎么使用rem.
  2. python技巧 使用值来排序一个字典
  3. Filter 字符编码Filter 一
  4. 多播程序设计(基于UDP协议)
  5. MMORPG大型游戏设计与开发(part3 of net)
  6. Effective C# 学习笔记(八)多用query语法,少用循环
  7. 因封杀Adobe 美司法部对苹果展开反垄断调查
  8. python数据结构与算法40题_Python数据结构与算法刷题(2)——挖掘机技术哪家强...
  9. GraphPad Prism 9 如何一次处理多张图表?
  10. Keil uvision 5 MDK 安装教程