ImageNet Classification with Deep Convolutional Neural Networks阅读笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Lxh19920114/article/details/50016305

今后准备以阅读笔记的形式来整理自己看过的一些文献,今天就写第一篇吧,不过我也并不能保证所写的一定是正确的,都是个人理解,如有不对之处还请不吝赐教。这一篇也算的上是CNN的成名之作,自从这篇文章之后,CNN就火了起来。这篇文章的第三位作者就是深度学习的鼻祖Hinton老先生。

这篇文章主要分为七个部分,其中引言和结果我就不叙述了,主要介绍一下其中的一些处理的技巧。

这篇文章主要使用了以下技巧:

1、采取ReLU(Rectified Linear Units)激活函数

2、使用局部响应归一化(Local Response Normalization,LRN)

3、使用重叠池化(Overlapping Pooling)

4、数据集的扩大

5、dropout方法

1、采取ReLU(Rectified Linear Units)激活函数f (x) = max(0,x),其实就是保留结果中的正数,传统的激活函数sigmoid或者tanh函数都是饱和非线性函数,即函数值达到一定程度变化非常小几乎为零了,因此传统的神经网络在深度增加了之后,利用反向传播的方法进行训练时,误差传到前几层的时候就特别小,出现了所谓的梯度消失的问题(gradient vanishing problem),改用ReLU激活函数之后不仅可以解决梯度消失的问题,还可以加快收敛。


2、使用局部响应归一化(Local Response Normalization,LRN),具体的公式如下:


公式看着好吓人,不过原理很简单,一个大的求和项,那么求的是什么东西的和呢?就是对任意的卷积核(kernel),选取左右临近(adjacent)的n个卷积核,将它们在同一个位置上卷积的结果进行求和。其中(x,y)就代表着位置,i就代表第i个卷积核,而剩下的k,n,α和β都是超参数,是由验证集(validation set)决定的。当然具体这么做的好处,文章中只提到了识别率提高了1.4%

3、使用重叠池化,即池化的步长小于池化的区域大小。具体的好处也只是识别率提高了0.4%,至于为什么也没有说。

4、数据集的增大这一个技巧主要是用来解决过拟合(OverFitting),具体的措施就是,首先将图片统一缩放到256*256大小,然后从中提取224*224的块,这样就有(256-224)*(256-224)=1024个图片,还没有结束,这1024张图片的水平镜像的图片也可以用来训练,这样就把原来一张图片变为了2048张图片。当然这些图片都不是相互独立的,不过也可以从一定程度上解决过拟合的问题。在测试的时候,就只提取10张图片,四个角以及中心的224*224的图片和这些图片的水平镜像图片,然后对这些图片进行综合性分析。

5、dropout方法是本文最大的一个创新点,采取这种方法的原因,作者说是为了取代多种模型的结合才使用的,主要是因为单一的模型训练就需要很久,多个模型训练就要花更多的时间,因此采用了这种方法。具体的操作过程就是,每一次训练的时候只训练其中一半的神经元,另一半不参加训练,当然这个选择是随机的,因此对于每一次的输入来说,训练的都是不同结构的网络,但是这些网络都是共享权值的。

这种方法使得一个神经元无法依赖某个特定的神经元的存在,被强迫去学习在与那些随机挑选出来神经元结合的时候都有一定用处的具有鲁棒性的特征,简单来说就是学习到的特征不是和某一个特定的神经元相关,而是与一堆神经元相关(可能有些不严谨,但是大致的意思就是这样)。当然,这样做的话训练的次数也会增多,差不多是两倍的关系。不过能够极大的缓解过拟合还是值得的。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页