CNN之AlexNet网络详述

AlexNet首次在大规模图像数据集实现了深层卷积神经网络结构,点燃了深度学习这把火。其在ImageNet LSVRC-2012目标识别的top-5 error为15.3%,同期第二名仅为26.2%,碾压其他传统的hand-craft 特征方法,使得计算机视觉从业者从繁重的特征工程中解脱出来,转向思考能够从数据中自动提取需要的特征,做到数据驱动。得益于GPU计算性能的提升以及大规模数据集的出现,自此后每年的ImageNet LSVRC挑战赛都被深度学习模型霸占着榜首。

1.创新点:

训练出当前最大规模的卷积神经网络,此前LeNet-5网络仅为3个卷积层及1个全连接层。

实现高效的GPU卷积运算结构,也使得此后GPU成为深度学习的主要工具,老黄做梦都要笑醒了。

通过众多的skills(dropout、RELU、Data Augmentation)解决深层神经网络的过拟合问题,使得该网络在60 million参数的情况下依旧能很好收敛。这些方法现在已经成为了CNN不可或缺的一部分。

2.网络结构:

由于当时的GPU运算能力比较低,AlexNet通过两个GPU协同训练,因此文章给出的网络结构不如NetScope的清晰,参见Netscope

 

该网络共包含8个权重层,其中5个卷积层,3个全连接层。1,2卷积层后连有LRN层,不过此后的网络也证明LRN并非CNN中必须包含的层,甚至有些网络加入LRN后效果反而降低。每个LRN及最后层卷积层后跟有最大池化层,并且各个权重层均连有RELU激活函数。全连接层后使用了dropOut这一神器以解决过拟合。上面这幅图的feature map 维度需要综合上下两个GPU的结果,其输入为224*224*3的图片,第一层卷积层的kernel个数为96,size为11*11*3,步伐为4,其得到的feature map size为55*55*48。有个细节,计算feature map size时我们发现,(224-11)/4 并不能整除,也就是说kernel在水平移动时的最后一个感受野并非为11*11。不过这个细节在NetScope中已经修改了,里面的输入被resize到227*227*3。其后的卷积、池化及全连接就比较好理解了,当我们发现卷积的kernel size不能整除时,自动pad就好啦。

卷积1步伐为4,kernel size为11*11*96,feature map 为55*55*96

Pooling1步伐为2,kernel为3*3,feature map 为27*27*96

卷积2步伐为1,kernel size 为5*5*256,feature map 为27*27*256,feature map大小未变说明卷积前左右各pad 2

Pooling2步伐为2,kernel 为3*3,feature map 为13*13*256

卷积3步伐为1,kernel size 为3*3*384,feature map 为13*13*384

卷积4步伐为1,kernel size 为3*3*384,feature map 为13*13*384

卷积4步伐为1,kernel size 为3*3*256,feature map 为13*13*256

Pooling3步伐为2,kernel 为3*3,feature map 为6*6*256

全连接6、7的神经元个数为4096,全连接层8神经元个数为1000,对应于ImageNet的1000类。

3、网络特点

  • RELU的使用


我们知道神经网络需要使用激活函数,一般激活函数具有两个作用。其一、无论卷积还是全连接层,实质上都是线性运算,通过加入非线性的激活函数可以增强网络的非线性映射能力,相当于kernel method。其二、神经网络一般通过BP算法优化,激活函数可以加快网络收敛速度。传统神经网络激活函数通常为反正切或是sigmoid,AlexNet使用RELU作为激活函数,相比于反正切,该方法训练速度大约有6倍提升。RELU激活函数简单到难以置信,[公式],也就是说我们放弃了小于0的那部分导数,同时正数部分的导数为1啊!BP时自然会快啦!

  • LRN


虽然后来的很多网络都不屑于使用LRN,甚至直接说LRN对于网络没有任何提升,但是思路真的很新奇呀。

LRN加在RELU的激活后面,能够增加网络的泛化能力,并在ILSVRC-2012上降低1%的错误率。传说思路来源于神经元的侧向抑制机制,不同的神经元都在做特征提取这件事,能否让他们相互竞争呢?

 

其中[公式]为kernel i 在x,y坐标的feature map,j为x,y位置的其他相邻kernel的feature map,这样我们就可以通过其他kernel的响应抑制我们的我们的feature map啦。文章给出了超参数的经验值,估计试了很多很多次吧。成功开启深度学习调参之路。

 

  • Overlapping Pooling


也算是创新点之一吧,毕竟此前的文章的池化没有重叠的,不过后续的其他文章也鲜有重叠。重叠池化的意思是,池化步伐小于kernel size,这样池化后的feature map的感受野其实是有部分重叠的。

  • Data Augmentation


文章使用Random Crop、flip从而上千倍的扩充训练样本的数量,也使得随机裁剪成为通用方法。具体做法就是首先将图片resize到256*256大小,然后从中随机crop出224*224大小的patch训练,测试时就从四个角及中心crop,然后水平翻转图像形成10个测试图片,然后对于这10个结果取一下平均值就好啦。另一种增强为转换RGB通道的强度,在之后的模型中很少用到,对于该模型,大约降低了1%错误率。

  • DropOut


Hinton自家的东西,当然要用上啦,可以看到卷积神经网络的计算量其实主要集中在全连接层,这些层参数太多了,也最容易发生过拟合。DropOut通过训练时随机使得一部分结点失效,不贡献连接权重而减少过拟合风险。同时强迫这些神经元去学习互补的一些特征。现在已经是主流做法啦,训练时全连接层50%结点不工作,测试时工作就好啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值