CNN——AlexNet原理

AlexNet——Alex&Hinton

简介

AlexNet是Alex和Hinton参加2012年imagenet比赛时提出的卷积网络框架。

  • AlexNet结构
CNN——AlexNet原理

前五层为卷积层:

CNN——AlexNet原理

后三层为全连接层:

CNN——AlexNet原理

第1卷积层使用96个核对224 × 224 × 3的输入图像进行滤波,核大小为11 × 11 × 3,步长是4个像素(核映射中相邻神经元感受野中心之间的距离)。第2卷积层使用用第1卷积层的输出(响应归一化和池化)作为输入,并使用256个核进行滤波,核大小为5 × 5 × 48。第3,4,5卷积层互相连接,中间没有接入池化层或归一化层。第3卷积层有384个核,核大小为3 × 3 × 256,与第2卷积层的输出(归一化的,池化的)相连。第4卷积层有384个核,核大小为3 × 3 × 192,第5卷积层有256个核,核大小为3 × 3 × 192。每个全连接层有4096个神经元。最后一层全连接层的输出是1000维softmax的输入,softmax会产生1000类标签的分布。我们的网络最大化多项逻辑回归的目标,这等价于最大化预测分布下训练样本正确标签的对数概率的均值。

基本原理

架构

  • ReLU修正线性单元

模拟神经元输出的**函数一般是单双极性的sigmoid函数,但是二者在x非常大或小时,函数的输出基本不变,训练速度很慢;而ReLU函数则是非饱和函数,训练更快。同时,此函数具有线性性质(正值部分),在反向传播时,不会有由于非线性引起的剃度弥散现象(顶层误差较大,由于逐层递减误差传递,引起低层误差很小,导致深度网络地层权值更新量很小,导致深度网络局部最优)。所以 ReLU 函数可以用于训练更深层次的网络。
CNN——AlexNet原理

梯度弥散现象

当神经网络的层数不断增大时,sigmoid函数等作为**函数时,靠近输入层的hidden layer梯度小,参数更新慢,很难收敛;靠近输出层的hidden layer梯度大,参数更新快,很快可以收敛。这种现象称为梯度弥散。同时,有一个与之相应的问题是,当前面的hidden layer梯度在不断训练变大后,后面的hidden layer梯度指数级增大,称为梯度爆炸

  • 多GPU训练

  • 局部响应归一化层Local Response Normalization

为什么要引入LRN层?

首先要引入一个神经生物学的概念:侧抑制(lateral inhibitio),即指被**的神经元抑制相邻的神经元。归一化(normaliazation)的目的就是“抑制”,LRN就是借鉴这种侧抑制来实现局部抑制,尤其是我们使用RELU的时候,这种“侧抑制”很有效 ,因而在alexnet里使用有较好的效果。

归一化有什么好处?

1.归一化有助于快速收敛;

2.对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。

公式如下:

CNN——AlexNet原理
  • 重叠的最大池化

之前的CNN中普遍使用平均池化,而AlexNet使用最大处化,避免平均池化的模糊化效果。并且,池化的步长小于核尺寸,这样使得池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。

减少过拟合overfitting

  • Dropout方法

训练时使用dropout随机互留一部分神经元,避免过拟合。

过拟合的表现:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。

Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的**值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。

CNN——AlexNet原理

因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。

  • 数据增强data augmentation

数据增强主要是增大数据集,以减小过拟合的可能。AlexNet主要有两种增强方式:

  1. 产生图像变换和水平翻转。从256*256的图像上随机提取224*224的图像块,并在图像块上训练。
  2. 改变图像RGB通道的强度。

reference:

梯度弥散与梯度爆炸

深度学习中Dropout原理解析

局部响应归一化层(LRN)

AlexNet网络介绍

AlexNet 论文翻译——中英文对照