码迷,mamicode.com
首页 > 其他好文 > 详细

超深度网络前沿:Going Deeper

时间:2016-07-11 12:33:00      阅读:1049      评论:0      收藏:0      [点我收藏+]

标签:

Going Deeper

1. 背景

2006年之前,整个机器学习的理论界,可以说已经是SVM(支持向量机)的天下。SVM以其良好的理论基础,优美的模型和令人舒服的算法性质,俘获了无数科研人员的心。

据说,深度学习三巨头之一的Yann LeCun,曾经与SVM的祖师爷Vapnik就SVM与神经网络发生过激烈而有趣的讨论,最终两人各持己见,各自回家睡觉。于是后边的小弟逐步形成两个“门派”。

在那段时间的争论中,Yann LeCun认可SVM作为通用的分类方法十分不错,但本质只是一个二层模型,他评价核方法“是一种包装美化过的模板匹配”。Vapnik则反驳说,SVM有非常清晰的扩展控制能力,神经网络则没有办法做这样的控制。LeCun马上又反击道:”相比用有限计算能力来计算高复杂度函数这种能力,扩展控制只能排第二。图像识别的时候,移位、缩放、旋转、光线条件以及背景噪声等等问题,会导致以像素做特征的核函数非常低效。但是对于深度架构比如卷积网络来说却是小菜一碟。”

2006年Hinton等三个大牛先后发表论文,攻克了训练深度神经网络所遇到的几个主要难题。深度网络的春天到来了。

  • 梯度耗散问题
  • 自动选择属性问题
  • 部分解决了局部极小问题。

然而,2006年之后的几年,虽然深度网络在理论界引起了更多的关注,但在工业界并没有激起什么波澜。于是,2012年,Hinton及其学生Alex参加了ILSVRC2012,设计了一个8层CNN,以超出第二名11个百分点的成绩一举夺魁。自此深度学习声名雀起。

2. 进化

自2012年之后,网络深度逐年增长,下图是ILSVRC竞赛冠军的网络层数趋势图:

技术分享

2014年,VGG和GoogleNet分别达到了19层和22层,同时精度也得到了空前提高。到2015年,Highway Networks报告了900层能够收敛。微软研究院推出的ResNet,使网络深度为152层的网络成功提高了精度,并且使得收敛层数达到1200+。2016年,又成功地将有效的网络训练层数提高到1001层。

技术分享

现在可以有信心地说,网络层数已经不再是主要问题。因为至少我们已经拥有了能够征服1000+层数的训练工具。

3. 事件

深度是必须的吗?

2013年末,多伦多大学的Lei Jimmy Ba和微软的Rich Caruana发表了一篇简单却令人深思的论文:《Do Deep nets really need to be deep?》。

在这篇论文中,作者用一种“Model compression”的方法,用一个浅层网络去模拟一个深层模型。结果得到了一个只有一层的浅层模型,却能达到与深层模型相匹配的效果。对于这个结果,作者提出,对于浅层网络而言,可能还有更好的训练算法等待着我们去发现。

然而,这个结果的另一个潜台词却是:现在的深度网络可能很多的层次都不是必要的。与其努力地去想各种办法提高训练的层数,还不如先想清楚怎么设计网络和算法,才能够更有效地利用每一层网络。

另外的一个潜在可能是宽度。对网络的每一层,并不一定越宽越好。至少我们可以减少无用的宽度,从而能够更高效地利用计算资源。

GoogleNet v.s VGG

虽然前文提到两位作者颇有苦口婆心的“风范”,但是所有人几乎依然义无反顾地投身于“Go Deeper”的滚滚洪流。

GoogleNet同时在深度和宽度两方面给出了创新技术。在深度上,通过在网络中间增加两个SoftMax,从而加强反向传播的梯度,尽量利用低层次的特征来实现一定程度的分类,从而加快收敛速度。在宽度上,使用了不同宽度的核。特别是1×1的卷积核,很有创意。

VGG则比较实在,除了使用多种宽度的核,没有多少“奇技淫巧”。也正因为实在,所以训练速度慢,模型参数量大。相比GoogleNet,其模型参数要大7倍左右。然而,值得一提的是,虽然VGG本身没有什么新意,但是后来的研究者在其基础上,发展了 Bath Normalization、PreLu等技术手段,推动了研究的进一步发展。

  • GoogleNet:《Going deeper with convolutions》,2014.09
  • VGG:《Very Deep Convolutional Networks for LargeScale Image Recognition》
  • 《Batch normalization: Accelerating deep network training by reducing internal covariate shift》. ICML2015, S.Ioffe & C.Szegedy.

突破:平民的逆袭

更加引人注目的突破来自于瑞士(一个在机器学习领域一点都不引人注目的国家)。三位作者在ICML2015提交了一篇论文,吹响了向更深层网络进军的号角。这篇论文即著名的《Highway Networks》。

在这篇文献中,作者指出,利用他们设计的网络,最多能够训练900层的神经网络(虽然层数增长并没有改进结果,但证明了“我能”)!他们还在论文中给出了最深达100层的Highway Network的收敛情况:

技术分享

据作者描述,受到LSTM网络的启发,他们把原有的训练函数

y=H(x,WH)

扩展为
y=H(x,WH)?T(x,WT)+x?(1?T(x,WT))

其中,H是激活函数,T是仿射变换。

但是,为什么这样就可以呢?到底是哪一部分“触摸到了上帝的脚丫”?很可惜文章中没有给出太多有价值的分析。但是,人应该知足。这已经够好了,不是吗?

ResNet:魔龙的狂舞

故事发生在2015年12月。

小人物的文章改变了世界。人们终于发现,仅靠简单的堆积网络层数,并不能得到更多。支持这个论断的实验数据不断出现:
技术分享

技术分享

微软研究院Jian Sun研究组发布了一款叫做 Residual Network 的深度网络学习机器,用来识别图像。他们一举将网络层数推到了152层,并且在主流数据集上取得了良好效果。同时他们训练了一个超过1200层的网络,并用来与152层网络做对比。参见

Kaiming He, Xiangyu Zhang,Shaoqing Ren, &Jian Sun. “Deep Residual Learning for Image Recognition”. CVPR 2016

让我们来看看,所谓的ResNet,到底是什么样子。

正常的网络是这样的单元结构:

技术分享

ResNet的单元结构是这样的:

技术分享

再对比一下全貌吧(真的很长,看个头部意思下就算了……):

技术分享

结果呢?总体来说还是很不错的。

技术分享

几个月后,小组又在文章《Identity Mappings in Deep Residual Networks》中,对ResNet的情况进行了更加详尽深入的理论分析。同时有给出更具有震撼力的结果:1000层级别的网络发挥了威力,进一步提高精度。

技术分享

技术分享

同时,借助理论分析得到的结果,找到了有效的方法,又反过来提高了ImageNet数据集200层网络的精度。该结果得到了FaceBook的独立验证,证明有效。如下:

技术分享

4. 螺旋

唯物主义哲学说,事物是螺旋发展的。

轮回

2016年的三四月份,马上就到了传说中的“猴年马月”,似乎注定是个多事之秋。Caruana 等人经过两年打磨的研究结果再次出炉:《Do Deep Convolutional Nets Really Need to be Deep(Or Even Convolutional)?》

他们这次的结论是:

  • 原来的结论还对:参数少了精度上不去。
  • 卷积层必须得有,而且一两层没用,至少得三层。
  • 深度网络依然有很多是浪费的,本可以更浅更小。

看上去一切又回到了原点。但是并不是。我们知道了,卷积层很重要,甚至必不可少。毕竟我们的认识又往上走了一点点。

曙光

在几个月中,ResNet似乎独领风骚。但是由于其理论分析上的缺失,反而给予了其他人更进一步探究的动力。芝加哥大学的三位学者,也在2016年三月这个时间点发表了一篇力作:《FractalNet: Ultra-Deep Neural Networks without Residuals》。

这篇文章对于ResNet给出了一个令人诧异的结论:FractalNet demonstrates that path length is fundamental for training ultra-deep neural networks; residuals are incidental.

同时,还给出了二者都能够有很好地训练精度,并且能够训练深层网络的原因:Key is the shared characteristic of FractalNet and ResNet: large nominal network depth, but effectively shorter paths for gradient propagation during training.

既然ResNet的结构是特例,那么前台词就是说,还有其它办法,可以用更少的层数达到同样的效果。果然作者在文中给出的例子证明了这件事。

分形网络,作为一个框架,在理论上真的是很美。

技术分享

在训练方法上,作者给出了Drop-Path训练方法。

技术分享

5. 尾声

神经网络从浅到深,再到更深,再到超深的日子已经过去。后边,大概我们要想办法把深的网络变浅了。

这也是一个螺旋,也是一种轮回。

先把书读厚,再把书读薄,也恰恰是这个道理吧。

超深度网络前沿:Going Deeper

标签:

原文地址:http://blog.csdn.net/abcd302/article/details/51866420

(0)
(3)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!