Aggregated Residual Transformations for Deep Neural Networks
原文地址:Aggregated Residual Transformations for Deep Neural Networks
文章目录
生词:
单词 | 释义 |
---|---|
topology | 拓扑 |
aggregate | 聚合 |
cardinality | 基数 |
minimal | 最小的;极简主义 |
compelling | 引人入胜的,难以抗拒的 |
concrete | 具体的,有形的,钢筋混 |
decomposition | 分解;腐烂 |
harnesses | 挽具,马具,保护带 |
recast | 重新安排,重新浇铸 |
succinct | 简洁的 |
proportional | 成比例的 |
Abstract
Resnext的网络结构聚合了一系列的block,这些block都是基于同样的拓扑结构的。按照这个思路,模型的机构是一个同质、多分枝的网络结构,并且只有很少的参数需要去设置。branch个数的作为一个新的维度,我们成为cardinality,中文基数。
实验表明,即使是在限制了复杂度的情况下,增加cardinality也可以增加分类的准确率。更确切的说,增加cardinality比加深或者加宽模型深度更加有效。
Introduction
计算机视觉的任务已经从"feature engineering"转向"network engineering"。初期的时候网络结构不会太深,所以特征的学习需要极少的人工干预,现在随着网络层数的增多,各类超参的数量爆炸式的增长,所以网络结构的设计变得越来越难。
我们都知道vgg通过堆叠简单的、具有相同尺寸的building-block来构建更深的网络,ResNet也继承了vgg的工作,采用相同的堆叠方式来构建模型,这一简单的规则带来一个问题:超参数选择的自由度减少了,并且深度变成了神经网络中的一个essential dimension。但是,作者认为这种简单的规则是可以降低超参数过度自适应数据集的风险的。
不同于vgg网络,Inception系列的模型已经证明了,经过精心设计的拓扑结构可以在很低复杂度的情况下依旧达到很好的效果。虽然Inception模型已经升级换代了好几次,但是最基本的策略依旧是:split-transform-merge。这个策略首先将input通过1x1的卷积映射到不同的低维embedding,最后通过一些3x3或者5x5的卷积核来改变形状,然后通过concatenation来merge。可以被证明这种结构的解空间是单独层(例如5x5的卷积核)在高维空间操作的解空间的子空间。这种做法当然是有弊端的,由于有过多复杂的参数,例如filter的个数,size等,对于每一种transformation都需要定做,虽然仔细的组合对于特定数据集能产生很好的效果,但是对于新的数据集却需要重新调整超参数。
在本文中,作者两种结构都用,既用了VGG/ResNets’中的简单堆叠,又探索了split-transform-merge策略的更加简单的使用方式。和Inception不通,每一个module里面的transformations不需要逐个精细的设计,而是统一采用一样的拓扑结构,这样的话就可以直接拓展到任何数量的transformations而不需要额外的特殊设计。具体见下图,右边就是文章中的一个module结构
下面是作者提出的三种resnext block的等价形式:
3(a)是最初始的形式,3(b)是resnet-inception的类似形式,对所有的transications进行concatenate后再进行卷积,和Inception不同的是所有的path都是一样的shape。3©是简要格式,中间层采用了组卷积。
作者通过实验证明,cardinality这个参数在提升准确率的性价比上高于增加模型的宽度和深度。
在成果上,resnext比resnet-101/152,ResNet-200,Inception-v3和Inception-ResNet-v2的表现都更加优异。实验中,一个101-layer的ResNeXt就比200层的ResNet效果好,并且复杂度只有其50%。作者用ResNeXt在ILSVRC 2016的图像分类任务上拿到了第二名。并在ImageNet-5K数据集上和COCO物体检测任务上拿到了比ResNet更好的成绩。
Related Work
Multi-branch convolutional networks
Inception系列的模型有很多成功的多分枝网络。ResNet也可以堪称一个简单的二分支网络,其中一个分支是identity mapping。Deep neural decision forests是一个树形的多分枝网络。
Group convolutions
最早的组卷积应该是AlexNet中提出的,但是这篇文章提出组卷积的目的在于把模型分布运行在两个GPU上。就目前而言,有很少的迹象表明组卷积有提升模型准确率的优点。一个比较特殊的例子就是channel-wise convolutions。
Compressing convolutional networks
Decomposition:在空间或者通道上对网络进行分解,是一个减少网络复杂度的有效手段。
Ensembling
将一系列独立的模型进行平均是用来提升准确率的有效手段,这种方式被广泛的应用于竞赛。我们的模型中虽然聚合了一堆transformations,但是不能称为ensemble,因为各个模块不是独立训练而是联合训练的。
Method
Template
网络是通过堆叠一系列的residual-block组成的。这些blocks有相同的拓扑结构,并且满足下面两个简单的原则:
- (i) 如果产生相同size的map,那么这些blocks的超参数相同,例如宽高度,卷积核个数。
- (ii) 每次spatial map以2为倍数下采样,blocks的宽度就增加一倍。这条规则是为了确保计算复杂度相同。这里的block的宽度指的是block-neck中,把原始输入做降维时卷积核的个数。
根据这两个原则,我们只需要设计一个template module,那么整个网络就可以被确定下来。这两个原则极大的缩小了网络的搜索空间,让设计网络的人只需要关注极少的几个变量,下面事物网络结构和resnet的对比图,两者的FLOPS基本相当。
Revisiting Simple Neurons
我们以最简单的线性神经元为例,这种split-transform-merge方法我们可以拆分成split,transforming和aggregating。
- split:就是把x拆分成一个个独立的xi
- transforming:把拆分后的低纬表示进行转换。在这里就是wixi。
- aggregating:把所有的transformations都aggregate,这里就是加和操作。
Aggregated Transformations
根据上述对于线性网络的分析,我们再来看wixi,假如我们把它看成一个更加抽象的方程,那么是不是就可以看成为Network-in-Neuron,这个说法是相当于Network-in-Network而言的,Network-in-Network主要指depth这个维度,而Network-in-Neuron主要是指cardinality这个维度。
把transformations看成一般式的话,那这个aggregated transformations就可以表达成如下的公式:
F ( x ) = ∑ i = 1 C T i ( x ) F(x)=\sum_{i=1}^{C}T_{i}(x) F(x)=i=1∑CTi(x)
其中 T i ( x ) T_i(x) Ti(x)可以看成是任意的方程,其目的是把x映射到一个相对低维的空间并做转换,也就是split和transformations。