attention augmented convolutional networks 个人paper整理
【attention augmented convolutional networks 个人paper整理】
深度学习计算机视觉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矩阵上,一一加上我们的位置信息。
推荐阅读
- 卷积|吃透空洞卷积(Dilated Convolutions)
- 【CNN基础】局部响应归一化、gated convolution和gated deconv
- CNN基础|Attention机制梳理(三)——What is Attention in CV()
- seq2seq与Attention机制
- T-CNN: Tubelets with Convolutional Neural Networks for Object Detection from Videos
- Accurate Single Stage Detector Using Recurrent Rolling Convolution
- Speed/accuracy trade-offs for modern convolutional object detectors
- Look Closer to See Better Recurrent Attention Convolutional Neural Network for Fine-grained Image Re
- Self-attention计算方法
- 自然语言处理|Attention is all you need pytorch实现 源码解析03 - 模型的训练(2)- transformer模型的代码实现以及结构