CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet简介

作者:我爱机器学习
链接:https://zhuanlan.zhihu.com/p/22094600
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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视觉发展的里程碑式代表。

CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet简介_第1张图片
随着模型变得越来越深,Top-5的错误率也越来越低,目前降到了3.5%附近,而在同样的ImageNet数据集合上,人眼的辨识错误率大概在5.1%,也就是目前的Deep Learning模型的识别能力已经超过了人眼。而图1中的这些模型,也是Deep Learning视觉发展的里程碑式代表。
LeNet以其作者名字LeCun命名,这种命名方式类似的还有AlexNet,后来又出现了以机构命名的网络结构GoogLeNet、VGG,以核心算法命名的ResNet。LeNet有时也被称作LeNet5或者LeNet-5,其中的5代表五层模型。不过别急,LeNet之前其实还有一个更古老的CNN模型。

最古老的CNN模型
1985年提出的后向传播算法(Back Propagation,BP算法)。BP算法来训练多层神经网络用于识别手写数字(MNIST),CNN的开山之作。
CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet简介_第2张图片
该模型多处用到了55的卷积核,但在这篇文章中LeCun只是说把55的相邻区域作为感受野,并未提及卷积或卷积神经网络。

LeNet
1998年的LeNet5[4]标注着CNN的真正面世,但是这个模型在后来的一段时间并未能火起来,主要原因是费机器(当时苦逼的没有GPU啊),而且其他的算法(SVM,老实说是你干的吧?)也能达到类似的效果甚至超过。

AlexNet
AlexNet结构图:
共含5层卷积层和3层全连接层。
Alex-Net的上下两支是为方便同时使用两个GPU并行训练,不过在第三层卷积和全连接层处上下两支信息可交互。由于两支网络完全一致,在此仅对其中一只进行分析。
CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet简介_第3张图片
CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet简介_第4张图片
AlexNet相比传统的CNN(比如LeNet)有哪些重要改动呢:
(1) Data Augmentation
(2) Dropout
Dropout方法和数据增强一样,都是防止过拟合的。Dropout应该算是AlexNet中一个很大的创新,以至于Hinton在后来很长一段时间里的Talk都拿Dropout说事,后来还出来了一些变种,比如DropConnect等。

(3) ReLU激活函数
用ReLU代替了传统的Tanh或者Logistic。好处有:

  • AlexNet使用ReLU代替了Sigmoid,其能更快的训练,同时解sigmoid在训练较深的网络中出现的梯度消失,或者说梯度弥散的问题.
  • 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
VGG的特点:
1.小卷积核。作者将卷积核全部替换为3x3(极少用了1x1);
2.小池化核。相比AlexNet的3x3的池化核,VGG全部为2x2的池化核;
层数更深特征图更宽。基于前两点外,由于卷积核专注于扩大通道数、池化专注于缩小宽和高,使得模型架构上更深更宽的同时,计算量的增加放缓;
全连接转卷积。网络测试阶段将训练阶段的三个全连接替换为三个卷积,测试重用训练时的参数,使得测试得到的全卷积网络因为没有全连接的限制,因而可以接收任意宽或高为的输入。

VGG16相比AlexNet的改进:
采用连续的几个3x3的卷积核代替AlexNet中的较大卷积(11x11,5x5)。对于给定的感受野(与输出有关的输入图片的局部大小),采用堆积的小卷积核是优于采用大的卷积核,因为多层非线性层可以增加网络深度来保证学习更复杂的模式,而且代价还比较小(参数更少)。
比如,3个步长为1的3x3卷积核连续作用在一个大小为7的感受野,其参数总量为 3*(9C^2),这里 C 指的是输入和输出的通道数。而且3x3卷积核有利于更好地保持图像性质。
VGG结构图:
CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet简介_第5张图片
CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet简介_第6张图片
GoogLeNet

GoogLeNet网络结构:CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet简介_第7张图片
主要的创新在于他的Inception,这是一种网中网(Network In Network)的结构,即原来的结点也是一个网络。Inception一直在不断发展,目前已经V2、V3、V4了,感兴趣的同学可以查阅相关资料。Inception的结构如图9所示,其中1*1卷积主要用来降维,用了Inception之后整个网络结构的宽度和深度都可扩大,能够带来2-3倍的性能提升。

Inception结构:CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet简介_第8张图片
ResNet

CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet简介_第9张图片
ResNet主要的创新在残差网络,如图所示,其实这个网络的提出本质上还是要解决层次比较深的时候无法训练的问题。

深度神经网络训练时会面临什么问题?

这种借鉴了Highway Network思想的网络相当于旁边专门开个通道使得输入可以直达输出,而优化的目标由原来的拟合输出H(x)变成输出和输入的差H(x)-x,其中H(X)是某一层原始的的期望映射输出,x是输入。
CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet简介_第10张图片
AlexNet、VGG、GoogLeNet、ResNet对比
LeNet主要是用于识别10个手写数字的,当然,只要稍加改造也能用在ImageNet数据集上,但效果较差。而本文要介绍的后续模型都是ILSVRC竞赛历年的佼佼者,这里具体比较AlexNet、VGG、GoogLeNet、ResNet四个模型。如表1所示。
CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet简介_第11张图片
[参考文献]
[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):2278–2324, 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 1106–1114, 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 2015: 1-9
[7] Karen Simonyan, Andrew Zisserman: Very Deep Convolutional Networks for Large-Scale Image Recognition. CoRR abs/1409.1556 (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/caffehttps://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.

你可能感兴趣的:(CNN的发展史LeNet、Alexnet 、VGG、GoogleNet、ResNet简介)