day7-经典神经网络AlexNet
ImageNet大规模视觉挑战赛(ILSVRC)被称为深度学习在图像分类任务研究方面进展的标杆。
AlexNet网络参加了ILSVRC2012年大赛获得冠军(超过第二名10%的性能),掀起了一波深度学习的浪潮,一个具有里程碑意义的网络。
1 模型结构
5个卷积层3个全连接层(池化和Normal不作为层看待)
2 网络创新
多GPU训练,ReLU激活函数,LRN归一化,Dropout,重叠池化,数据增强等。
2.1首发GPU训练网络
AlexNet使用了两块GTX 580 GPU进行训练,单个GTX 580只有3GB显存,这限制了可训练的网络的最大规模。因此作者将AlexNet分布在两个GPU上,在每个GPU的显存中储存一半的神经元的参数。
除了将模型的神经元进行了并行,还使得通信被限制在了某些网络层。第三层卷积要使用第二层所有的特征图,但是第四层却只需要同一块GPU中的第三层的特征图。
2.2使用ReLU激活函数
全称为:Rectified Linear Unit,是一种人工神经网络中常用的激活函数,通常意义下,其指代数学中的斜坡函数
2.3使用LRN局部响应归一化
LRN目的在于卷积(即 Relu 激活函数出来之后的)值进行局部的归一化。
归一化(normalization)的目的就是"抑制",借鉴"侧抑制"的思想来实现局部抑制,当我们使用Relu激活函数的时候,这种局部抑制显得很有效果。
LRN的主要思想是在神经元输出的局部范围内进行归一化操作,使得激活值较大的神经元对后续神经元的影响降低,从而减少梯度消失和梯度爆炸的问题。具体来说,对于每个神经元,LRN会将其输出按照局部范围进行加权平均,然后将加权平均值除以一个尺度因子(通常为2),最后将结果取平方根并减去均值,得到归一化后的输出。
作用于ReLU层之后,抑制反馈较小的神经元,放大反馈较大的 神经元,增强模型泛化能力。
后续提出了更加有说服能力的批量归一化(Batch Normalization)的概念,所以现在归一化几乎都用batchNorm的方法实现归一化。
2.4全连接层加入Dropout
正则化方法,提高模型泛化能力。(随机丢弃)
2.5数据增强
增强方法 | 作用 |
---|---|
裁剪、翻转 | 保证模型能够正常收敛 |
PCA颜色扰动 | top1分类精度提升1%以上 |
2.6重叠池化
相邻池化区域的窗口有重叠,可提高模型泛化能力。
2.7测试时数据增强
将原始图片进行水平翻转、垂直翻转、对角线翻转、旋转角度等数据增强操作,得到多张图,分别进行推理,再融合得到最终输出结果。
提取图片四个角加中间五个位置并进行左右翻转得到十幅图片, 各自推理求取平均值。