Press "Enter" to skip to content

【经典算法必读】图片分类系列之(二): AlexNet

AlexNet是划时代的,可以说掀起了机器学习的一场革命,标志着神经网络的凤凰涅槃、浴火重生,标志着深度学习大一统时代的来临,标志着通用人工智能又一次触手可及,也标志着一个超大级的人工智能泡沫的起点。

 

今天,就让我们以崇敬的心态,重温划时代之作AlexNet,具体论文是《ImageNet Classification with Deep Convolutional Neural Networks》。

 

模型结构

 

AlexNet的模型结构如下图。

是不是不太直观?改成如下图会容易懂一些。

可以看出,AlexNet模型主要有以下几个主要特点:

 

1)更深(8层,LeNet5层), 参数更多(比LeNet多1000倍)

 

AlexNet网络更深,共有8层(5层卷积层+3层全连接层),提出卷积神经网络的LeNet总共5层(2层卷积层+3层全连接层)。

 

AlexNet另一个革命性的特点是,参数特别多,多达6000万左右的参数,是LeNet的1000多倍。

 

2)Conv(特征层)+ FC(输出层)的组合配置

 

经过多层的Conv层提取特征后,利用FC层整合特征再输出,是早期卷积神经网络的经典配置。LeNet开创了这种配置,AlexNet保持了这种配置。

 

3)FC层占据绝对多数的模型参数

 

AlexNet 96%的参数都集中在3层全连接层中,卷积层只占据4%。(因全连接层参数太多,现在一般尽量避免全连接层,改用全卷积+GlobalAvgPooling)

 

4)卷积层与Pooling层交替

 

从而每隔一个stage,feature map的分辨率就减半。这种pattern是LeNet提出的,AlexNet及现在所有的网络模型都沿用这个pattern。

 

5)当分辨率(HW)减少时,要增加通道数,保证有效特征数量。

 

这种pattern也是LeNet提出的,AlexNet及现在所有的网络模型都沿用这个pattern。

 

6)多卷积核尺度

 

卷积核尺寸多样,大致层数越深,卷积核尺寸越小,11×11,5×5,3×3。(现在一般使用多层小卷积核代替大卷积核,这样参数变少深度变深,效果更好)

 

Training tricks

 

AlexNet的模型参数非常巨大,必须使用一些训练技巧才能收敛,下图给出了,AlexNet在训练过程中使用到的主要Tricks。

从输入到输出,依次使用的技巧是:

 

1)多GPU训练和分组卷积

 

由于AlexNet的参数多,数据规模大,为了有效的训练,作者开创了使用GPU训练的先河。这个是革命性的。

 

2012年还没有成熟的深度学习框架,作者为了训练更大的模型,采用了分组卷积(group=2),相当于直接把模型等分为两个独立模型,在两个GPU上单独训练,在第三个卷积层和最后的三个全连接层做特征交流。

 

2)data augmentation

 

i) 使用了random crop和horizontal reflection

 

由于ImageNet中图片分辨率不固定,作者先将每张图片的最短边resize到256,并保持图片长宽比例,再裁取图片正中部分的256×256,再从这256×256中随机裁取224×224的patch,这也是为什幺模型输入是224×224分辨率的来源,总共有32×32种patch。再加上horizontal reflection,总共会有32x32x2=2048种patch。

 

ii) 图片像素值的PCA

 

一张图片有3个通道,RGB。3个通道间的3×3协方差矩阵,求出其特征值λi和特征向量Pi,λi再乘以一个服从高斯分布N(0;0.1)的随机数αi的到λi * αi(i=1,2,3)。再利用下式,就可以求出RGB每个通道不随图片灰度值变化的重要特性object identity。

每个通道加上上述相应的特性值。

 

3)Local Response Normalization

 

每一个卷积层的输出形状为[B, H, W, C],以第一个卷积层为例,batch_size取32,则输出为[32, 55, 55, 96],取定b, h, w, c,假如b=5, h=10, w=10, c=30,Local Response Normalization的意思是将b,h,w相同,c附近n个结果做归一化,即[5, 10, 10, 30-n/2~30+n/2]的元素归一化作为[5, 10, 10, 30]的结果。具体的计算公式如下:

下图的示意比较直观:

4)ReLU激活函数

 

激活函数ReLU的发明是伟大的,这是神经网络能够再次崛起的重要因素之一。ReLU有效解决了数学上看似完美的非线性激活函数sigmoid和tanh的易饱和的问题,大大加快了收敛速度,大概提高6倍。如下图,相同的网络,只是激活函数不同(实线为ReLU,虚线为tanh),在CIFAR10上,ReLU的收敛速度显着加快6-7倍。

5)Overlapping Pooling

 

当下采样的kernel size大于stride,下采样之间就是有重叠的。AlexNet的所有Maxpooling kernel size=3×3,stride=2,均为overlapping pooling。

 

6)dropout

 

dropout在BatchNormalization之前是常用且非常有效的正则化技巧,但BatchNormalization出世之后,基本就销声匿迹了。AlexNet第一第二个全连接层使用了dropout rate=0.5的dropout。

 

7)weight decay

 

使用了0.0005的weight decay。

 

上述大部分trick都可以看做是为了防止过拟合,包括:

 

1)data augmentation

 

2)Local Response Normalization

 

3)dropout

 

4)weight decay

 

结果

 

下图是上文中的标准模型在2010年ImageNet测试集上的Top-1和Top-5准确度 ,提升相当明显,说明了深度学习性能的优越性。

下图是单模型、多模型集成,有无预训练等的结果对比,可以看出一下几点: 1)效果提升超10个点,质的提升,说明了深度学习性能的优越性 2)预训练是有效的 3)多模型继承是有效的

下图第一列是test set中的5张照片,右边是训练集中,模型最后一个隐藏层FC4096,与第一列中的照片欧式距离最近的6张。可以看出,训练集中的照片与测试集的照片姿态变化挺大的,说明模型能学习到物体有效特征。

下图是第一层卷积神经网络的96个11x11x3卷积核的可视化,上面48个是在GPU1上学习的,下面48个是在GPU2上学习的,GPU1上学习的都是与颜色无关的特征,GOU2上学习的大部分都是与颜色相关的特征。

革命性的启示

 

1)证明了大型神经网络,配合各种技巧,在大规模数据上的收敛性

 

2)证明了大型神经网络,在大规模数据上,相较于传统机器学习算法的巨大性能优势

 

3)证明了GPU训练的高效性

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注