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

【新智元导读】在 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://arxiv.org/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_era)

原文发表时间:2017-02-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

学界 | 腾讯 AI Lab 详解16篇 ICML 2018 入选论文

7月10日至15日,第 35 届国际机器学习会议(ICML 2018)将在瑞典斯德哥尔摩举行。ICML是机器学习领域最顶级的学术会议,今年共收到2473篇投递论...

16930
来自专栏量子位

图像风格迁移(Neural Style)简史

作者:李嘉铭 Northwestern University | CS 量子位 已获授权编辑发布 面向读者:没有或有一定机器学习经验并对Prisma之类的app...

42870
来自专栏腾讯高校合作

ICML 2018 | 腾讯AI Lab详解16篇入选论文

21620
来自专栏TensorFlow从0到N

TensorFlow从1到2 - 1 - 深度神经网络

上一主题《TensorFlow从0到1》介绍人工神经网络的基本概念与其TensorFlow实现,主要基于浅层网络架构,即只包含一个隐藏层的全连接(FC,F...

493110
来自专栏DevOps时代的专栏

特征工程方法综述

随着我们底层特征库中特征数目的不断增长,如何组合特征,如何针对不同场景选择适合的特征,如何评估特征优劣?这些问题已经日益凸显,所以这次想梳理现有的特征工程方法,...

3.4K20
来自专栏专知

【经典重读】机器学习的那些事

【导读】现在以深度学习、强化学习、GAN等为代表的算法模型技术发展方兴未艾。在追随这些前沿技术同时,我们也需要对机器学习的基本概念的进行理解,如“学习=表示+评...

35650
来自专栏新智元

【深度学习再突破】让计算机一眼认出“猫”:哈佛提出新高维数据分析法

【新智元导读】目前,还没有人能够真正理解深度网络在目标分类任务方面的运行方式和原理。主要原因是对深度网络在分类任务中所做的“工作”还没有一个很好的衡量标准,一篇...

8610
来自专栏zaking's

编程运动——无监督深度学习网络

几个月前,我们开始讨论有关深度学习以及它在自然语言方面的一些相关问题。但是,在过去的几个月里,由于读者的一些其他要求,我们似乎有些跑题了。从本月起,我们会再度探...

41470
来自专栏华章科技

机器学习入门科普:监督学习和无监督学习都是什么?都能干什么?

学习能力是动物特别是人特有的,根据达尔文的理论,它也是所有物种生存和进化的关键要素。机器虽然不能自主进化,但似乎也遵循同样的规律。

5420
来自专栏AI科技大本营的专栏

迁移学习到底是什么?让我们来解读一下杨强、Bengio和龙盛明的论文

作者 | 王晋东不在家 《小王爱迁移》之一:迁移成分分析(TCA)方法简介 之前整理总结迁移学习资料的时候有网友评论,大意就是现在的类似资料大全的东西...

2.2K50

扫码关注云+社区

领取腾讯云代金券