cnn神经网络可以用于数据拟合吗_CNN经典模型之AlexNet

v2-889660cdaa9a50261cbc152d49f5c43a_1440w.jpg?source=172ae18b

2012年,Alex Krizhevsky、Ilya Sutskever在多伦多大学Geoff Hinton的实验室设计出了一个深层的卷积神经网络AlexNet,夺得了2012年ImageNet LSVRC的冠军,且准确率远远超过第二名(top5错误率为15.3%,第二名为26.2%),引起了很大的轰动。AlexNet可以说是具有历史意义的一个网络结构,在此之前,深度学习已经沉寂了很长时间,自2012年AlexNet诞生之后,后面的ImageNet冠军都是用卷积神经网络(CNN)来做的,并且层数越来越深,使得CNN成为在图像识别分类的核心算法模型,带来了深度学习的大爆发。

下面将先介绍AlexNet的特点,然后再逐层分解解析AlexNet网络结构。

一、AlexNet模型特点

  • 采用ReLU(Rectified Linear Units)作为非线性激活函数
  • 训练阶段使用Dropout防止过拟合
  • 数据增强
  • 多GPU训练
  • 使用LRN归一化层
  • ... ...

1.ReLU作为激活函数

传统的神经网络普遍使用Sigmoid或者tanh等非线性函数作为激励函数,在当神经网络层数较深的情况下,模型训练容易出现梯度弥散或梯度饱和的情况。为了解决此问题,AlexNet中引入了ReLU作为激活函数,其公式为

,图像如下:

v2-bc3705091148c42269cdf55fb0a7bdd2_b.jpg
ReLU激活函数

使用ReLU替代Sigmoid/tanh,由于ReLU计算速度快,且导数始终为1或者0,使得计算量大大减少,收敛速度会比Sigmoid/tanh快很多。

v2-618da42bbf0cad4a3f4ba1ae395d6314_b.jpg

2.数据增强

有一种观点认为神经网络是靠数据喂出来的,如果能够增加训练数据,提供海量数据进行训练,则能够有效提升算法的准确率,因为这样可以避免过拟合,从而可以进一步增大、加深网络结构。而当训练数据有限时,可以通过一些变换从已有的训练数据集中生成一些新的数据,以快速地扩充训练数据。

其中,最简单、通用的图像数据变形的方式:水平翻转图像,从原始图像中随机裁剪、平移变换,颜色、光照变换,如下图所示:

v2-58379273a42eb02ae3ad19608f90b9a9_b.jpg

AlexNet在训练时,在数据扩充(data augmentation)这样处理:
(1)随机裁剪,对256×256的图片进行随机裁剪到224×224,然后进行水平翻转,相当于将样本数量增加了((256-224)^2)×2=2048倍;
(2)测试的时候,对左上、右上、左下、右下、中间分别做了5次裁剪,然后翻转,共10个裁剪,之后对结果求平均。作者说,如果不做随机裁剪,大网络基本上都过拟合;
(3)对RGB空间做PCA(主成分分析),然后对主成分做一个(0, 0.1)的高斯扰动,也就是对颜色、光照作变换,结果使错误率又下降了1%。

3、重叠池化 (Overlapping Pooling)
一般的池化(Pooling)是不重叠的,池化区域的窗口大小与步长相同,如下图所示:

v2-c5d997bb5955e63402851e7fc7b4d381_b.jpg

在AlexNet中使用的池化(Pooling)却是可重叠的,也就是说,在池化的时候,每次移动的步长小于池化的窗口长度。AlexNet池化的大小为3×3的正方形,每次池化移动步长为2,这样就会出现重叠。重叠池化可以避免过拟合,这个策略贡献了0.3%的Top-5错误率。

4、局部归一化(Local Response Normalization,简称LRN)

在神经生物学有一个概念叫做“侧抑制”(lateral inhibitio),指的是被激活的神经元抑制相邻神经元。归一化(normalization)的目的是“抑制”,局部归一化就是借鉴了“侧抑制”的思想来实现局部抑制,尤其当使用ReLU时这种“侧抑制”很管用,因为ReLU的响应结果是无界的(可以非常大),所以需要归一化。使用局部归一化的方案有助于增加泛化能力。

LRN的公式如下,核心思想就是利用临近的数据做归一化,这个策略贡献了1.2%的Top-5错误率。

v2-60302bc72a37f072d1f55feb8960e55a_b.jpg

5、Dropout

引入Dropout主要是为了防止过拟合。在神经网络中Dropout通过修改神经网络本身结构来实现,对于某一层的神经元,通过定义的概率将神经元置为0,这个神经元就不参与前向和后向传播,就如同在网络中被删除了一样,同时保持输入层与输出层神经元的个数不变,然后按照神经网络的学习方法进行参数更新。在下一次迭代中,又重新随机删除一些神经元(置为0),直至训练结束。

Dropout应该算是AlexNet中一个很大的创新,以至于“神经网络之父”Hinton在后来很长一段时间里的演讲中都拿Dropout说事。Dropout也可以看成是一种模型组合,每次生成的网络结构都不一样,通过组合多个模型的方式能够有效地减少过拟合,Dropout只需要两倍的训练时间即可实现模型组合(类似取平均)的效果,非常高效。

如下图所示:

v2-93d47e0cb6e3db27a3ff1809faa1c2e7_b.jpg

6、多GPU训练

AlexNet当时使用了GTX580的GPU进行训练,由于单个GTX 580 GPU只有3GB内存,这限制了在其上训练的网络的最大规模,因此他们在每个GPU中放置一半核(或神经元),将网络分布在两个GPU上进行并行计算,大大加快了AlexNet的训练速度。

最后,AlexNet的模型如图:

v2-887dd35ca97e71252742bf8a15504df5_b.jpg

通过前面的介绍,可以看出AlexNet的特点和创新之处,主要如下:

v2-10c5f75daa6f4b45b67cb92407035a27_b.jpg
《ImageNet Classification with Deep Convolutional Neural Networks》​www.cs.utoronto.ca

本文是基于大话CNN经典模型:AlexNet - 雪饼的个人空间 - OSCHINA整理得到的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值