分享

ResNeXt:何恺明 Facebook 升级 ResNet,提出神经网络新维度

 _为往圣继绝学_ 2017-02-14

新智元编译  

来源:AarXiv、Github

编译:文强


【新智元导读】在 ImageNet 和 COCO 2015 竞赛中,共有 152 层的深度残差网络 ResNet 在图像分类、目标检测和语义分割各个分项都取得最好成绩,相关论文更是连续两次获得 CVPR 最佳论文。ResNet 作者之一何恺明在去到 Facebook AI 实验室后,继续改进工作提出了 ResNeXt。ResNeXt 采用多分支的同构结构,只需要设定较少的超参数,并且显露出在深度、宽度之外神经网络的另一个衡量指标——“基数”(cardinality)。


本文从何恺明和他的同事 ResNeXt 论文开始,介绍最近开源的 ResNeXt 的一个Torch 实现。本文后附微软亚洲研究院实习生赵黎明写的分析文章,探索了“深度”在神经网络当中究竟带来了什么。结合阅读,有助于理解 ResNeXt “基数”对深度神经网络的意义。



论文:深度神经网络的聚合残差转换



摘要


我们提出了是一个用于图像分类的简单、高度模块化的网络结构。我们构建这个网络的方法是重复一个修建模块,这个模块聚集了一组含有相同拓扑结构的转换(transformations)。采用这种简单设计的结果,是实现了一种多分支的同构结构,只需要设定很少的一些超参数新的维度,我们将其称之为“基数”(cardinality,transformation 集合的大小),这是衡量神经网络在深度(depth)和广度(width)之外的另一个重要因素。在ImageNet-1K数据集上,我们经验表明,即使在保持复杂性的限制条件下,增加基数也能够提高分类精度。此外,当我们增加容量时,增加基数比更深或更宽更有效。我们的模型代号为 ResNeXt,是我们进入比赛 ILSVRC 2016分类任务的技术基础,我们在 ILSVRC 比赛获得了第二名。进一步调查 ImageNet-5K 集上的 ResNeXt 和 COCO 检测集,也显示比 ResNet 对应更好的结果。



论文地址:https:///pdf/1611.05431.pdf


实例:ResNeXt 算法图像分类 Torch 实现


这个库包含了 ResNeXt 算法图像分类的一个 Torch 实现。代码基于 fb.resnet.torch。


ResNeXt 是一个用于图像分类的简单、高度模块化的网络结构。我们构建这个网络的方法是重复一个修建模块,这个模块聚集了一组含有相同拓扑结构的转换(transformations)。


图:ImageNet-1K上的训练曲线。 (左):ResNet / ResNeXt-50具有相同的复杂性(约41亿FLOP,约2500万参数); (右):ResNet / ResNeXt-101具有相同的复杂性(约78亿FLOP,约44万参数)。


采用这种简单设计的结果,是实现了一种多分支的同构结构,只需要设定很少的一些超参数新的维度,我们将其称之为“基数”(cardinality,transformation 集合的大小),这是衡量神经网络在深度(depth)和广度(width)之外的另一个重要因素。


要求和设定


有关分步指南,请参阅 fb.resnet.torch安装说明。


  • 在配有 CUDA GPU 的机器上安装 Torch

  • 安装 cuDNN v4 或 v5 和 Torch cuDNN绑定

  • 下载 ImageNet 数据集并将验证图像移动到带标签的子文件夹


训练


请遵循 fb.resnet.torch的代码的一般用法,包括如何在你自己的任务中使用预训练的ResNeXt 模型。


需要指定两个新的超参数来确定瓶颈模板:


-baseWidth -cardinality


1x 复杂性配置参考表


在 8个 GPU上使用 ImageNet 训练 ResNeXt-50(32x4d):



在 8 个GPU 上重现 CIFAR 结果(例如 cifar10 的 ResNeXt 16x64d):



要使用2/4 GPU获得可比的结果,应该更改批量大小和相应的学习速率:




ImageNet 预训练模型


ImageNet 预训练模型使用 CC BY-NC 4.0 授权证书。


单幅(224×224)验证错误率



观点:深度神经网络中“深度”究竟带来了什么?


【新智元导读】在计算机视觉领域,大部分的问题都已经开始使用深度神经网络进行解决,也确实取得了广泛的成功。下面这篇文章有助于更好地理解 ResNeXt,文章转载自微软研究院AI头条,作者是微软亚洲研究院实习生。文章介绍了其团队提出的 deep fusion 概念,沿着 deep fusion的思路研究了类似 ResNet、Highway、Inception等结构的深度融合网络,探索了“深度”在神经网络当中究竟带来了什么,并提出了一个新的网络模型,在不同数据集上均取得了不错的表现。


【作者简介】赵黎明,微软亚洲研究院网络多媒体(IM)组实习生,现就读于浙江大学的计算机科学与技术学院。在微软实习的半年多,跟随微软亚洲研究院主管研究员王井东,从事了深度神经网络的研究及其在计算机视觉领域的应用。 



在计算机视觉领域,大部分的问题都已经开始使用深度神经网络进行解决,也确实取得了广泛的成功。在很多视觉任务中,如图像识别、语义分割、目标检测与跟踪、图像检索等,作为提取特征的CNN网络模型往往起到了关键的作用。我们经常见到最新的方法将基础网络换一下,性能就会得到很大的提升。因此,研究并设计一个更好的网络模型变得至关重要。



基础网络模型的结构样例


最新研究进展


经典的神经网络模型主要在“宽度”与“深度”方面进行不同程度的扩增。借助于大规模数据的训练,AlexNet、VGG-16、VGG-19等经典网络通过宽度或深度增加的参数可以有效地提升其模型的表达能力。但当网络变得越来越深,其训练难度也随之相应增加,反而会导致性能的下降。最近的ResNet和Highway Networks等方法通过引入Skip跳跃结构来试图解决极深网络在优化上带来的问题。



ResNet和Highway Networks结构的简单示意图


最新的一些研究尝试从其他角度来解释Highway、ResNet和GoogLeNet等网络结构表现优异的原因。其中我在微软实习的导师王井东研究员、实习生魏祯和张婷以及曾文君研究员提出Deep Fusion (Jingdong Wang, Zhen Wei, Ting Zhang, Wenjun Zeng: Deeply-Fused Nets. CoRR abs/1605.07716 (2016))深度融合的概念,认为不同分支的网络在中间层进行融合(加和或拼接等方式)能够(1)产生很多潜在的共享参数的基础网络,(2)同时优化信息的流动,(3)从而帮助深层网络的训练过程。



Deep Fusion深度融合最简单形式的概念示意图


我们可以发现很多有代表性的网络结构基本都可以按照深度融合的概念进行理解。除去LeNet、AlexNet、VGGNet等单分支网络,近两年提出的ResNet、Highway Networks、GoogLeNet系列等网络均可以看作是不同程度上的深度融合网络。在这个概念下,我们发现今年新的Inception-v4、FractalNet、DenseNet、ResNeXt以及我们新提出的Merge-and-Run等网络结构在融合方式上进行了更多的设计和探索,使得中间的融合次数和分支数目更多,从而得到更多的基础网络和更优的信息流动,最终取得更好的性能表现。



近期一些深度神经网络模型的基本结构示意图


康奈尔大学的Serge Belongie团队也有类似的观察与发现,他们解释ResNet其实是众多相对较浅的潜在网络的一个集成。在模型的测试阶段发现将网络中的一些模块去掉,剩下的网络模型依然具有不错的表现。



将ResNet中的某些模块移除的实验示意图


最近提出的一些新的深度神经网络方法也从侧面印证了这方面的研究,如ResNet with Stochastic Depth、FractalNet和Swapout等使用Drop-path的方法与上述移除Residual模块的研究有着异曲同工之妙。ResNet of ResNet、ResNeXt、Multi-Residual Networks和DenseNet等增加分支或路径数目的方法均得到了性能上的提升,从某种程度上验证了增加基础网络数目对整体网络模型的影响。


我们的工作


我们沿着deep fusion的思路更进一步地研究了类似ResNet、Highway、Inception等结构的深度融合网络,探索了“深度”在神经网络当中究竟带来了什么。基于研究观察与分析,我们又提出了一个新的网络模型,在不同数据集上均取得了不错的表现。


Liming Zhao, Jingdong Wang, Xi Li, Zhuowen Tu, and Wenjun Zeng. 'On the Connection of Deep Fusion to Ensembling.' arXiv preprint arXiv:1611.07718 (2016).


一、深度融合网络剖析


首先我们从网络结构和实验分析上展示这种多分支融合的网络跟多个潜在网络集成的关系。



多分支融合的网络与集成网络的结构类似


通过上图可以发现多分支融合的网络形式可以近似很多潜在网络的集成过程,区别是没有中间的信息交互,只是他们共享对应层的网络参数。通过10组不同深度的网络结构实验发现,这样一个共享参数的集成网络与带信息交互的深度融合网络性能表现很相似。



深度融合网络与集成网络的表现类似


二、深度带来更多组成网络


下一步就可以利用集成学习中的一些思路来指导我们对该类型的深度融合网络进行剖析。首先是研究其潜在的基础网络数目,很明显上面图中融合3次的网络能够组合8个基础网络,即2^3个。那么我们可以发现增加融合次数可以提升基础网络的组合数目。那么像ResNet、Highway、Inception等形式的网络,增加“深度”带来的一个影响就是增加了其潜在基础网络的组合数目(Ensemble Size)。



不同融合次数会得到不同数目的组合网络(路径)


我们也通过实验在不同深度的网络结构上验证了:增加组合数目能像传统Ensemble理论中增加Ensemble Size一样提升整体性能。



较多的组合网络数目能够取得更好的结果


我们也通过实验在不同深度的网络结构上验证了增加组合网络数目能够提升整体性能,这也与传统Ensemble理论中增加Ensemble Size能提升性能的结论相吻合。我们可以看到ResNet在增加深度的同时,极大地增加了组合数目,这也是其性能优异的原因之一。


三、深度影响整体性能


我们继续研究每一个基础组合网络,并且探索在深度融合的过程中其相互之间会产生怎样的影响。对比每个网络单独分开训练得到的模型,我们发现,深度融合网络里较深的组合网络性能得到了提升,但较浅的组合网络性能反而下降了。我们猜想在训练过程中,由于浅层的网络容易收敛,它们能够帮助深层的网络进行优化。但深度融合网络的各个潜在的组成网络是共享参数的,极深的网络可能会影响较浅网络的求解空间与难度,从而产生相互影响性能往中间靠拢的现象。



每一个单独的组成网络行为分析


既然我们认为最终的表现是一种集成的近似,那么我们是否可以着手寻找更优的组合网络以达到整体性能的提升?通过上述组合网络之间相互影响的启发,我们认为极深的网络会产生“拖后腿”的效果,反而较深但又不是特别深的“中间”网络会对结果影响比较大。上图的实验结果也验证了我们的这个想法:(a)显示了每个组成网络由于共享参数导致的性能变化;(b)显示了每个组成网络对整体网络(ensemble)的相对贡献程度。


我们依然需要浅层网络来帮助训练较深网络,而且实际设计神经网络的时候很难做到只保留中间深度的网络结构。那么一个折中的方案是把这里面最深的组成网络去掉,这样看看对结果会产生什么影响。



去除最深的组成网络(重新训练或只是测试时候去除)


上图三个方法的实验结果表明,去除极深的组成网络不会对整体性能产生太大影响,有时候反而会提高最终结果。



去除极深的组成网络不会影响太大,大部分情况下反而会提升性能


四,提出新的方法


基于上述观察,我们认为一个好的网络结构应该包含如下两个特性:足够多的潜在网络数目,以及足够好的组成网络。最简单的策略是去掉“拖后腿”的极深网络,将其变成“中间”深的组成网络。下面是我们提出的方法:



基于ResNet的形式,我们提出新的网络结构(b)和(c)


基于ResNet的形式,我们提出的Inception-Like结构与Merge-and-Run结构都去除了极深的那一条线路,但是Inception-Like的组合数目比相同参数下的ResNet要少,因此我们认为Merge-and-Run形式比较符合我们的分析与观察。最终的实验结果也确实验证了这一想法,而且跟上面的实验观察相吻合:Inception-Like没有极深网络的影响,更加容易训练或收敛,比ResNet会稍好一点,与上述的Ensemble-7与Ensemble-8的实验结果相似。Merge-and-Run结构比Inception-Like的潜在网络数目多,最终结果也是比Inception-Like的表现要好。



ResNet, Inception-Like和Merge-and-Run在不同数据集上的对比


在ImageNet结果上也验证了我们前面的论述 (我们的方法用DFN-MR表示):



我们提出的DFN-MR与ResNet在ImageNet数据集上的对比


五、总结


目前一个研究热点是在深度神经网络中引入一个新的维度:潜在的组成网络数目(Ensemble Size)。可以发现像 ResNet、Highway、Inception等网络增加“深度”的同时,实际增加了这个网络数目。此外,我们的工作发现极深网络除了能增加潜在网络数目外,对整体性能的贡献并不是最大的。反而会影响其它的组成网络,导致最终的结果受到影响。我们按照“不减少组成网络数目”和“避免极深组成网络”这两个原则,设计出新的网络结构,发现在不同数据集上总是表现优异。后续工作可以围绕当前分析的内容,最优化提出的设计指标与原则,得到更容易训练性能更好的网络模型。

后记:

个人感觉深度学习方法有时候对工程技术要求较高,往往方法不work的原因不是idea的问题,而是实现层面上对于细节的处理有差异,这也对我们学生在科研道路的前进造成了很大的困难。


为了方便大家在该领域的研究,我们将提出的模型和该论文实验中用到代码完全开源,目前维护在GitHub上,项目地址为: https://github.com/zlmzju/fusenet;


希望我们的工作能给大家在Deep Learning的研究上带来一些新的思考和帮助,期待更多更深入的探索和研究工作。




【寻找AI独角兽】新智元联手10大资本

启动2017创业大赛


AI 创业大赛由新智元与10 家主流 AI 创投机构:蓝驰创投、红杉资本中国基金、高瓴智成人工智能基金、蓝湖资本、蓝象资本、IDG资本、高榕资本、中信建投证券、明势资本、松禾远望基金携手发起,由新智元主办,北京市中关村科技园区管理委员会、中关村科技园区海淀园管理委员会支持,是一场聚合了 AI 技术领袖和投资领袖的盛会。新智元向满怀雄心的未来AI独角兽提供强大的创投资源对接机会,顶级风投 TS 等你来拿。

http://form./gthejw


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多