经典神经网络回顾

date:2017.5.11

前言:下面介绍的内容其实在《Tensorflow实战》里都有详尽的介绍,之前入门时只了解了vgg啥样,什么Alexnet,Google Inception,ResNet只闻其名,不知其形,今天好好梳理下(毕设做完了,开心XD)

AlexNet

ILSVRC 2012比赛扛把子,特点如下:

(1)成功使用ReLU作为CNN的激活函数,并验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题。虽然ReLU激活函数在很久之前就被提出了,但是直到AlexNet的出现才将其发扬光大。

(2)训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout。

(3)在CNN中使用重叠的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。

(4)提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。

(5)使用CUDA加速深度卷积网络的训练,利用GPU强大的并行计算能力,处理神经网络训练时大量的矩阵运算。AlexNet使用了两块GTX 580 GPU进行训练,单个GTX 580只有3GB显存,这限制了可训练的网络的最大规模。因此作者将AlexNet分布在两个GPU上,在每个GPU的显存中储存一半的神经元的参数。因为GPU之间通信方便,可以互相访问显存,而不需要通过主机内存,所以同时使用多块GPU也是非常高效的。同时,AlexNet的设计让GPU之间的通信只在网络的某些层进行,控制了通信的性能损耗。 

(6)数据增强,随机地从256´256的原始图像中截取224´224大小的区域(以及水平翻转的镜像),相当于增加了(256-224)2´2=2048倍的数据量。如果没有数据增强,仅靠原始的数据量,参数众多的CNN会陷入过拟合中,使用了数据增强后可以大大减轻过拟合,提升泛化能力。进行预测时,则是取图片的四个角加中间共5个位置,并进行左右翻转,一共获得10张图片,对他们进行预测并对10次结果求均值。同时,AlexNet论文中提到了会对图像的RGB数据进行PCA处理,并对主成分做一个标准差为0.1的高斯扰动,增加一些噪声,这个Trick可以让错误率再下降1%。

接下来划重点,(1)relu激活函数在层数较深时效果比sigmoid好
(2)drop out 降低过拟合,效果好,这算是一个trick吧
(3)步长设置比池化核小,增加特征丰富性
(4)LRN层这东西我百度后发现,多个LRN就提高0.1%,真是可有可无,好像现在用的也比较少。
(5)由于当时显卡性能在现在看来十分辣鸡,不能满足神经网络训练要求,于是结构被分成两个并行部分
(6)数据集扩增,防止过拟合。

VGG

2014的网络模型

两个3´3的卷积层串联相当于1个5´5的卷积层,即一个像素会跟周围5´5的像素产生关联,可以说感受野大小为5´5。而3个3´3的卷积层串联的效果则相当于1个7´7的卷积层。除此之外,3个串联的3´3的卷积层,拥有比1个7´7的卷积层更少的参数量,只有后者的。最重要的是,3个3´3的卷积层拥有比1个7´7的卷积层更多的非线性变换(前者可以使用三次ReLU激活函数,而后者只有一次),使得CNN对特征的学习能力更强。

这是Tensorflow实战里的原话,了解就好,设计什么的还比较遥远。

Google Inception

同样是2014年,不过一直在升级,2014年的是Inception v1,相比前面的Alexnet和VGG,Inception v1把占总参数量90%的全连接层去掉,改为1x1的全局平均池化层。

经典神经网络回顾_第1张图片

最后进化成了一个家族:

2014年9月的论文Going Deeper with Convolutions提出的Inception V1(top-5错误率6.67%)。

2015年2月的论文Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate提出的Inception V2(top-5错误率4.8%)。

2015年12月的论文Rethinking the Inception Architecture for Computer Vision提出的Inception V3(top-5错误率3.5%)。

2016年2月的论文Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning提出的Inception V4(top-5错误率3.08%)。
在我看来,Inception v4确实使用了许多手段最后达到了这个令人惊叹的错误率,但是搭建起来也是足够的复杂,我想这就是slim推出的重要原因吧。

ResNet

最近有论文证明Resnet等价于RNN网络,resnet确实也在网络深度上一路狂飙,152层甚至1000层的网络也有了。

总的来说,这几种网络都属于2维的卷积网络,主要任务可以做图像分类、定位等,他们功能上应该是递进的关系,越新的网络,使用到的技术越好,性能越高,而Inception-ResNet-V2则是把这几种网络的优势都融为一体。

当然,卷积网络不止2维,也可以有1维的,可以处理时间序列的信号;也可以有3维的,可以处理3维空间的信息,或者处理视频信息。卷积网络适应的场景应该是,输入信号在空间上和时间上存在一定关联性的场景,满足了这个条件,都可以很好的利用深度卷积神经网络解决问题。

你可能感兴趣的:(深度学习笔记)