FW:卷积神经网络大总结_拔剑-浆糊的传说_新浪博客

发布时间:2023-11-22 10:30

http://blog.csdn.net/zyazky/article/details/53108346

卷积神经网络大总结

标签: 深度学习卷积神经网络
2016-11-10 00:03  303人阅读  评论(0)  收藏  举报
  分类:
深度学习(14) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

目录(?)[+]

#Deep Learning回顾#之2006年的Science Paper

 

大家都清楚神经网络在上个世纪七八十年代是着实火过一回的,尤其是后向传播BP算法出来之后,但90年代后被SVM之类抢了风头,再后来大家更熟悉的是SVM、AdaBoost、随机森林、GBDT、LR、FTRL这些概念。究其原因,主要是神经网络很难解决训练的问题,比如梯度消失。当时的神经网络研究进入一个低潮期,不过Hinton老人家坚持下来了。

功夫不负有心人,2006年Hinton和学生发表了利用RBM编码的深层神经网络的Science Paper:Reducing the Dimensionality of Data with Neural Networks,不过回头来看,这篇paper在当今的实用性并不强,它的更大作用是把神经网络又推回到大家视线中,利用单层的RBM自编码预训练使得深层的神经网络训练变得可能,但那时候Deep learning依然争议很多,最终真正爆发是2012年的ImageNet的夺冠,这是后话。

如图中所示,这篇paper的主要思想是使用受限RBM先分层训练,受限的意思是不包含层内的相互连接边(比如vi*vj或hi*hj)。每一层RBM训练时的目标是使得能量最小:

能量最小其实就是P(v, h)联合概率最大,而其他v’相关的p(v’, h)较小,后面这个是归一化因子相关。这块如果理解有问题的,需要补一下RBM相关知识,目前网上资料不少了。

大致的过程为,从输入层开始,不断进行降维,比如左图中的2000维降到1000维, 降维时保证能量最小,也就是输出h和输入v比较一致,而和其他输入v’不一致,换句话说,输出尽量保证输入的信息量。降维从目标上比较类似于PCA,但Hinton在文章说这种方法比PCA效果会好很多,尤其是经过多层压缩的时候(比如784个像素压缩到6个实数),从原理应该也是这样的,RBM每一层都尽量保留了输入的信息。

预训练结束后,就会展开得到中间的解码器,这是一个叠加的过程,也就是下一层RBM的输出作为上一层RBM的输入。

最后再利用真实数据进行参数细调,目标是输入图片经过编码解码后尽量保持原图信息,用的Loss函数是负Log Likelihood:

这篇在今天看来实用性不太大,难度也不大,但在当时这篇文章看起来还是晦涩的,很多原理没有细讲。为何能中Science?个人认为,毕竟Hinton是神经网络的泰斗,换个人名不见经传的人估计中不了,另外这篇文章也确实使得以前不可能的深层神经网络变得可能了,在今天依然有很多可以借鉴的地方,细心的同学会发现上百或上千层的ResNet的思想在一定程度上和这篇论文是神似的。ResNet也是意识到深层(152层)不好直接训练,那就在单层上想办法,将原来直接优化H(x)改为优化残差F(x) = H(x)-x,其中H(X)是某一层原始的的期望映射输出,x是输入,相当于输入x有个直通车到达该层输出,从而使得单层的训练更加容易。

参考博客:http://www.cnblogs.com/52machinelearning/p/5821587.html

参考资料:

[1] Paper:http://www.cs.toronto.edu/~hinton/science.pdf

[2] 代码:http://www.cs.toronto.edu/~hinton/MatlabForSciencePaper.html

#Deep Learning回顾#之LeNet、AlexNet、GoogLeNet、VGG、ResNet

 

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为何能耐如此之大?有三个很重要的原因:

  1. 大量数据,Deep Learning领域应该感谢李飞飞团队搞出来如此大的标注数据集合ImageNet;
  2. GPU,这种高度并行的计算神器确实助了洪荒之力,没有神器在手,Alex估计不敢搞太复杂的模型;
  3. 算法的改进,包括网络变深、数据增强、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网络结构图

LeNet

       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所示。

模型名 AlexNet VGG GoogLeNet ResNet
初入江湖 2012 2014 2014 2015
层数 8 19 22 152
Top-5错误 16.4% 7.3% 6.7% 3.57%
Data Augmentation + + + +
Inception(NIN) +
卷积层数 5 16 21 151
卷积核大小 11,5,3 3 7,1,3,5 7,1,3,5
全连接层数 3 3 1 1
全连接层大小 4096,4096,1000 4096,4096,1000 1000 1000
Dropout + + + +
Local Response Normalization + +
Batch Normalization +
表1 AlexNet、VGG、GoogLeNet、ResNet对比

AlexNet

       接下里直接上图即可,AlexNet结构图如下:


图4. AlexNet网络结构

       换个视角:


图5. AlexNet网络结构精简版

       AlexNet相比传统的CNN(比如LeNet)有哪些重要改动呢:
(1) Data Augmentation
       数据增强,这个参考李飞飞老师的cs231课程是最好了。常用的数据增强方法有:

  • 水平翻转

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号