美文网首页机器学习与数据挖掘深度学习-推荐系统-CV-NLP
【经典算法必读】图片分类系列之(二): AlexNet

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

作者: 轻墨lightink | 来源:发表于2019-08-24 22:10 被阅读1次

    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)多卷积核尺度

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

    Training tricks

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

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

    1. 多GPU训练和分组卷积

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

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

    2)data augmentation

    1. 使用了random crop和horizontal reflection

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

    2. 图片像素值的PCA

    一张图片有3个通道,RGB。3个通道间的3x3协方差矩阵,求出其特征值λ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=3x3,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训练的高效性

    结论

    AlexNet是伟大的,代表着质的飞跃,代表着新时代的来临。

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/wdlcectx.html