本文主要是介绍ResNeXt - Aggregated Residual Transformations for Deep Neural Networks,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《Aggregated Residual Transformations for Deep Neural Networks》是Saining Xie等人于2016年公开在arXiv上:
https://arxiv.org/pdf/1611.05431.pdf
创新点
1.在传统Resnet基础上采用group convolution,在不增加参数量的前提下,获得更强的representation能力
命名
本文提出了Resnet的改进网络——ResNeXt,之所以命名为ResNeXt,是因为提出了一个新的参数——Cardinality,作者认为Cardinality是从另外一个维度衡量网络模型,所以命名为ResNeXt (suggesting the next dimension)
一、Introduction
图像识别任务从以往的“搞基”(特征工程)转向设计新的网络模型以获得更好的representation。设计网络有太多超参数,如(width,filter-size, strides等)。VGG这样采用了一个简单的策略,很奏效,即:stacking building blocks of the same shape,也就是重复的使用相同的block。作者认为,这个策略可以减少网络的over-adapting. Inception系列的优点在于精心设计网络的拓扑结构,最重要的特点在于 split-transform-merge 思想。
split-transform-merge操作的优点: The split-transform-merge behavior of Inception modules is expected to approach the representational power of large and dense layers, but at a considerably lower computational complexity。
二、Related work
蜻蜓点水般的介绍了一些关于Multi-branch convolutional networks ;Grouped convolutions;Compressing convolutional networks. Ensembling.的工作,我认为最重要的是这一句:
But we argue that it is imprecise to view our method as ensembling, because the members to be aggregated are trained jointly, not independently.
(大家自行体会~~哈哈)
三、Method
3.1 template
借鉴VGG和Resnet,设计block遵循以下两个规则:
第一是:若block输出的空间尺寸一样,则这些block拥有相同的超参数(width和filter size),也就是卷积核大小一样,卷积核个数一样
第二是:每当feature map分辨率缩减一半,通道数增一倍。这个规则保证了每个block的计算复杂度几乎一致!
3.2 Revisiting Simple Neurons
作者采用单个神经元的计算模型来分析 splitting, transforming, and aggregating.
如下图所示,一个神经元的输入为X,X是一个D维的向量,神经元的输出为X与权值W的内积,即: ∑Ci=1wixi
一个神经元的操作就可以分为(1) splitting (2)transforming (3) aggregating
(1) splitting: 输入X被分为了D个部分
(2) transforming: 对于被划分的部分进行缩放,也就是用wi与之相乘
(3) aggregating: 最后把所有结果再聚集(相加)起来,得到最终输出: ∑Ci=1wixi
3.3 Aggregated Transformations
介绍了单个神经元的 splitting-transforming-aggregating,就要进行拓展了~
首先一个输入X进行splitting成C份;splitting之后对其进行transforming,这里采用Ti(x
)来表示;最后求和,即aggregating。具体公式如下: F(x)=∑Ci=1Ti(x)
这里的C就表示Cardinality ,Cardinality 意思是 the size of the set of transformations,是针对ResNeXt这类网络的一个参数,该参数可理解为分组的组数,如本文实验C=32
公式 F(x)=∑Ci=1Ti(x) 就表达了splitting-transforming-aggregating操作,则ResneXt的一个block的输出为: y=x+∑32i=1Ti(x) ,block示意图如下图所示:
第一项x表示 identity mapping,即最右边那条线;剩下的就是对x进行splitting-transforming-aggregating 操作了。这里C=32,所以是32项相加。
上图所示ResneXt的一个block还是太“臃肿”,其实可以更简洁一些,如下图所示,最终可以变化成下图(c)
先看图(a),第一行32个(256,1*1,4)表示splitting操作;第二行32个(4,3*3,4)表示transforming;
第三行以及那个+号,表示aggregating;
图(b)是将 aggregating给整合了,先将transforming得到的feature map进行concatenate,然后用(128,1*1,256)的操作进行输出;
图(c)在图(b)的基础上,进一步“简化”,将splitting操作放到了transforming里边,这样就可以用一个(256,1*1,128)对输入进行splitting的准备,经过图(c)第一行(256,1*1,128)之后获得128个feature map,再通过group convolution的操作实现spliiting,共32个group,每个group对4个feature map进行操作;
这篇关于ResNeXt - Aggregated Residual Transformations for Deep Neural Networks的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!