2012届图像识别大赛的冠军,top-5误差仅为15.3%,主要特点如下:
参数更多:60M个;网络更大:650000个神经元;网络构成:5个卷积层(有些层后添加了池化层)+ 3个全连接层(最后一层是1000维的softmax层);使用GPU提升训练速度;使用了ReLU激活函数,改善梯度消失,提升训练速度;使用dropout减少过拟合;以上是原文的网络结构,作者在写这篇论文的时候,GPU的处理速度还比较慢,所以AlexNet 采用了在两个 GPU 上进行训练的方法。大致原理是:这些层分别拆分到两个不同的GPU 上,同时还专门有一个方法用于两个GPU 进行交流。
这里用一张227×227×3的图片作为输入,实际上原文中使用的图像是224×224×3,其实227×227这个尺寸更好一些(我的理解是卷积后图片尺寸是整数的缘故)。
ReLU激活函数的优点:
程序实现时ReLU是一个 if-else 语句,而 sigmoid 函数需要进行浮点四则运算,在实践中,使用ReLU激活函数的神经网络通常会比使用 sigmoid 或者 tanh 激活函数学习的更快;sigmoid 和 tanh 函数的导数在正负饱和区的梯度都会接近于0,而ReLU函数大于 0 部分都为常数,不会产生梯度消失。进行局部响应归一化的动机是,对于这张 13×13 的图像中的每个位置来说,我们可能并不需要太多的高激活神经元。但是后来,很多研究者发现 LRN 起不到太大作用。
使用池化层可以缩减模型的大小。作者在使用重叠窗pooling进行训练时发现更不容易出现过拟合现象。
使用数据增广可以对抗过拟合,有pad、水平/垂直翻转、随机裁剪、彩色转换等多种方法。
使用丢弃法可以对抗过拟合。在训练时使用dropout,每次训练时的模型结构都不一样,避免过度依赖某一些神经元而导致过拟合。作者在文中提到dropout减少了过拟合,也使收敛需要的迭代次数增加一倍。
参考了吴恩达老师的deeplearning.ai。