ImageNet
是一个大的图片数据集。包含大约 1500万张图片,22000种类别。从2010年起,每年举办的图片分类比赛 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)
是 ImageNet
的一个子集,包含大约 120 万张训练集,5 万张验证集,15 万张训练集,共约140万张图片。
2010和2011年的比赛,Top-5 错误率很高。2012年, AlexNet
网络获得了比赛的冠军,Top-5 错误率(16.4%)相较于前一年(25.8%)有了大幅度提高。AlexNet 采用 CNN 架构,从那以后各种 CNN 网络架构被提出来,Top-5 错误率逐年降低。到2017年,SENet网络 Top-5 错误率为 2.3% 远远超出了人类的水平(5.1%)。 再进行这类竞赛意义也不大 ,所以 CVPR 研讨会宣布2017年是 ImageNet 竞赛正式组织的最后一年, 这标志着一个时代的结束 。
注:在评估分类模型的效果时,会遇见两种错误率:Top-1 和 Top-5。以 ILSVRC 为例,Top-1 错误率是指输出结果的1000个类别中,如果真实类别和概率最大的那个类别相同,则分类正确,否则分类错误。Top-5 错误率是指输出结果的1000个类别中,如果真实类别存在于概率最大的前五个类别中,则分类正确,否则分类错误。通常采用 Top-5 来衡量模型分类效果。
AlexNet架构
AlexNet由5个卷积层和3个全连接层组成。
注意:论文中的 input 为 224 ∗ 244 ∗ 3 224*244*3 224∗244∗3 那是错误的,正确的 input 为 227 ∗ 227 ∗ 3 227*227*3 227∗227∗3
Input: 227*227*3
Conv: 11*11 stride=4 96 kernels --> Parameters=11*11*3*96+96(bias)=34944
MaxPool: 3*3 stride=2 --> Parameters=0
Conv: 5*5 padding=2 256 kernels --> Parameters=5*5*96*256+256(bias)=614656
MaxPool: 3*3 stride=2 --> Parameters=0
Conv: 3*3 padding=1 384 kernels --> Parameters=3*3*256*384+384(bias)=885120
COnv: 3*3 padding=1 384 kernels --> Parameters=3*3*384*384+384(bias)=1327488
Conv: 3*3 padding=1 256 kernels --> Parameters=3*3*384*256+256(bias)=884992
MaxPool: 3*3 stride=2 --> Parameters=0
FC: Parameters=6*6*256*4096=37748736
FC: Parameters=4096*4096=16777216
FC: Parameters=4096*1000=4096000
Total Patameters=62369152 超过六千万参数!!!
AlexNet模型特点
1、使用ReLU作为激活函数
传统的神经网络使用 Tanh 或 Sigmoid 作为激活函数,AlexNet 使用 ReLU作为激活函数,训练速度更快,以下图为例:
同时训练一个四层神经网络,实线使用 ReLU 作为激活函数,虚线使用 Tanh 作为激活函数。在 Training error rate 为0.25时,ReLU收敛更快。
为什么ReLU更快?ReLU函数定义为:
f
(
x
)
=
m
a
x
(
0
,
x
)
f(x)=max(0,x)
f(x)=max(0,x)
函数图像如下图所示:
TanH函数图像如下图所示:
可以看出TanH函数在 Z 很大或很小的时候进入饱和状态,在使用梯度下降更新参数时,梯度很小(接近于0),导致收敛很慢。而且 TanH函数比ReLU函数更复杂,计算更慢。
ReLU函数在Z大于0收,梯度始终为1,收敛比较快。在Z小于0时,梯度为0。虽然ReLU收敛更快,但由于ReLU在Z小于0时,梯度为0,可能导致模型参数不更新,处于假死状态。
2、使用GPU进行训练
3、局部响应归一化(Local Response Normalization)
这个特性在后面被证明对模型效果没多大影响,可以不用。
4、重叠的Pooling
一般在做Pooling的时候,stride 一般和 kernel 的长或宽一样,即不重叠。而在AlexNet中,kernel大小都 3 ∗ 3 3*3 3∗3 ,stride 为 2,即在做Pooling的时候是重叠的。
AlexNet为防止过拟合采用的方法
1、Data Augmentaion
使用两种数据扩充的方式:1、图片平移和水平镜像。2、修改图片RGB通道的强度。
2、Dropout
在第一和第二个全连接层加入Dropout
注:AlextNet论文地址:https://www.cs.toronto.edu/~fritz/absps/imagenet.pdf