卷积神经网络之AlexNet

时间:2024-03-31 11:55:11
  • AlexNet为8层结构,卷积层5层,全连接层2层
  • 学习参数6千万个,神经元有650,000个
  • AlexNet在两个GPU上运行
  • AlexNet在第2,4,5层均是前一层自己GPU内连接,第3层是与前面两层全连接,全连接是2个GPU全连接;
  • RPN层第1,2个卷积层后;
  • Max pooling层在RPN层以及第5个卷积层后。
  • ReLU在每个卷积层以及全连接层后。
  • 卷积核大小数量:
     conv1 : 96 11x11x3(个数/长/宽/深度)
     conv2:256 5x5x48
     conv3:384 3x3x256
     conv4: 384 3x3x192
     conv5: 256 3x3x192
  • ReLU、双GPU 运算:提高训练速度(应用于所有卷积层和全连接层)
  • 重叠pool池化层:提高精度,不容易产生过拟合(应用在第一层、第二层、第五层后面)
  • 局部响应归一化层(LRN):提高精度(应用在第一层和第二层后面)
  • Dropout:减少过度拟合(应用在前两个全连接层)
    卷积神经网络之AlexNet
    前5层:卷积层
    卷积神经网络之AlexNet
    后三层:全连接层
    卷积神经网络之AlexNet

AlexNet的新技术特点

  • ReLU作为**函数
      ReLu作为非饱和函数,论文中验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题;
  • Dropout避免模型过拟合
      在训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。在alexnet的最后几个全连接层中使用了Dropout.
  • 重叠的最大池化
      之前的CNN中普遍使用平均池化,而Alexnet全部使用最大池化,避免平均池化的模糊化效果。并且,池化的步长小于核尺寸,这样使得池化层的输出之间会有重叠和覆盖,提升了特征的丰富性
  • 提出LRN层
      提出LRN层,对局部神经元的活动创建竞争机制,使得响应较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。
  • GPU加速
  • 数据增强
      随机从256x256的原始图像中截取224x224大小的区域(以及水平翻转的镜像),相当于增强了(256-224)x(256-224)x2=2048倍的数据量。使用了数据增强后,减轻过拟合,提升泛化能力。避免因为原始数据量的大小使得参数众多的CNN陷入过拟合中。

学习细节
AlexNet训练采用的是随机梯度下降(Stochastic gradient descent),每批图像大小为128,动力为0.9,权重衰减为0.005,卷积神经网络之AlexNet
其中i是迭代指数,v是动力变量,ε是学习率,是目标关于w、对求值得导数在第i批样例上得平均值。我们用一个均值为0、标准差为0.01的高斯分布初始化了每一层的权重。我们用常数1初始化了第二、第四和第五个卷积层以及全连接隐层的神经元偏差。该初始化通过提供带正输入的ReLU来加速学习的初级阶段。我们在其余层用常数0初始化神经元偏差。
对于所有层都是用了相等的学习率,这是在整个训练过程中手动调整的。我们遵循的启发是,当验证误差率在当前学习率下不再提高时,就将学习率除以10。学习率初始化为0.01,在终止前降低三次。作者训练该网络时大致将这120万张图像的训练集循环了90次。

ReLU**函数

  • 用ReLU代替了传统的Tanh或者Logistic,好处有:
      1.ReLU本质上是分段线性模型,前向计算非常简单,无需指数之类操作;
      2.ReLU的偏导也很简单,反向传播梯度,无需指数或者除法之类操作;
      3.ReLU不容易发生梯度发散问题,Tanh和Logistic**函数在两端的时候导数容易趋近于零,多级连乘后梯度更加约等于0;
      4.ReLU关闭了右边,从而会使得很多的隐层输出为0,即网络变得稀疏,起到了类似L1的正则化作用,可以在一定程度上缓解过拟合。
  • 用ReLU代替了传统的Tanh或者Logistic,缺点有:
     1. 左边全部关闭了很容易导致某些隐藏节点永无翻身之日,所以后来又出现pReLU,randomReLU等改进,
     2.ReLU会很容易改变数据的分布,因此ReLU后加Batch Normalization也是常用的改进的方法。

LRN(Local Response Normalization)
Local Response Normalization要硬翻译的话是局部响应归一化,简称LRN,实际就是利用临近的数据做归一化。
对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。卷积神经网络之AlexNet