ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【ARXIV2204】Neighborhood attention transformer

2022-06-18 11:33:36  阅读:193  来源: 互联网

标签:transformer attention Neighborhood 卷积 论文 矩阵 token 计算


请添加图片描述

感谢B站“秋刀鱼的炼丹工坊” 的讲解,这里的解析结合了很多多的讲解。

论文:https://arxiv.org/abs/2204.07143

代码:https://github.com/SHI-Labs/Neighborhood-Attention-Transformer

这个论文非常简单,思想其实在之前的论文里也出现过。首先看下面这个图,标准VIT的 attention 计算是全局的,像第一图中红色的 token 和蓝色的 token 会全局的和所有的 token 进行计算。swin 是中间的两个图,第一步 token 的特征交互限制在局部窗口内。第二步窗口有shift,但 token 的特征交互仍然在局部的窗口内。最后一个图就是这个论文提出的 neighborhood attention transformer, NAT,所有 attention 的计算在 7X7 的邻域里进行。看起来和 convolution 一样,只是在一个 kernel 里面的范围内去做操作。但是和 convolution 不同的是,NAT里面是计算 attention,所以每一个 value 出来的权重是根据输入的这个值来决定的,而不是像卷积核里面那样训练好就固定的一个值。

请添加图片描述

作者还给出了 attention 计算的图示。如下图所示,对于CHW的输入矩阵,Query 是某个位置一个 1XC的向量, key 是一个 3x3xC 的矩阵,两个矩阵逐元素相乘(尺寸不同进行 broadcast ),结果是 3x3xC,最后在 C 这个维度求和,得到3X3的相似度矩阵。用这个矩阵给 value 分配权重 ,最后合并为一个 1x1xC 的向量,就是 attention 的计算结果。

请添加图片描述

作者还进行了计算复杂度的分析,可以看出,因为在局部邻域里计算注意力,计复杂度大大降低,和 swin 是基本一致的。

请添加图片描述

网络的整体架构和当前方法一样,都是4阶段。每个阶段分辨率降低一半。不过,降分辨率使用的是 步长为2的 3X3 卷积。第一步 overlapping tokenizer 使用的是2个3x3卷积,每个卷积的步长为2。

请添加图片描述

作者设计了4种网络结构,邻域大小都是7X7,具体如下:

请添加图片描述

在图像分类任务上,NAT取得了非常好的性能,如下表所示:

在 Ablation study 里面,作者对比了 postion embedding 和 attention 计算的性能差别。不过,作者模型是 81.4% ,和上面表格里的 83.2 有差异,不清楚是什么原因。

请添加图片描述

总的来说,这个论文思想非常简单,之前很多论文也体现过这个想法。但这个论文是和企业联合做的,难点应该在于 CUDA 硬件实现上,作者写了大量的CUDA代码来对 neighborhood 操作进行加速。

标签:transformer,attention,Neighborhood,卷积,论文,矩阵,token,计算
来源: https://www.cnblogs.com/gaopursuit/p/16387943.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有