主干网络系列(4) -ResNeXt: 批量残差网络-作用于深度神经网络的残差聚集变换

论文地址: Aggregated Residual Transformations for Deep Neural Networks
工程代码: Github链接1    Github链接2

0. 摘要

  论文提出了一个简单并且高度模块化的网络架构以用于图片分类,构造该网络需要一个个重复的集成有一系列变换且具有同一种拓扑结构的基础模块。这种设计的策略同时引入了一个评价网络的新维度(除了深度和宽度):cardinality - the size of the set of transformations,实验表明增加cardinality比增加深度或者宽度更加有效,尤其是当加深网络反而对精度有害的时候。在ImageNet-1K数据集上的实验表明,严格控制复杂度的情况下简单地增加cardinality能够提高图像分类的准确率,也就也是说增大cardinality能够带来分类效果的提升但运算代价却远远小于增加网络的宽度或者深度。新设计的网络称为ResNeXt。

1. 简介

  目前(2016)计算机视觉识别任务正在从特征工程转向网络工程,不同于传统的人工设计特征,神经网络在训练的时候仅需要极少的人工干预就能从大规模数据中学习到能用与多种识别任务的特征,正是如此,人们的工作开始向设计能够学习到更好特征的神经网络方向转移。
  然而由于神经网络超参数的增加,架构设计也变得越来越困难,尤其是深层神经网络。VGG神经网络通过叠加相同的基础模块来设计深层神经网络,这种策略也被ResNets借鉴(ResNet也是堆叠多个具有相同拓扑结构的模块而来的)。这个简单的策略使用深度描述神经网络,超参数的选择更加简单的同时能够避免其偏向于特定的数据集(VGG-nets和ResNets已经证明了其多种数据集上的优越性)。
  和VGG-nets不同,Inception系列的模型已经证实精心设计拓扑结构能够在较低复杂度的情况下仍然取得良好的效果,其已经发展出多个不同的版本但具有一个通用的特性即split-transform-merge策略。在一个Inception模块中,输入被分为几个低维向量后通过一系列特定的滤波器然后重新融合成一个整体作为输出,这种方式能够以较小的代价取得和大型稠密网络接近的效果。
  但是Inception模型的设计涉及到许多的参数,这也就导致Inception模型总是为特定的数据集设计的,参数越多,越难迁移到新的数据集或者新任务上。
  而ResNeXt结合了VGG-nets/ResNet模块堆叠和Inception的split-transform-merge两种思想,如下图所示,两种结构具有接近的复杂度,而且基础模块具有相同的拓扑结构能够进行简单重复从而构建规模更大的网络。
主干网络系列(4) -ResNeXt: 批量残差网络-作用于深度神经网络的残差聚集变换_第1张图片

  而且这种结构有不同的描述方式,如下图所示,图b与Inception-ResNet的结构类似都是结合多个路径的输出,但是ResNeXt每个路径上的拓扑结构相同并且路径数是独立的变量,ResNeXt也可以以图c也就是group convolutions的方式来进行描述。
主干网络系列(4) -ResNeXt: 批量残差网络-作用于深度神经网络的残差聚集变换_第2张图片

  实验表明,ResNeXt-101效果比ResNet-200更好但是仅有一半的复杂度,ResNeXt也比Inception模块的设计更简单。

2. 方法

2.1 模板

  基础模块是根据VGG/ResNets设计的,ResNeXt包含一系列这样的残差模块,它们具有相同的拓扑结构并且遵循以下两个准则:

  • 处理相同尺寸的特征图,模块的超参数(宽度和滤波器尺寸)一致
  • 特征图每次下采样两倍,模块的宽度乘以2

  第二个准则能够确保所有模块的FLOPs基本一致,根据这两个准则设计的网络结构如下图所示:
主干网络系列(4) -ResNeXt: 批量残差网络-作用于深度神经网络的残差聚集变换_第3张图片

2.2 重新审视简单的神经元

  最简单的神经元能够执行内积运算,这也是全连接层和卷积层的基本操作,其可以表示为如下公式:
∑ i = 1 D ω i x i \sum^D_{i=1}\omega_ix_i i=1Dωixi

  也可以图示为:
主干网络系列(4) -ResNeXt: 批量残差网络-作用于深度神经网络的残差聚集变换_第4张图片

  以上操作可以看作splitting, transformaing和aggregating:

  • Splitting: 向量x被分开为多个低维向量
  • Transforming:低维向量的变换即 ω i x i \omega_ix_i ωixi
  • Aggregating:变换后的结果通过 ∑ i = 1 D \sum^D_{i=1} i=1D结合
2.3变换结果结合

  根据上面对内积操作的分析,我们将变换通过一个更通用的公式来表示,这个变换本身也可以是一个神经网络,变换并结合的操作如下所示:
F ( x ) = ∑ i = 1 C τ i ( x ) F(x)=\sum^C_{i=1}\tau_i(x) F(x)=i=1Cτi(x)

  其中 τ i ( x ) \tau_i(x) τi(x)可以是任意函数,将输入向量x分解然后变换,最终结合;C是需要结合的变换的个数即 c a r d i n a l i t y cardinality cardinality
  该论文提出了一个简单的方式来设计变换函数,即所有的 τ i \tau_i τi都具有相同的拓扑结构,这也延续了VGG的策略即堆叠具有简单形状的神经层,而且 τ i \tau_i τi具有瓶颈结构,最终结合残差函数,公式表示为:
y = x + ∑ i = 1 C τ i ( x ) y=x+\sum^C_{i=1}\tau_i(x) y=x+i=1Cτi(x)

略[4.实现细节&&5.实验结果]

欢迎扫描二维码关注微信公众号 深度学习与数学   [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]
在这里插入图片描述

你可能感兴趣的:(深度学习,神经网络)