Aggregated Residual Transformations for Deep Neural Networks 阅读笔记
1.研究背景
ResNeXt作为ResNet的衍生算法,结合了ResNet网络卷积方法的优良特性,在此基础上增加了Cardinality对卷积过程分组,这对网络模型参数的大规模增加所带来的计算困难和网络结构复杂等弊端有良好的控制和改善。经过实验比较,与 ResNet 相比,在使用相同的参数个数下,一个 101 层的 ResNeXt 网络,和 200 层的 ResNet 准确度近似,且计算量只有后者的一半。
2.算法原理
ResNeXt,同时采用 VGG 堆叠的思想和以及Inception模型的拆分-变换-合并的思想,构建深层网络如下图。 Fig1 右边 cardinality=32 ,它们的特点是每个被聚合的拓扑结构都是一样的,这种方式带来的优点是其可扩展性比较强,可以用来减轻设计模型的负担,并实现了在增加准确率的同时基本不改变或降低模型的复杂度。
Fig1. Left: A block of ResNet . Right: A block of ResNeXt with cardinality = 32, with roughly the same complexity.这种设计策略还有两种等价形式(Fig2)。Fig2(b)中的形式很像Inception-ResNet网络中的模块,不同的是每个分支都具有相同的拓扑结构;Fig2(c)采用分组卷积(grouped convolutions)的方法。
Fig2. Equivalent building blocks of ResNeXt. (a):Aggregated residual transformations, the same as Fig. 1 right. (b): A block equivalent to (a), implemented as early concatenation. (c): A block equivalent to (a,b), implemented as grouped convolutions . Notations in bold text high light the reformulation changes.3.模块机理
1.使用如VGG/ResNet网络相似的高度模块化的设计理念,网络由一系列残差block堆叠而成,并遵循两个简单的规则:
(i)如果block输出的特征图的空间尺寸相同,那么它们具有相同的超参数(宽度、滤波器尺寸等);
(ii)如果特征图的空间维度减半,那么block的宽度(通道数)加倍。
第二条规则确保了所有block的计算复杂度基本相同。
根据上述两条规则可以设计一个模板模块,网络中的所有模块都可以照此设计。这两条规则也减少了超参数的选择,让我们可以专注于考察几个关键因素即可。遵循这些规则设计的网络结构如Fig3所示。Fig3列举了ResNet-50 和 ResNeXt-50 的内部结构,最后两行数据说明二者之间的参数复杂度差别不大。
Fig3. (Left) ResNet-50. (Right) ResNeXt-502. 聚合转换:
一般的神经网络中的neuron是通过加权和来完成输入向量的分离(splitting)、转化(transformation)、整合(aggregation)。如Fig4所示:
Fig4. A simple neuron that performs inner product作者将其中的加权转化替换成更一般的函数,称之为Network-in-Neuron,式子为Fig5:
Fig5. Network-in-Neuron其中,T(x)可以是任意函数,与上述操作类似,T(x)应该包含对输入向量的分离和转化操作。C是cardinality的数目。
4.设计方法
这里作者展示了三种相同的 ResNeXt blocks(Fig2)。Fig2.a 就是前面所说的aggregated residual transformations—ResNeXt中的模块结构。Fjg2.b 类似于 Inception-ResNet,不过这里的模块都是相同的拓扑结构。Fig2.c采用的是grouped convolutions—分组卷积可以将上述模块的结构进一步简化,作者采用了这种方式并强调这三种模型的结果是等价的。
5.结果分析
(I)首先考察基数对模型性能的影响,基数参数见Fig6,训练曲线见Fig7。作者说明ResNeXt与ResNet-50/101的区别仅仅在于其中的块,直接用ResNeXt的块替换ResNet的,而其他都不变(本文中的对比方法一般是在相同的网络复杂性以及参数个数情况下,再对比其正确率)。相同层数的ResNet和ResNeXt的对比(32*4d表示32个paths,每个path的宽度为4)。
Fig6.Ablation experiments on ImageNet-1K (top):ResNet-50 with preserved complexity (~4.1 billion FLOPs); (bottom): ResNet-101 with preserved complexity (~7.8 billion FLOPs). The error rate is evaluated on the single crop of 224*224 pixesl. Fig7. Training curves on ImageNet-1K. (Left) : ResNet/ResNeXt-50 with preserved complexity (~4.1 billion FLOPs,~25 million parameters); (Right): ResNet/ResNeXt-101 with preserved complexity (~7.8 billion FLOPs, ~44 million parameters).复杂度不变的情况下,随着基数的增大错误率持续减小。ResNeXt的训练误差比ResNet的要小,说明性能的提升是来源于更强的表示能力而不是正则化。从Fig6中可以看出,当bottleneck的宽度很小时,增加基数对模型性能的提升趋于饱和,所以bottleneck宽度的选取一般不小于4d。
(II)考率增加深度/宽度/基数对网络性能的提升。具体表现见Fig8。
Fig8. Comparisons on ImageNet-1K when the number of FLOPs is increased to 2* of ResNet-101's . The error rate is evaluated on the single crop of 224*224 pixels. The highlighted factord are the factors that increase complexity.通过Fig8,可以看出增加Cardinality和增加深度或宽度的区别,增加宽度就是简单地增加filter channels。第一个是基准模型,增加深度和宽度的分别是第三和第四个,可以看到误差分别降低了0.3%和0.7%。但是第五个加倍了Cardinality,则降低了1.3%,第六个Cardinality加到64,则降低了1.6%。显然增加Cardianlity比增加深度或宽度更有效。
(III)作者还就此算法与其他热门的算法结果进行对比,结果近似。但此算法的运算效率高,降低模型复杂度,节约开支。
以上实验结果说明:
1.在确定参数量、网络复杂性的前提下,与 ResNet 相比, ResNeXt 结果更好,计算量更少;
2. Cardinality是一个更有效率的维度,增大Cardinality 比增大网络的宽度或者深度效果更好;
3. ResNeXt 网络结构更加简单,用一种平行堆叠相同拓扑结构的blocks代替原来 ResNet 的三层卷积的block,同时由于拓扑结构相同,仅需要少量的超参数来描述。
6.阅读收获
ResNeXt在实现模型设计时采用了新思路,不影响精度的情况下降低了模型复杂度。这可以启发我们加强在实现总体目标的过程中对路径方法等细节问题的重视。
7.参考文献
Aggregated Residual Transformations for Deep Neural Networks
网友评论