深度卷积神经网络AlexNet

1.模型介绍
深度卷积神经网络AlexNet
文章图片

AlexNet 模型( 5 卷积层+ 3 全连接层共 8 层神经网络)
AlexNet 模型包含 6 千万个参数和 65 万个神经元,包含 5 个卷积层,其中有几层后面跟着最大池化(max-pooling)层,以及 3 个全连接层,最后还有一个 1000 路的 softmax 层。为了加快训练速度,AlexNet 使用了 Relu 非线性激活函数以及一种高效的基于 GPU 的卷积运算方法。为了减少全连接层的过拟合,AlexNet 采用了最新的 “Dropout”防止过拟合方法,该方法被证明非常有效。
特点:
更深的网络结构
使用层叠的卷积层,即卷积层+卷积层+池化层来提取图像的特征
使用Dropout抑制过拟合
使用数据增强Data Augmentation抑制过拟合
使用Relu替换之前的sigmoid的作为激活函数
多GPU训练
在最初的感知机模型中,输入和输出的关系如下:
深度卷积神经网络AlexNet
文章图片

只是单纯的线性关系,这样的网络结构有很大的局限性:即使用很多这样结构的网络层叠加,其输出和输入仍然是线性关系,无法处理有非线性关系的输入输出。因此,对每个神经元的输出做个非线性的转换也就是,将上面就加权求和
深度卷积神经网络AlexNet
文章图片

【深度卷积神经网络AlexNet】的结果输入到一个非线性函数,也就是激活函数中。 这样,由于激活函数的引入,多个网络层的叠加就不再是单纯的线性变换,而是具有更强的表现能力。
2.sigmoid
深度卷积神经网络AlexNet
文章图片

在网络层数较少时,sigmoid函数的特性能够很好的满足激活函数的作用:它把一个实数压缩至0到1之间,当输入的数字非常大的时候,结果会接近1;当输入非常大的负数时,则会得到接近0的结果。这种特性,能够很好的模拟神经元在受刺激后,是否被激活向后传递信息(输出为0,几乎不被激活;输出为1,完全被激活)。
sigmoid一个很大的问题就是梯度饱和。 观察sigmoid函数的曲线,当输入的数字较大(或较小)时,其函数值趋于不变,其导数变的非常的小。这样,在层数很多的的网络结构中,进行反向传播时,由于很多个很小的sigmoid导数累成,导致其结果趋于0,更新结果很慢
3.ReLU
深度卷积神经网络AlexNet
文章图片

针对sigmoid梯度饱和导致训练收敛慢的问题,在AlexNet中引入了ReLU。ReLU是一个分段线性函数,小于等于0则输出为0;大于0的则恒等输出。相比于sigmoid,ReLU有以下有点:计算开销下。
sigmoid的正向传播有指数运算,倒数运算,而ReLu是线性输出;反向传播中,
sigmoid有指数运算,而ReLU有输出的部分,导数始终为1.
梯度饱和问题
稀疏性。Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。
5.数据增强
当训练数据有限时,可以通过一些变换从训练数据集合中生成一些新的数据,以快速扩充训练数据,对于图像数据集,可进行
翻转
随机裁剪
平移,颜色光照的变换等等
AlexNet中对数据做了以下操作:
随机裁剪,对256×256的图片进行随机裁剪到227×227,然后进行水平翻转。
测试的时候,对左上、右上、左下、右下、中间分别做了5次裁剪,然后翻转,共10个裁剪,之后对结果求平均。
对RGB空间做PCA(主成分分析),然后对主成分做一个(0, 0.1)的高斯扰动,也就是对颜色、光照作变换,结果使错误率又下降了1%
6.层叠池化
在池化的时候,每次移动的步长小于池化的窗口长度,这样就会出现重叠。重叠池化可以防止过拟合。
7.局部相应归一化
8.Dropout
在神经网络中Dropout通过修改神经网络本身结构来实现,对于某一层的神经元,通过定义的概率将神经元置为0,这个神经元就不参与前向和后向传播,就如同在网络中被删除了一样,同时保持输入层与输出层神经元的个数不变,然后按照神经网络的学习方法进行参数更新。在下一次迭代中,又重新随机删除一些神经元(置为0),直至训练结束。
深度卷积神经网络AlexNet
文章图片

    推荐阅读