人工智能00042 深度学习与图像识别书摘42 卷积神经网络Al

2024-03-06  本文已影响0人  良友知音

在2012年和他的学生Alex Krizhevsky设计的AlexNet[1],该模型拿到了当年ImageNet竞赛的冠军并因此掀起了一波深度学习的热潮。

ImageNet是李飞飞团队创建的一个用于图像识别的大型数据库,里面包含了超过1400万张带标记的图片。

2010年以来,ImageNet每年举办一次图片分类和物体检测的比赛——ILSVRC。图片分类比赛中有1000个不同类别的图片,每个类别大约有200~1000张来自不同源的图片。

自ImageNet竞赛举办开始,业界便将其视为标准数据集,后续很多优秀的神经网络结构都是从该比赛中诞生的。

AlexNet主要由5个卷积层和3个全连接层组成,最后一个全连接层通过Softmax最终产生的结果将作为输入图片在1000个类别(ILSVRC图片分类比赛有1000个类别)上的得分。

下面以输入一个227*227*3的图像(长和宽均为227个像素的3通道彩色图)为例,第一层卷积的卷积核大小为11*11*3,并且由96个卷积核组成。

所有卷积核均以stride为4滑过整张227*227*3的图片,根据卷积输出层分辨率计算公式(W+2*pad-kernel)/stride+1可以得出第一个卷积层输出层的分辨率大小为(227+2*0-11)/4+1=55。

不难得出第一层卷积最终的输出大小为55*55*96。

由于卷积层只有卷积核含有神经网络的参数,因此第一层卷积参数总量为(11*11*3)*96=35K。

AlexNet是第一个使用卷积神经网络在ILSVRC比赛中获得冠军的网络结构,它有如下几个特点。

(1)使用ReLU作为激活函数

为了加快深度神经网络的训练速度,AlexNet将传统神经网络神经元激活函数f(x)=tanh(x)或f(x)=(1+e-x)-1改为f(x)=max(0;x),即Rectified Linear Units(ReLUs)。

从一个含有4层卷积的神经网络上看,相比tanh,ReLUs的收敛速度要快好几倍。当训练误差同为25%时,ReLUs约进行5次迭代即可达到tanh约35次迭代的效。

(2)使用多种方法避免过拟合

AlexNet有超过6000万的参数,虽然ILSVRC比赛含有大量的训练数据,但仍然很难完成对如此庞大参数的完全训练,从而导致严重的过拟合问题。

AlexNet很巧妙地运用下面两种方法处理了这个问题。

1)数据增强:在图像领域,最简单也最常用的避免过拟合的方法就是对数据集的增强。这里介绍一些比较常见的数据增强方法。

·对原始图片做随机裁剪。假如原始输入图片的大小为256*256,那么训练时可随机从256*256的图片上裁剪224*224的图片作为网络的输入。

·另外还有一些常见数据增强方法,AlexNet论文中并没有全部用到,例如训练时对原始图片进行随机地上下、左右翻转,平 移, 旋转,缩放等,都有很好的效果。

(2)使用多种方法避免过拟合

AlexNet有超过6000万的参数,虽然ILSVRC比赛含有大量的训练数据,但仍然很难完成对如此庞大参数的完全训练,从而导致严重的过拟合问题。AlexNet很巧妙地运用下面两种方法处理了这个问题。

1)数据增强:在图像领域,最简单也最常用的避免过拟合的方法就是对数据集的增强。这里介绍一些比较常见的数据增强方法。

·对原始图片做随机裁剪。假如原始输入图片的大小为256*256,那么训练时可随机从256*256的图片上裁剪224*224的图片作为网络的输入。

·另外还有一些常见数据增强方法,AlexNet论文中并没有全部用到,例如训练时对原始图片进行随机地上下、左右翻转,平移,缩放,旋转等,这些在实践中都有很好的效果。

2)使用dropout:该方法一方面是为了避免过拟合,另一方面是使用更有效的方式进行模型融合。

具体方法是在训练时让神经网络中每一个中间层神经元以5的一定倍数的概率(如0.5)置为0。

当某个神经元被置为0时,它便不会参与前向传播以及反向回传的计算。因此每当有一个新的图片输入时就意味着网络随机采样出一个新的网络结构,而真正的整个网络的权重一直是共享的。

从感性的角度来讲,dropout的存在也强迫了神经网络学习出更稳定的特征(因为在训练过程中随机屏蔽一些权重的同时还要保证算法的效果,因此学习出来的模型相对来说更稳 ,预测时使用所有的神经元,需要将其输出均乘以0.5。

2012年,AlexNet使用8层神经网络以top1分类误差16.4%的成绩摘得ILSVRC的桂冠。2013年,ZFNet在AlexNet的基础上做了超参的调整,使top1的误差降低到11.7%,并成为新的冠军。

ZFNet将AlexNet第一个卷积层的kernel为11*11,stride为4改为7*7,stride为2;第三、四、五层卷积的kernel个数从384、384、256分别改为512、1024和512。

2014年,Simonyan和Zisserman设计了层次更深并且kernel更小的VGGNet。

上一篇下一篇

猜你喜欢

热点阅读