CNN——AlexNet原理
AlexNet——Alex&Hinton
简介
AlexNet是Alex和Hinton参加2012年imagenet比赛时提出的卷积网络框架。
- 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 函数可以用于训练更深层次的网络。
梯度弥散现象
当神经网络的层数不断增大时,sigmoid函数等作为**函数时,靠近输入层的hidden layer梯度小,参数更新慢,很难收敛;靠近输出层的hidden layer梯度大,参数更新快,很快可以收敛。这种现象称为梯度弥散。同时,有一个与之相应的问题是,当前面的hidden layer梯度在不断训练变大后,后面的hidden layer梯度指数级增大,称为梯度爆炸。
-
多GPU训练
-
局部响应归一化层Local Response Normalization
为什么要引入LRN层?
首先要引入一个神经生物学的概念:侧抑制(lateral inhibitio),即指被**的神经元抑制相邻的神经元。归一化(normaliazation)的目的就是“抑制”,LRN就是借鉴这种侧抑制来实现局部抑制,尤其是我们使用RELU的时候,这种“侧抑制”很有效 ,因而在alexnet里使用有较好的效果。
归一化有什么好处?
1.归一化有助于快速收敛;
2.对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力。
公式如下:
- 重叠的最大池化
之前的CNN中普遍使用平均池化,而AlexNet使用最大处化,避免平均池化的模糊化效果。并且,池化的步长小于核尺寸,这样使得池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。
减少过拟合overfitting
- Dropout方法
训练时使用dropout随机互留一部分神经元,避免过拟合。
过拟合的表现:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。
Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的**值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。
因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。
- 数据增强data augmentation
数据增强主要是增大数据集,以减小过拟合的可能。AlexNet主要有两种增强方式:
- 产生图像变换和水平翻转。从256*256的图像上随机提取224*224的图像块,并在图像块上训练。
- 改变图像RGB通道的强度。
reference: