这篇论文的作者包括Alex Krizhevsky,Ilya Sutskever 和Geoffrey E. Hinton,三人均来自于多伦多大学计算机科学院,其中,前两者都是Hinton的学生,Hinton就不多说了,和Yoshua Bengio以及Yann LeCun共同获得了2018年图灵奖。下面我们来看一下这篇论文《ImageNet Classification with Deep Convolutional Neural Networks》。
我主要从论文的性能提升方面,和训练提速方面进行介绍。
1、ReLU
论文并没有使用标准的tanh函数和sigmoid函数
而是使用了Rectified Linear Unit,即ReLU
结果也是显而易见的
使用ReLU(实线)的四层卷积神经网络在CIFAR-10上达到25%的训练错误率,比使用tanh(虚线)神经元的等效网络快六倍。每个网络的学习率是独立选择的,以使训练尽可能快。没有采用任何形式的正规化。这里所演示的效果的大小随着网络架构的不同而不同,但是使用ReLUs的网络始终比使用饱和神经元的网络学习速度快几倍。
为什么ReLU比tanh和sigmoid收敛速度快呢,我们来具体看一下几个函数
从图像上可以看出,sigmoid和tanh在饱和区域非常平缓,这会导致gradient更新很慢或者几乎没有更新,从而减缓收敛速度,即gradient vanishing问题,相比之下,ReLU则不存在这个问题。还有一种说法是从函数公式上来看ReLU的求导也比sigmoid和tanh简单。
同时,虽然文章并没有说使用ReLU可以提升性能,但是一些看法认为ReLU会使部分神经元的输出为0(参见ReLU公式),这样减少了参数的相互依存关系,造成了网络的稀疏性,缓解了过拟合问题的发生。
更加具体的sigmoid,tanh和ReLU三者的对比可以参考
https://blog.csdn.net/weixin_41417982/article/details/81437088
2、双GPU并行运行
两个GPU各自负责一半的神经元的运算,同时,两个GPU之间只在特定的网络层进行通信,这一点从网络结构上也可以看出
与单GPU训练相比,双GPU训练速度略快,同时错误率在top-1和top-5分别减少了1.7%和1.2%。我一直比较意外为什么多GPU运行会提升模型的性能,请知道的小伙伴给我留言啊
3、LRN
LRN即Local Response Normalization
其中a代表在feature map中第i个卷积核(x,y)坐标经过了ReLU激活函数的输出,输出的结构是一个四维数组[batch,height,width,channel],
【batch:批次数(每一批为一张图片)
height:图片高度,
width:图片宽度,
channel:通道数可以理解成一批图片中的某一个图片经过卷积操作后输出的神经元个数(或是理解成处理后的图片深度)】
具体可以参考https://blog.csdn.net/yangdashi888/article/details/77918311
n表示相邻的几个卷积核。N表示这一层总的卷积核数量。k, n, α和β是hyper-parameters,他们的值是在验证集上实验得到的。
从公式可以看出,它强调的是第i个卷积核和附近的卷积核的一种对比,也被称为横向抑制。
LRN将错误率在top-1和top-5分别减少了1.4%和1.2%。
4、Overlapping Pooling
对于一个z x z的区域,如果设置s=z,就是传统的池化方法,如果设置s<z,就是Overlapping Pooling。
Overlapping Pooling将错误率在top-1和top-5分别减少了0.4%和0.3%。
5、Data Augmentation
常见的方法包括图片的平移,旋转等。另外,文中还使用了PCA
PCA指对于图像的每个RGB像素,都加上
其中,pi和 λi是RGB像素值的3×3协方差矩阵的第i个特征向量和特征值。αi是随机变量。
该方案近似地捕获了自然图像的一个重要特性,即对象标识不受光照强度和颜色变化的影响。
这个方案将错误率在top-1减少了1%。
6、Dropout
Dropout使得每个神经元的输出有0.5的概率为0。每次输入时,神经网络都会对不同的结构进行采样,但是所有这些结构都共享权重。这也减少了神经元之间复杂的相互适应,造成网络的稀疏性。
Dropout可以有效降低过拟合,但是迭代次数会增加1倍。
来源:CSDN
作者:鱼只
链接:https://blog.csdn.net/heatrain/article/details/104218971