在我的个人博客上一篇博文中分析了卷积神经网络的结构与相关算法,知道了这些基本原理之后。这篇博文主要介绍在卷积神经网络的发展历程中一些经典的网络模型。
LeCun等将BP算法应用到多层神经网络中,提出LeNet-5模型[1](效果和paper见此处),并将其用于手写数字识别,卷积神经网络才算正式提出。LeNet-5的网络模型如图1所示。网络模型具体参数如图2所示。
输入:32*32的手写字体图片,这些手写字体包含0~9数字,也就是相当于10个类别的图片;
输出:分类结果,0~9之间。
从输入输出可以知道,改网络解决的是一个十分类的问题,分类器使用的Softamx回归。
从表1的具体参数可以看出,LeNet的网络结构十分简单且单一,卷积层C1、C3和C5层除了输出维数外采用的是相同的参数,池化层S2和S4采用的也是相同的参数
2012年Krizhevsky使用卷积神经网络在ILSVRC 2012图像分类大赛上夺冠,提出了AlexNet模型[2](论文地址)。这篇文章凭借着诸多创新的方法,促使了之后的神经网络研究浪潮。AlexNet网络的提出对于卷积神经网络具有里程碑式的意义,相比较于LeNet5的改进有以下几点
1. 数据增强
* 水平翻转
* 随机裁剪、平移变换
* 颜色光照变换
2. Dropout: Dropout方法和数据增强一样,都是防止过拟合的。简单的说,dropout能按照一定的概率将神经元从网络中丢弃。一个很形象的解释如图2所示,左图为dropout前,右图为dropout后。dropout能在一定程度上防止网络过拟合,并且能加快网络的训练速度。
通过对比LeNet-5和AlexNet的网络结构可以看出,AlexNet具有更深的网络结构,更多的参数。
ZFNet[3](论文地址)是由纽约大学的Matthew Zeiler和Rob Fergus所设计,该网络在AlexNet上进行了微小的改进,但这篇文章主要贡献在于在一定程度上解释了卷积神经网络为什么有效,以及如何提高网络的性能。该网络的贡献在于:
* 使用了反卷积网络,可视化了特征图。通过特征图证明了浅层网络学习到了图像的边缘、颜色和纹理特征,高层网络学习到了图像的抽象特征;
* 根据特征可视化,提出AlexNet第一个卷积层卷积核太大,导致提取到的特征模糊;
* 通过几组遮挡实验,对比分析找出了图像的关键部位;
* 论证了更深的网络模型,具有更好的性能。
ZFNet的网络模型如图4所示,具体参数如表3所示。
VGGNet[4]是由牛津大学计算机视觉组和Google DeepMind项目的研究员共同研发的卷积神经网络模型,包含VGG16和VGG19两种模型,其网络模型如图5所示,也可以点击此处链接查看网络模型。
GoogLeNet[5](论文地址)进一步增加了网络模型的深度和宽度,但是单纯的在VGG16的基础上增加网络的宽度深度会带来以下缺陷:
* 过多的参数容易引起过拟合;
* 层数的加深,容易引起梯度消失现象。
GoogLeNet的提出受到论文Network in Network(NIN)的启发,NIN有两个贡献:
* 提出多层感知卷积层:使用卷积层后加上多层感知机,增强网络提取特征的能力。普通的卷积层和多层感知卷积层的结构图如图6所示,Mlpconv相当于在一般的卷积层后加了一个1*1的卷积层;
GoogLeNet根据Mlpconv的思想提出了Inception结构,该结构有两个版本,图7是Inception的naive版。该结构巧妙的将1*1、3*3和5*5三种卷积核和最大池化层结合起来作为一层结构。
然而Inception的naive版中5*5的卷积核会带来很大的计算量,因此采用了与NIN类似的结构,在原始的卷积层之后加上了1*1卷积层,最终版本的Inception如图8所示。
GoogLeNet的模型结构如图9所示,详细参数如表4所示。
卷积神经网络模型的发展历程一次次证明加深网络的深度和宽度能得到更好的效果,但是后来的研究发现,网络层次较深的网络模型的效果反而会不如较浅层的网络,称为“退化”现象,如图10所示。
退化现象产生的原因在于当模型的结构变得复杂时,随机梯度下降的优化变得更加困难,导致网络模型的效果反而不如浅层网络。针对这个问题,MSRA何凯明团队提出了Residual Networks6。该网络具有Residual结构如图11所示。
ResNet的基本思想是引入了能够跳过一层或多层的“shortcut connection”,即增加一个identity mapping(恒等映射),将原始所需要学的函数H(x)转换成F(x)+x,而作者认为这两种表达的效果相同,但是优化的难度却并不相同,作者假设F(x)的优化 会比H(x)简单的多。这一想法也是源于图像处理中的残差向量编码,通过一个reformulation,将一个问题分解成多个尺度直接的残差问题,能够很好的起到优化训练的效果。
这个Residual block通过shortcut connection实现,通过shortcut将这个block的输入和输出进行一个element-wise的加叠,这个简单的加法并不会给网络增加额外的参数和计算量,同时却可以大大增加模型的训练速度、提高训练效果,并且当模型的层数加深时,这个简单的结构能够很好的解决退化问题。
首先构建了一个18层和一个34层的plain网络,即将所有层进行简单的铺叠,然后构建了一个18层和一个34层的residual网络,仅仅是在plain上插入了shortcut,而且这两个网络的参数量、计算量相同,并且和之前有很好效果的VGG-19相比,计算量要小很多。(36亿FLOPs VS 196亿FLOPs,FLOPs即每秒浮点运算次数。)这也是作者反复强调的地方,也是这个模型最大的优势所在。
模型构建好后进行实验,在plain上观测到明显的退化现象,而且ResNet上不仅没有退化,34层网络的效果反而比18层的更好,而且不仅如此,ResNet的收敛速度比plain的要快得多。
对于shortcut的方式,作者提出了三个策略:
* 使用恒等映射,如果residual block的输入输出维度不一致,对增加的维度用0来填充;
* 在block输入输出维度一致时使用恒等映射,不一致时使用线性投影以保证维度一致;
* 对于所有的block均使用线性投影。
ResNet论文的最后探讨了阻碍网络更深的瓶颈问题,如图12所示,论文中用三个1x1,3x3,1x1的卷积层代替前面说的两个3x3卷积层,第一个1x1用来降低维度,第三个1x1用来增加维度,这样可以保证中间的3x3卷积层拥有比较小的输入输出维度。
[1] Lecun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11):2278-2324.
[2] Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2012:1097-1105.
[3] Zeiler M D, Fergus R. Visualizing and Understanding Convolutional Networks[J]. 2013, 8689:818-833.
[4] Simonyan K, Zisserman A. Very Deep Convolutional Networks for Large-Scale Image Recognition[J]. Computer Science, 2014.
[5] Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 2015:1-9.
[6] He K, Zhang X, Ren S, et al. Deep Residual Learning for Image Recognition[C]// Computer Vision and Pattern Recognition. IEEE, 2016:770-778.