ICLR 2020 | 抛开卷积,multi-head self-attention能够表达任何卷积操作
近年来很多研究将nlp中的attention机制融入到视觉的研究中,得到很不错的结果,于是,论文侧重于从理论和实验去验证self-attention可以代替卷积网络独立进行类似卷积的操作,给self-attention在图像领域的应用奠定基础
论文: On the Relationship between Self-Attention and Convolutional Layers

Introduction
transformer的提出对NLP领域的研究有很大的促进作用,得益于attention机制,特别是self-attention,会考虑词间的相似性,对当前词进行加权输出。受到词间关系学习的启发,self-attention也开始用于视觉任务中,但大都是attention和convonlution的结合。Ramachandran在19年的研究中,用full attention model达到了resnet baseline的精度,模型参数和计算量相比卷积网络减轻了不少
因此,论文主要研究self-attention layer在图片处理上是否能达到convolutional layer的效果,贡献如下:
- 在理论层面,论文通过构造性证明self-attention layers能够替代任何卷积层
- 在实际层面,论文通过构造multi-head self-attention layer进行实验,证明attention-only架构的前几层的确学习到了关注query pixel附近的g网格区域特征
Background on attention mechanisms for vision
The multi-head self-attention layer
定义$X\in \mathbb{R}^{T\times D_{in}}$为输入矩阵,包含$T$个$D_{in}$维的token,在NLP中,token对应着序列化的词,同样地也可以对应序列化的像素


self-attention layer从$D_{in}$到$D_{out}$的计算如公式1,2所示,$A$为attention scores,softmax将score转换为attention probabilities,该层的参数包含查询矩阵(query matrix)$W_{qry}\in \mathbb{R}^{D_{in}\times D_k}$,关键词矩阵(key matrix)$W_{key}\in \mathbb{R}^{D_{in}\times D_k}$,值矩阵(value matrix)$W_{val}\in \mathbb{R}^{D_{in}\times D_{out}}$,都用于对输入进行变化,基本跟NLP中的self-attention一致

因为只考虑相关性,self-attention一个很重要的属性是,不管输入的顺序如何改变,输出都是不变的,这对于希望顺序对结果有影响的case影响很大,因此在self-attention基础上为每个token学习一个positional encoding参数,$P\in \mathbb{R}^{T\times D_{in}}$为包含位置信息的embedding向量,可以有多种形式

这里采用multiple heads版本的self-attention,每个head的参数矩阵都不一样,能够提取不同的特征,$N_h$个head输出$D_h$维结果concat后映射成$D_{out}$维的最终输出,两个新参数,映射矩阵(projection matrix)$W_{out}\in \mathbb{R}^{N_hD_h\times D_{out}}$,偏置$b_{out}\in \mathbb{R}^{D_{out}}$
Attention for images


卷积是最适合神经网络的图片操作方法,给予图片$X\in \mathbb{R}^{W\times H\times D_{in}}$,卷积在$(i,j)$的操作如公式5,$W\in \mathbb{R}^{K\times K\times D_{in}\times D_{out}}$,$b\in \mathbb{R}^{D_{out}}$,K为卷积核的大小

在图片上应用self-attention,定义查询像素和关键词像素$q,k\in[W]\times [H]$,输入的向量大小为$X\in \mathbb{R}^{W\times H\times D_{in}}$为了保持一致性,用1D的符号来代表2D坐标,比如$p=(i,j)$,用$X_p$代表$X_{ij}$,用$A_p$代表$A_{ij}$
Positional encoding for images
位置编码目前主要有两种,分别是绝对位置(absolute)编码和相对(relative)位置编码

在绝对位置编码中,每个像素拥有一个位置向量$P_p$(学习的或固定的),于是公式2可以转换为公式7

相对位置编码的核心是只考虑查询像素和查询像素之间的位置差异,如公式8,大体是将公式7的每一项的绝对位参数改为相对位置参数。attention scores只跟偏移$\delta:=k-q$,$u$和$v$是learnable参数,每个head都不一样,而每个偏移的相对位置编码$r_\delta\in \mathbb{R}^{D_p}$是head共享的。关键词权重分成了两部分,$W_{key}$属于输入,$\widehat {W}_{key}$属于偏移

公式9称为二次编码(quadratic encoding),参数$\Delta{(h)}=(\Delta_1{(h)},\Delta_2{(h)})$和$\alpha{(h)}$分别代表中心点以及attention区域的大小,都是通过学习得来的,而$\delta=(\delta_1,\delta_2)$则是固定的,代表查询像素和关键词像素的相对位移
Self-attention as a convolutional layer

定理1,对于multi-head self-attention,$N_h$个head,每个head输出$D_h$维,整体最终输出$D_{out}$,相对位置编码$D_p\ge 3$维,可以表示任何卷积,核大小为$\sqrt{N_h}\times \sqrt{N_h}$,output channel为$min(D_h,D_{out})$
对于output channel不是固定$D_{out}$,论文认为当$D_h<D_{out}$时,$W_{out}$相当于一个升维操作,这个操作的特征提取不能代表原始卷积的属性,实际中,一般采用$D_h=D_{out},$这里是我的个人理解,可能有错误

上面的定理表明,在选择适当的参数后,multi-head self-attention layer可以表现得跟卷积层一样,每个head的attention score关注不同偏移距离的像素,偏移值分别在集合$\Delta_K={-\lfloor K/2\rfloor,...,\lfloor K/2\rfloor}$内,这样整体就类似于$K\times K$核,如图1所示
卷积神经网络不止卷积核大小这个超参,还有很多其它超参,这里论文对输出的数值的一致性上进行了解释:
- Padding: multi-head self-attention layer默认使用"SAME"的填充模式,而卷积层会减小K-1个像素的图片大小,因此,为了减少边界影响,可以对卷积图片进行$\lfloor K/2\rfloor$的零填充
- Stride: 卷积神经网络的步长可以认为是在卷积后面加入一个pooling操作,而Theorem 1默认步长为1,但可以在后面接个pooling达到相同的结果
- Dilation: 因为multi-head self-attention可以设置任意的偏移值,因此也可以代表空洞卷积
Experiments

实验的主要目的在于验证self-attention进行类似卷积的操作,以及self-attention在实际中是否学习到了类似卷积的属性,包含3种类似的attention,分别为quadratic embedding,learned embedding和learnded embedding + content,具体可以看作者开源代码的attention score计算部分。根据作者的解答,前两种都对应于代码的第一种注释,区别在前者按照公式9来计算$r_{\delta}$,后者则是完全随机学习来的,最后一种则对应注释的第三种
Implementation details
搭建一个包含6层multi-head self-attention的神经网络,实验主要和标准ResNet18对比,固定的图片输入,最后使用average pooling将结果送给分类器

结果如图2和Table1所示,ResNet收敛更快,但不能确定这是卷积固有的属性还是结构优化带来的结果,由于实验的结构还是很naive的,所以会存在差距,通过一些优化手段应该可以解决
Quadratic encoding
论文进行实验验证公式9的相对位置编码$r_{\delta}$是否学习到了类似卷积的操作,实验使用9个head来模拟$3\times 3$卷积操作

从图3可以看出, 网络第四层中各head的位置变化,在经过优化后,各head关注的pixel形式类似于grid的分布,可见的确学到了类似卷积核的操作

图4则展示了不同层的head分布,可以看到层1和2更关注local区域,而层3-6更关注更大的区域
Learned relative positional encoding

首先,论文去除了与输入数据相关的attention内容,仅考虑公式8的最后一项进行统计,结果如图5所示,层1-3非常接近查询区域,而深层数据则更关注整图的信息

接着使用论文对positional attention和content-based attention进行了分析$(q^\intercal r+q^\intercal k)$,将100张图的attention probabilities进行了平均结果如图6所示。在层2和3中,尽管输入的数据不一样,但一些head学到了去关注查询像素附近的特定区域的像素这一行为,与卷积操作十分类似,而其它的head则使用了更多的content-based attention。在实际中,图6中的localized attention patterns是随着查询像素移动的,这与卷积操作更加类似,想请可以看 https://epfml.github.io/attention-cnn/
CONCLUSION
论文展示了self-attention layers可以表示任意convolutional layer的行为,以及full-attentional模型能够学会如何结合local behavior和基于输入内容global attention。在未来,可以将卷积网络的优化方法迁移到full-attention模型上,应用于不同数据领域的模型,例如图像,文字和时间序列
感谢
在论文阅读期间遇到了很多问题,给作者发了邮件后,很耐心地回答了我的问题,在这里十分感谢作者Jean-Baptiste Cordonnier
参考内容
写作不易,未经允许不得转载~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

ICLR 2020 | 抛开卷积,multi-head self-attention能够表达任何卷积操作的更多相关文章
- 深度学习原理与框架-Tensorflow卷积神经网络-卷积神经网络mnist分类 1.tf.nn.conv2d(卷积操作) 2.tf.nn.max_pool(最大池化操作) 3.tf.nn.dropout(执行dropout操作) 4.tf.nn.softmax_cross_entropy_with_logits(交叉熵损失) 5.tf.truncated_normal(两个标准差内的正态分布)
1. tf.nn.conv2d(x, w, strides=[1, 1, 1, 1], padding='SAME') # 对数据进行卷积操作 参数说明:x表示输入数据,w表示卷积核, stride ...
- CNN中各类卷积总结:残差、shuffle、空洞卷积、变形卷积核、可分离卷积等
CNN从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个比一个轻量.我下面会对近几年一些具有变革性的工作进行简单盘点,从这些充满革新性的工作中 ...
- 【MMT】ICLR 2020: MMT(Mutual Mean-Teaching)方法,无监督域适应在Person Re-ID上性能再创新高
原文链接 小样本学习与智能前沿 . 在这个公众号后台回复"200708",即可获得课件电子资源. 为了减轻噪音伪标签的影响,文章提出了一种无监督的MMT(Mutual Mean-T ...
- 深度学习原理与框架-卷积神经网络基本原理 1.卷积层的前向传播 2.卷积参数共享 3. 卷积后的维度计算 4. max池化操作 5.卷积流程图 6.卷积层的反向传播 7.池化层的反向传播
卷积神经网络的应用:卷积神经网络使用卷积提取图像的特征来进行图像的分类和识别 分类 相似图像搜索 ...
- [DeeplearningAI笔记]卷积神经网络1.9-1.11池化层/卷积神经网络示例/优点
4.1卷积神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.9池化层 优点 池化层可以缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性. 池化层操作 池化操作与卷积操作类似 ...
- 卷积神经网络(CNN)与特殊的卷积
各种卷积操作的可视化的显示形式:GitHub - vdumoulin/conv_arithmetic: A technical report on convolution arithmetic in ...
- SEPC:使用3D卷积从FPN中提取尺度不变特征,涨点神器 | CVPR 2020
论文提出PConv为对特征金字塔进行3D卷积,配合特定的iBN进行正则化,能够有效地融合尺度间的内在关系,另外,论文提出SEPC,使用可变形卷积来适应实际特征间对应的不规律性,保持尺度均衡.PConv ...
- 卷积神经网络(CNN)在语音识别中的应用
前言 总结目前语音识别的发展现状,dnn.rnn/lstm和cnn算是语音识别中几个比较主流的方向.2012年,微软邓力和俞栋老师将前馈神经网络FFDNN(Feed Forward Deep Neur ...
- ACNet:用于图像超分的非对称卷积网络
编辑:Happy 首发:AIWalker Paper:https://arxiv.org/abs/2103.13634 Code:https://github.com/hellloxiaotian/A ...
随机推荐
- Machine-learning-DecisionTree
前言 决策树是一种自上而下,对样本数据进行树形分类的过程,由结点和有向边组成.结点分为内部结点和叶结点,其中每个内部结点表示一个特征或属性,叶节点表示类别.从顶部根节点开始,所有样本聚在一起,经过根节 ...
- FastDfs安装文档
安装顺序 libfastcommon fdfs_tracker ==> 依赖:Gcc.libevent.perl fdfs_storage FastDFS-nginx-module nginx ...
- 从0开发3D引擎(十):使用领域驱动设计,从最小3D程序中提炼引擎(上)
目录 上一篇博文 下一篇博文 前置知识 回顾上文 最小3D程序完整代码地址 通用语言 将会在本文解决的不足之处 本文流程 解释本文使用的领域驱动设计的一些概念 本文的领域驱动设计选型 设计 引擎名 识 ...
- jdbc Template 存储过程 返回多个结果 ,out 输出参数
public ReportVo getReport() { //执行存储过程 ReportVo reportVo=jdbcTemplate.execute(new CallableStatementC ...
- [面试专题]Web缓存详解
Web缓存详解 标签(空格分隔): 缓存 缓存之于性能优化 请求更快:通过将内容缓存在本地浏览器或距离最近的缓存服务器(如CDN),在不影响网站交互的前提下可以大大加快网站加载速度. 降低服务器压力: ...
- 前端每日实战:114# 视频演示如何用纯 CSS 和混色模式创作一个 loader 动画
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MqYroW 可交互视频 此视频是可 ...
- Let’s Encrypt https证书安装
我的博客: https://www.seyana.life/post/15 现在已经有很多的免费ssl证书提供商,国内的也有, 不过国内政策要求还要把key给他们, 我们还是用Let's Encryp ...
- idea 2018.1激活方法
之前用的idea都是2017版本的,现在已经四月份了,对于2018年1月份的版本应该可以放心的用了. 在这里,仅提供2018版本的激活码. 至于安装步骤,这里省略一千个字...... 下面是具体的激活 ...
- [2020.03]Unity ML-Agents v0.15.0 环境部署与试运行
一.ML-Agents简介 近期在学习Unity中的机器学习插件ML-Agents,做一些记录,用以简单记录或交流学习. 先简单说一下机器学习使用的环境场景:高视觉复杂度(Visual Complex ...
- 峰哥说技术:10-Spring Boot静态资源处理
Spring Boot深度课程系列 峰哥说技术—2020庚子年重磅推出.战胜病毒.我们在行动 10 峰哥说技术:Spring Boot静态资源处理 今天我们聊聊关于 Spring Boot 中关于静 ...