为什么现在的CNN所有的模型都是错误的在GoogleNet,VGGNet或者AlexNet上调整的

CNN的发展史
       上一篇回顾讲的是2006年Hinton他们的Science Paper,当时提到,2006年虽然Deep Learning的概念被提出来了,但是学术界的大家还是表示不服。当时有流传的段子是Hinton的学生在台上讲paper时,台下的机器学习大牛们不屑一顾,质问你们的东西有理论推导吗?有数学基础吗?搞得过SVM之类吗?回头来看,就算是真的,大牛们也确实不算无理取闹,是骡子是马拉出来遛遛,不要光提个概念。
       时间终于到了2012年,Hinton的学生Alex Krizhevsky在寝室用GPU死磕了一个Deep Learning模型,一举摘下了视觉领域竞赛ILSVRC 2012的桂冠,在百万量级的ImageNet数据集合上,效果大幅度超过传统的方法,从传统的70%多提升到80%多。个人觉得,当时最符合Hinton他们心境的歌非《我不做大哥好多年》莫属。
       这个Deep Learning模型就是后来大名鼎鼎的AlexNet模型。这从天而降的AlexNet为何能耐如此之大?有三个很重要的原因:
大量数据,Deep Learning领域应该感谢李飞飞团队搞出来如此大的标注数据集合ImageNet;
GPU,这种高度并行的计算神器确实助了洪荒之力,没有神器在手,Alex估计不敢搞太复杂的模型;
算法的改进,包括网络变深、数据增强、ReLU、Dropout等,这个后面后详细介绍。
       从此,Deep Learning一发不可收拾,ILSVRC每年都不断被Deep Learning刷榜,如图1所示,随着模型变得越来越深,Top-5的错误率也越来越低,目前降到了3.5%附近,而在同样的ImageNet数据集合上,人眼的辨识错误率大概在5.1%,也就是目前的Deep Learning模型的识别能力已经超过了人眼。而图1中的这些模型,也是Deep Learning视觉发展的里程碑式代表。
图1. ILSVRC历年的Top-5错误率
       在仔细分析图1中各模型结构之前我们先需要了解一下深度学习三驾马车之一————LeCun的LeNet网络结构。为何要提LeCun和LeNet,因为现在视觉上这些神器都是基于卷积神经网络(CNN)的,而LeCun是CNN的祖师爷,LeNet是LeCun打造的CNN经典之作。
       LeNet以其作者名字LeCun命名,这种命名方式类似的还有AlexNet,后来又出现了以机构命名的网络结构GoogLeNet、VGG,以核心算法命名的ResNet。LeNet有时也被称作LeNet5或者LeNet-5,其中的5代表五层模型。不过别急,LeNet之前其实还有一个更古老的CNN模型。
最古老的CNN模型
       1985年,Rumelhart和Hinton等人提出了后向传播(Back Propagation,BP)算法[1](也有说1986年的,指的是他们另一篇paper:Learning representations by back-propagating errors),使得神经网络的训练变得简单可行,这篇文章在Google Scholar上的引用次数达到了19000多次,目前还是比Cortes和Vapnic的Support-Vector Networks稍落后一点,不过以Deep Learning最近的发展劲头来看,超越指日可待。
       几年后,LeCun利用BP算法来训练多层神经网络用于识别手写邮政编码[2],这个工作就是CNN的开山之作,如图2所示,多处用到了5*5的卷积核,但在这篇文章中LeCun只是说把5*5的相邻区域作为感受野,并未提及卷积或卷积神经网络。关于CNN最原始的雏形感兴趣的读者也可以关注一下文献[10]。
图2. 最古老的CNN网络结构图
       1998年的LeNet5[4]标注着CNN的真正面世,但是这个模型在后来的一段时间并未能火起来,主要原因是费机器(当时苦逼的没有GPU啊),而且其他的算法(SVM,老实说是你干的吧?)也能达到类似的效果甚至超过。
图3. LeNet网络结构
       初学者也可以参考一下Caffe中的配置文件:
https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet.prototxt
AlexNet、VGG、GoogLeNet、ResNet对比
       LeNet主要是用于识别10个手写数字的,当然,只要稍加改造也能用在ImageNet数据集上,但效果较差。而本文要介绍的后续模型都是ILSVRC竞赛历年的佼佼者,这里具体比较AlexNet、VGG、GoogLeNet、ResNet四个模型。如表1所示。
Data Augmentation
Inception(NIN)
卷积核大小
全连接层数
全连接层大小
Local Response Normalization
Batch Normalization
表1 AlexNet、VGG、GoogLeNet、ResNet对比
       接下里直接上图即可,AlexNet结构图如下:
图4. AlexNet网络结构
       换个视角:
图5. AlexNet网络结构精简版
       AlexNet相比传统的CNN(比如LeNet)有哪些重要改动呢:
(1) Data Augmentation
       数据增强,这个参考李飞飞老师的cs231课程是最好了。常用的数据增强方法有:
随机裁剪、平移变换
颜色、光照变换
(2) Dropout
       Dropout方法和数据增强一样,都是防止过拟合的。Dropout应该算是AlexNet中一个很大的创新,以至于Hinton在后来很长一段时间里的Talk都拿Dropout说事,后来还出来了一些变种,比如DropConnect等。
(3) ReLU激活函数
       用ReLU代替了传统的Tanh或者Logistic。好处有:
ReLU本质上是分段线性模型,前向计算非常简单,无需指数之类操作;
ReLU的偏导也很简单,反向传播梯度,无需指数或者除法之类操作;
ReLU不容易发生梯度发散问题,Tanh和Logistic激活函数在两端的时候导数容易趋近于零,多级连乘后梯度更加约等于0;
ReLU关闭了右边,从而会使得很多的隐层输出为0,即网络变得稀疏,起到了类似L1的正则化作用,可以在一定程度上缓解过拟合。
       当然,ReLU也是有缺点的,比如左边全部关了很容易导致某些隐藏节点永无翻身之日,所以后来又出现pReLU、random ReLU等改进,而且ReLU会很容易改变数据的分布,因此ReLU后加Batch Normalization也是常用的改进的方法。
(4) Local Response Normalization
       Local Response Normalization要硬翻译的话是局部响应归一化,简称LRN,实际就是利用临近的数据做归一化。这个策略贡献了1.2%的Top-5错误率。
(5) Overlapping Pooling
       Overlapping的意思是有重叠,即Pooling的步长比Pooling Kernel的对应边要小。这个策略贡献了0.3%的Top-5错误率。
(6) 多GPU并行
       这个不多说,比一臂之力还大的洪荒之力。
       VGG结构图
图6. VGG系列网络结构
       换个视角看看VGG-19:
图7. VGG-19网络结构精简版
       VGG很好地继承了AlexNet的衣钵,一个字:深,两个字:更深。
图8. GoogLeNet网络结构
       GoogLeNet依然是:没有最深,只有更深。
       主要的创新在于他的Inception,这是一种网中网(Network In Network)的结构,即原来的结点也是一个网络。Inception一直在不断发展,目前已经V2、V3、V4了,感兴趣的同学可以查阅相关资料。Inception的结构如图9所示,其中1*1卷积主要用来降维,用了Inception之后整个网络结构的宽度和深度都可扩大,能够带来2-3倍的性能提升。
图9. Inception结构
网络结构如图10所示。
图10. ResNet网络结构
       ResNet依然是:没有最深,只有更深(152层)。听说目前层数已突破一千。
       主要的创新在残差网络,如图11所示,其实这个网络的提出本质上还是要解决层次比较深的时候无法训练的问题。这种借鉴了Highway Network思想的网络相当于旁边专门开个通道使得输入可以直达输出,而优化的目标由原来的拟合输出H(x)变成输出和输入的差H(x)-x,其中H(X)是某一层原始的的期望映射输出,x是输入。
图11. ResNet网络结构
Deep Learning一路走来,大家也慢慢意识到模型本身结构是Deep Learning研究的重中之重,而本文回顾的LeNet、AlexNet、GoogLeNet、VGG、ResNet又是经典中的经典。
随着2012年AlexNet的一举成名,CNN成了计算机视觉应用中的不二选择。目前,CNN又有了很多其他花样,比如R-CNN系列,详情敬请期待我爱机器学习网站(52ml.net)的#Deep Learning回顾#下一期。
本文只是简单回顾,疏漏之处敬请谅解,感兴趣的可以加QQ群一起学习:
[参考文献]
[1] DE Rumelhart, GE Hinton, RJ Williams, Learning internal representations by error propagation. 1985 – DTIC Document.
[2] Y. LeCun , B. Boser , J. S. Denker , D. Henderson , R. E. Howard , W. Hubbard and L. D. Jackel, “Backpropagation applied to handwritten zip code recognition”, Neural Computation, vol. 1, no. 4, pp. 541-551, 1989.
[3] Kaiming He, Deep Residual Learning, http://image-net.org/challenges/talks/ilsvrc2015_deep_residual_learning_kaiminghe.pdf
[4] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11):, 1998.
[5] A. Krizhevsky, I. Sutskever, and G. Hinton. Imagenet classification with deep convolutional neural networks. In Advances in Neural Information Processing Systems 25, pages , 2012.
[6] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott E. Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich: Going deeper with convolutions. CVPR
[7] Karen Simonyan, Andrew Zisserman: Very Deep Convolutional Networks for Large-Scale Image Recognition. CoRR abs/ (2014)
[8] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep Residual Learning for Image Recognition. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016
[9] 一些对应的caffe实现或预训练好的模型: https://github.com/BVLC/caffe https://github.com/BVLC/caffe/wiki/Model-Zoo
[10] K. Fukushima. Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position. Biological Cybernetics, 36(4): 93-202, 1980.
欢迎加入我爱机器学习QQ14群:
微信扫一扫,关注我爱机器学习公众号
欢迎加入我爱机器学习QQ14群:
最新文章列表
NIPS 2016 — Day 1 Highlights NIPS 2016 — Day 2 Highlights:...
2018年三月 &(21)
2018年二月 &(20)
2018年一月 &(21)
2017年十二月 &(19)
2017年十一月 &(20)
2017年十月 &(31)
2017年九月 &(47)
2017年八月 &(58)
2017年七月 &(60)
2017年六月 &(67)
2017年五月 &(66)
2017年四月 &(65)
2017年三月 &(54)
2017年二月 &(48)
2017年一月 &(54)
2016年十二月 &(62)
2016年十一月 &(97)
2016年十月 &(97)
2016年九月 &(124)
2016年八月 &(83)
2016年七月 &(13)
2016年六月 &(10)
2016年五月 &(7)
2016年四月 &(9)
2016年三月 &(7)
2016年二月 &(2)
2016年一月 &(3)
2015年十二月 &(5)
2015年十一月 &(4)
2015年十月 &(2)
2015年九月 &(2)
2015年八月 &(3)
2015年七月 &(6)
2015年六月 &(8)
2015年五月 &(4)
2015年四月 &(1)
2015年三月 &(3)
2015年二月 &(1)
2015年一月 &(2)
2014年十二月 &(4)
2014年十一月 &(2)
2014年十月 &(3)
2014年九月 &(4)
2014年八月 &(22)
2014年七月 &(40)
2014年六月 &(61)
2014年五月 &(63)
2014年四月 &(187)
2014年三月 &(4798)
2014年二月 &(764)
2014年一月 &(330)
2013年十二月 &(145)
2013年十一月 &(126)
2013年十月 &(216)
2013年九月 &(284)
2013年八月 &(327)
2013年七月 &(275)
2013年六月 &(315)
2013年五月 &(228)
2013年四月 &(175)
2013年三月 &(186)
2013年二月 &(118)
2013年一月 &(210)
2012年十二月 &(221)
2012年十一月 &(155)
2012年十月 &(143)
2012年九月 &(98)
2012年八月 &(99)
2012年七月 &(109)
2012年六月 &(75)
2012年五月 &(88)
2012年四月 &(78)
2012年三月 &(78)
2012年二月 &(50)
2012年一月 &(17)
2011年十二月 &(27)
2011年十一月 &(6)
2011年十月 &(11)
2011年九月 &(13)
2011年八月 &(13)
2011年七月 &(19)
2011年六月 &(18)
2011年五月 &(6)
2011年四月 &(12)
2011年三月 &(15)
2011年二月 &(6)
2011年一月 &(9)
2010年十二月 &(6)
2010年十一月 &(11)
2010年十月 &(5)
2010年九月 &(8)
2010年八月 &(5)
2010年七月 &(12)
2010年六月 &(4)
2010年五月 &(7)
2010年四月 &(6)
2010年三月 &(12)
2010年二月 &(7)
2010年一月 &(2)
2009年十二月 &(5)
2009年十一月 &(16)
2009年十月 &(6)
2009年九月 &(7)
2009年八月 &(7)
2009年七月 &(5)
2009年六月 &(6)
2009年五月 &(6)
2009年四月 &(4)
2009年三月 &(7)
2009年二月 &(6)
2009年一月 &(1)
2008年十二月 &(4)
2008年十一月 &(5)
2008年十月 &(1)
2008年八月 &(1)
2008年七月 &(3)
2008年六月 &(3)
2008年五月 &(3)
2008年三月 &(1)
2007年十二月 &(1)
2007年十月 &(1)
2007年八月 &(4)
2007年七月 &(1)1,686被浏览88,416分享邀请回答8添加评论分享收藏感谢收起1,686被浏览88,416分享邀请回答papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf), Network in Network(), VGG(), GoogLeNet(), Resnet()等CNN网络都是图片分类网络, 都是在imagenet上1.2 million数据训练出来的。由于从这些pretrained网络抽出来的deep feature有良好的generalization的能力,可以应用到其他不同的CV问题,而且比传统的hand-craft feature如SIFT,bag of word要好一大截,所以得到广泛应用。目前大部分的high-level vision相关的问题,都是利用基于CNN的方法了。花点时间去了解这几个核心分类网络的结构和发展,是挺有必要的。一般来说,某CNN网络在imagenet上面的分类结果越好,其deep feature的generalization能力越强。最近出现蛮多论文,里面在benchmark上面的比较是自己方法的核心网络换成resnet,然后去比别人基于vgg或者alexnet的方法,自然要好不少。所以对于某个CV的问题,选一个优秀的核心网络作为基础,然后fine-tune, 已经是套路,这点从ResNet那篇论文的citation的增长就可以看出来。fine-tune的原因一是训练AlexNet等网络需要imagenet, places等million级别的数据,一般的CV任务都没有这么多数据。二是因为pre-trained model本身的feature已经足够generalizable,可以立刻应用到另外一个CV任务。至于如何开发出新的CNN分类模型,这就需要积累训练CNN的经验和直觉,以及大量的计算资源来尝试不同的网络结构。一般的研究者和实验室很难负担得起。但如果能搞出个如ResNet一样的牛逼网络,瞬间Best Paper ;), 这也是Kaiming师兄的厉害之处。这里有个八卦,去年Facebook AI Research里面Ross Girshick和Piotor Dollar等大牛带领几个research engineer&intern猛搞COCO challenge, 用上了DeepMask,MultiPath Network等黑科技,可惜最后还是败北于Kaiming领队的MSRA。原因是他们的核心网络还是基于VGG,而Kaiming放出大招ResNet。Resnet比起VGG单在imagenet上的分类结果就要好大概50%,这自然是没法比,甭管怎么个调参和前端如何好的object proposal,输得真是心服口服。这里值得一提的是,Kaiming能提出ResNet,不仅在于他对问题本身深入思考和灵敏的直觉(那篇Dark Channel paper真是直觉的直接体现),也在于他调CNN长期的积累,从spatial pyramid pooling, 到leaky relu, 再到resnet, 中间的确有三年多时间的投入。这里的后话是Kaiming加入FAIR, 跟Piotr Dollar坐到了一块。几个做high-level vision最牛逼的人都在FAIR里面了,很期待他们接下来强强联合会做出如何的研究工作。最后我再梳理下这些网络之间的关系。我个人觉得这几个网络是这样演变而来的.AlexNet - & VGG: VGG可以看成是加深版本的AlexNet. 都是conv layer + FC layer.
Network in Network -& GoogLeNet: NIN本身大家可能不太熟悉,但是我个人觉得是蛮不错的工作,Lin Min挺厉害。GoogLeNet这篇论文里面也对NIN大为赞赏。NIN利用Global average pooling去掉了FC layer, 大大减少了模型大小,本身的网络套网络的结构,也激发了后来的GoogLeNet里面的各种sub-network和inception结构的设计.
ResNet:这个网络跟前面几个网络都不同。我清楚记得这篇论文是在去年年底我去开NIPS的时候release到arxiv上的。当时我开会间歇中看着论文里面在cifar上面的一千层的resnet都目瞪狗呆了。。。然后再看到ResNet刷出了imagenet和COCO各个比赛的冠军,当时就觉得如果这论文是投CVPR, 那是绝对没有争议的Best paper, 果不其然。好像resnet后来又有些争议,说resnet跟highway network很像啥的,或者跟RNN结构类似,但都不可动摇ResNet对Computer Vision的里程碑贡献。当然,训练这些网络,还有些非常重要的trick, 如dropout, batch normalization等也功不可没。等我有时间了可以再写写这些tricks。再最后,这里潜在的一个问题是这些CNN网络都是在ImageNet上面1.2million数据训练出来的,很难分析是否数据源本身会对CNN造成影响。我和MIT的同事建立了一个10 million级别的场景分类数据库Places Database ()。Places是除了imagenet另外一个可以train CNN from scratch的图片数据库,我们把Places数据和不同pre-trained Places-CNNs都提供下载了。这里我们还做了些有意思的实验,比如说合并imagenet和places的数据,训练hybrid net,其feature也有不同的performance和generalization, 具体见和我们的arxiv论文()。我做了些CNN网络visualization的工作,看这些网络结构里面到底学到了什么东西,以及在物体为核心的Imagenet上和场景为核心的Places数据库上分别训练出来的结果是否不同,大家可以看看我之前的一篇ICLR'15 paper()。随着object centric task的饱和,我期待在scene understanding方向会有更好的模型和方法出现。98527 条评论分享收藏感谢收起arxiv.org/abs/,),都是分析的很深入浅出的好的文章。但是由于不符合发paper一定要state-of-the-art且可比较的性能的基本法,因此之后follow在这样的网络结构上继续做的人就很有限。5. 在实际的应用场景中,其实是有大量的非标准模型的配置。比如我司在做的人脸关键点tracking可以在低端的android手机上达到5ms的运行速度(很差的手机和CPU速度差约50倍,CPU和GPU速度差约10-20倍?。。),基于的也是深度学习的网络;比如我们自己团队做的人像分割,也可以在PC CPU上达到接近800fps的速度。这些所有的深度学习的网络结构研究,基于的目标是能够在限制的环境中达到最优的性能,同时会兼顾各种平台不同的优化方案调整网络结构。其中的黑科技非常多,主要是对基础网络的结构改进,肯定不会是VGG/AlexNet/GoogleNet/ResNet152这种庞然大物。这些技术也是大家在玩FaceU,各种直播平台的贴纸和之后其他的酷炫产品时,已经不知不觉已经享用到的深度学习的成果。不过由于是正在赚钱的产品(也是因为大家非常忙懒的写paper)暂时没有对学术界公开这些技术背后的网络结构。不过欢迎大家来实习亲自参与和实现这些改变未来的技术~最后知乎回答一定会变成一个招聘贴,如果大家对使用深度学习改变生活有热情有实力或者对商汤科技感兴趣,欢迎私信勾搭:D22624 条评论分享收藏感谢收起1,686被浏览88,416分享邀请回答2添加评论分享收藏感谢收起为什么现在的CNN模型都是在GoogleNet,VGGNet或者AlexNet上调整的_百度知道
为什么现在的CNN模型都是在GoogleNet,VGGNet或者AlexNet上调整的
我有更好的答案
特斯拉、帕斯卡,硬件版本号从1、还未发布的Volta伏打……)、费米、开普勒、麦克斯韦、Pascal(都是著名物理学家、MaxwellNvidiaGPU架构经历了Fermi、Kepler
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 所有的模型都是错的 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信