分享到微博 分享到人人 分享到LinkedIn 分享到Email
深度神经网络中深度究竟带来了什么?

作者:赵黎明

导师:微软亚洲研究院主管研究员 王井东

作者简介

赵黎明

​微软亚洲研究院网络多媒体(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的研究上带来一些新的思考和帮助,期待更多更深入的探索和研究工作。