经典神经网络发展史

AlexNet、LeNet、GoogLeNet、VGG-16、NiN

LeNet

参数量:6万
卷积和:全部为5x5的卷积核

1998年,LeCun提出LeNet神经网络结构,用于解决手写数字识别的视觉任务。自那时起,CNN的最基本的架构就定下来了:卷积层、池化层、全连接层。如今各大深度学习框架中所使用的LeNet都是简化改进过的LeNet-5(-5表示具有5个层),和原始的LeNet有些许不同,比如把激活函数改为了现在很常用的ReLu

LeNet-5
论文中,原始的网络结构为:conv-pool-conv-pool-linear
现在,各大训练框架经常使用的改进后的LeNet,例如,pytorch中实现结构为:conv-relu-pool-conv-relu-pool-linear

LeNet

AlexNet

参数量:230M
卷积核大小:11x11,5x5, 3x3

2012年,AlexNet在年ImageNet竞赛中以超过第二名10.9个百分点的绝对优势一举夺冠,从此深度学习和卷积神经网络名声鹊起,深度学习的研究如雨后春笋般出现,AlexNet的出现可谓是卷积神经网络的王者归来

AlexNet

以上图AlexNet架构为例,这个网络前面5层是卷积层,后面三层是全连接层,最终softmax输出是1000类,取其前两层进行详细说明。

  1. AlexNet共包含5层卷积层和三层全连接层,层数比LeNet多了不少,但卷积神经网络总的流程并没有变化,只是在深度上加了不少。

  2. AlexNet针对的是1000类的分类问题,输入图片规定是256×256的三通道彩色图片,为了增强模型的泛化能力,避免过拟合,作者使用了随机裁剪的思路对原来256×256的图像进行随机裁剪,得到尺寸为3×224×224的图像,输入到网络训练。

  3. 因为使用多GPU训练,所以可以看到第一层卷积层后有两个完全一样的分支,以加速训练

因为现在很多框架都支持多GPU训练,所有现有框架中AlexNet中的实现,是没有并行分支的。例如,pytorch中实现的AlexNet的结构为:

AlexNet

注意,以上结构并不包含全连接层

AlexNet用到训练技巧:

  1. 数据增广技巧来增加模型泛化能力。
  2. 用ReLU代替Sigmoid来加快SGD的收敛速度
  3. Dropout:Dropout原理类似于浅层学习算法的中集成算法,该方法通过让全连接层的神经元(该模型在前两个全连接层引入Dropout)以一定的概率失去活性(比如0.5)失活的神经元不再参与前向和反向传播,相当于约有一半的神经元不再起作用。在测试的时候,让所有神经元的输出乘0.5。Dropout的引用,有效缓解了模型的过拟合。
    Dropout
  4. Local Responce Normalization:局部响应归一层的基本思路是,假如这是网络的一块,比如是 13×13×256, LRN 要做的就是选取一个位置,比如说这样一个位置,从这个位置穿过整个通道,能得到 256 个数字,并进行归一化。进行局部响应归一化的动机是,对于这张 13×13 的图像中的每个位置来说,我们可能并不需要太多的高激活神经元。但是后来,很多研究者发现 LRN 起不到太大作用,因为并不重要,而且我们现在并不用 LRN 来训练网络

NIN

参数量:29M
2014年3月,正在攻读研究生学位的Min Lin等其他人,发表了Network in Network。在这篇文正中,首次将1x1的卷积应用在了神经网络上,它用了比AlexNet更少的参数,达到了跟其一样的效果。

CNN高层特征其实是低层特征通过某种运算的组合。于是作者就根据这个想法,提出:

  1. 在每个局部感受野中进行更加复杂的运算,提出了对卷积层的改进算法:MLP(multilayer perceptron,多层感知机)卷积层。
    MLP
    其中,左边的mlp中新增的两层卷积层,均为1x1的卷积。这种1x1卷积实际上是对每个像素点,在不同的channels上进行线性组合(信息整合),且保留了图片的原有平面结构。

当时作者采用的1x1的卷积核,与前面一层的大核卷积均保持一致的深度,因此并没有起到升维或降维的作用。不过,后来很多一些网络陆续使用1x1的卷积和,对网络层进行升维或降维操作,例如GoogLeNet的inception结构,就受到了NIN中的1x1卷积的设计思想的深度影响。VGG的网络设计结构,也参考了NIN的网络块的设计结构。

我们来对比下NIN,inception和VGG的网络结构,

各个网络结构对比

  1. 传统的CNN最后一层都是全连接层,参数个数非常之多,容易引起过拟合(如Alexnet),一个CNN模型,大部分的参数都被全连接层给占用了,故这篇paper提出采用了:全局均值池化,替代全连接层。

NIN_output

与传统的全连接层不同,我们对每个特征图一整张图片进行全局均值池化,这样每张特征图都可以得到一个输出。这样采用均值池化,连参数都省了,可以大大减小网络,避免过拟合,另一方面它有一个特点,每张特征图相当于一个输出特征,然后这个特征就表示了我们输出类的特征。这样如果我们在做1000个分类任务的时候,我们网络在设计的时候,最后一层的特征图个数就要选择1000。

VGG16

2014年,牛津大学VGG组提出了VGG16网络。VGG16相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核(11x11,5x5)。对于给定的感受野(与输出有关的输入图片的局部大小),采用堆积的小卷积核是优于采用大的卷积核,因为多层非线性层可以增加网络深度来保证学习更复杂的模式,而且代价还比较小(参数更少)。

VGG 多次重复使用同一大小的卷积核来提取更复杂和更具有表达性的特征。这种块结构( blocks/modules)在VGG之后被广泛采用。

VGG卷积层之后是3个全连接层。网络的通道数从较小的64开始,然后每经过一个下采样或者池化层成倍地增加,当然特征图大小成倍地减小。最终其在ImageNet上的Top-5准确度为92.3%

GoogLeNet/Inception

2014年,谷歌团队提出了GoogLeNet,
尽管VGG可以在ImageNet上表现很好,但是将其部署在一个适度大小的GPU上是困难的,因为需要VGG在内存和时间上的计算要求很高。由于卷积层的通道数过大,VGG并不高效。比如,一个3x3的卷积核,如果其输入和输出的通道数均为512,那么需要的计算量为9x512x512。

在卷积操作中,输出特征图上某一个位置,其是与所有的输入特征图是相连的,这是一种密集连接结构。GoogLeNet基于这样的理念:在深度网路中大部分的激活值是不必要的(为0),或者由于相关性是冗余。因此,最高效的深度网路架构应该是激活值之间是稀疏连接的,这意味着512个输出特征图是没有必要与所有的512输入特征图相连。存在一些技术可以对网络进行剪枝来得到稀疏权重或者连接。但是稀疏卷积核的乘法在BLAS和CuBlas中并没有优化,这反而造成稀疏连接结构比密集结构更慢。

据此,GoogLeNet设计了一种称为inception的模块,这个模块使用密集结构来近似一个稀疏的CNN。

GoogLeNet的另外一个特殊设计是最后的卷积层后使用全局均值池化层替换了全连接层(应该是参考NIN的网络),所谓全局池化就是在整个2D特征图上取均值。这大大减少了模型的总参数量。要知道全连接层参数占在AlexNet中占整个网络总参数的90%,在VGG16中占整个网络的80%。 使用一个更深更大的网络使得GoogLeNet移除全连接层之后还不影响准确度。其在ImageNet上的top-5准确度为93.3%,但是速度还比VGG还快

ResNet

2015年ILSVRC 冠军。随着网络深度增加,网络的准确度应该同步增加,当然要注意过拟合问题。但是网络深度增加的一个问题在于这些增加的层是参数更新的信号,因为梯度是从后向前传播的,增加网络深度后,比较靠前的层梯度会很小。这意味着这些层基本上学习停滞了,这就是梯度消失问题。深度网络的第二个问题在于训练,当网络更深时意味着参数空间更大,优化问题变得更难,因此简单地去增加网络深度反而出现更高的训练误差。残差网络ResNet设计一种残差模块让我们可以训练更深的网络。

论文地址

LeNet
AlexNet
Network in Network

参考文档

https://blog.csdn.net/qq_30460949/article/details/100101983
//nin
https://blog.csdn.net/qq_30460949/article/details/100101983
https://gist.github.com/mavenlin/d802a5849de39225bcc6
https://www.cnblogs.com/guoyaohua/p/8330943.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值