attention augmented convolutional networks 个人paper整理

深度学习计算机视觉paper系列

阅读paper介绍

Attention augmented convolutional networks
在这里插入图片描述
本文不会对文章通篇翻译,对前置基础知识也只会简单提及,但文章的核心方法会结合个人理解翔实阐述。
本文重点,self-attention position encoding
了解self-attention,可以直接跳到位置编码部分

架构介绍

众所周知,在许多计算机视觉的应用中,卷积神经网络因为良好的表现常常被当作最优选择,然而卷积神经网络在处理图像时,有自己的硬伤:在一个时刻下,只会关注到当前local_neighborhood,例如kernel_size=2X2的filter,在扫过一遍image的过程中,第一个被选中的2X2的窗口A,与最后一个被选中的窗口B,我们无法获取A,B内容之间的相互位置关系。换句话来说,CNN的特点仅仅关注当前关注的窗口内容,但缺乏捕捉全局内容的能力。

要考虑到全局,常常在序列化任务中出现的self-attention是不错的想法。
由于我们处理的是图像问题,直接套用self-attention带来的最大问题是破坏了平移性,而这一点却可以用CNN弥补,所以将两者有效结合,也许可以达到我们的目的。
在这里插入图片描述
以上是文章主要架构图。
H,W,Fin是图中input的激励图(activation map)的高,宽,filter数量(厚度)。
由于文章中提到multi-head attention,Nh为head数量,dv为values深度,dk为queries和keys的深度。
为了理解,我们用简单的激励图来表示:
在这里插入图片描述
假设input的激励图如上图所示,6个fliters故其厚度为6.将此铺平就得到右边的9*6的矩阵。

在这里插入图片描述
架构图中预设为2-head attention,但这不影响理解。在解释中,我们可以先当作single-head来看,也就是上图中只存在蓝色部分。
在这里插入图片描述
在这里插入图片描述
假设6th_row为self-attention目标,并且假设Q,K,V维度相同。
在这里插入图片描述
在这里插入图片描述
这边我们通过QK得到9X9的矩阵,这里将是位置捕捉的地方(position encoding)。但在文章给的架构图中,没有提及,所以关于位置捕捉我们放在后面阐述。
刚才我们得到9X9的矩阵,其中每一column为一self-attention的target内容。
在这里插入图片描述
上图中,左表示6th_row的内容的铺平状态,将它reshape成右边蓝色部分。这里的蓝色部分是无厚度的。
在这里插入图片描述
Q与K的转置计算完成,下面是与V的计算。
在这里插入图片描述
我们当成single-head来看待,左边V矩阵可reshape成Head1矩阵。及让原来无厚度矩阵,变成有厚度的矩阵。
在这里插入图片描述
在这里插入图片描述
最终self-attention目标得到的值,将是不同深浅蓝色的sum(深浅是因为softmax求得)。
在这里插入图片描述
之后我们就可以得到其中一个self-attention target的结果。
在这里插入图片描述
所有的target将构成一个新的也正是我们想要的矩阵(图示只展示第一个target以及最后一个taget求取过程)
在这里插入图片描述
蓝红,黄绿相间表示:最终的矩阵将会加入1X1 卷积将不同head得到的attention结果进行混合。
在这里插入图片描述
刚刚通过self-attention得到的dv的维度矩阵a,此外paper中提到,初次得到的激励图会走两条支线,一条结果是刚刚提到的矩阵a,另一条会通过标准卷积操作,得到矩阵b
在这里插入图片描述
最后合并成我们想要的Fout维度的矩阵。
至此,主体架构已经结束。下面是关于position-encoding的部分。

位置编码

先前uber也有过对position的处理,不过采用的纯全局坐标表示,虽然取得想要的成绩,但理论上已经破坏CNN固有的平移等价性。
在这里插入图片描述
所以,文章中采用相对位置来解决这个问题。
position-encoding 部分,我们需要回到 先前的QK的大矩阵中。
这边也做一个简单范例阐述:
在这里插入图片描述
文章中提到的公式,其中两个S就是我们的位置信息,从公式就可以得出,位置信息的构造也应该与QK拥有相同样貌的矩阵,这里我们假设QK是6X6的矩阵(上文中是9X9矩阵,画出来字太小,就换成6X6)
由于需要弥补CNN对全局位置信息的能力,同时又不能破坏CNN特有的平移性,这里采用相对位置编码。6X6的矩阵中,坐标内容表示相对位置的变化情况。(根据公式,其实会有两个6X6矩阵,一个表示水平相对变化 ,另一个垂直相对变化,这边简略的将两个变化放在一张图上表示)
在这里插入图片描述
得到的坐标信息将会被embed为dk维度,为了与q做点积。
在这里插入图片描述
从上图我们可以知道这里的position encoding相当于在原来的QK矩阵上,一一加上我们的位置信息。

  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值