深度学习经典模型之Alexnet
有任何GTP需要,看我简介
1 AlexNet
1.1 模型介绍
AlexNet是由 A l e x Alex Alex $Krizhevsky 提出的首个应用于图像分类的深层卷积神经网络,该网络在 2012 年 I L S V R C ( I m a g e N e t L a r g e S c a l e V i s u a l R e c o g n i t i o n C o m p e t i t i o n )图像分类竞赛中以 15.3 提出的首个应用于图像分类的深层卷积神经网络,该网络在2012年ILSVRC(ImageNet Large Scale Visual Recognition Competition)图像分类竞赛中以15.3%的top-5测试错误率赢得第一名 提出的首个应用于图像分类的深层卷积神经网络,该网络在2012年ILSVRC(ImageNetLargeScaleVisualRecognitionCompetition)图像分类竞赛中以15.3^{[2]}$。AlexNet使用GPU代替CPU进行运算,使得在可接受的时间范围内模型结构能够更加复杂,它的出现证明了深层卷积神经网络在复杂模型下的有效性,使CNN在计算机视觉中流行开来,直接或间接地引发了深度学习的热潮。
1.2 模型结构
图1.1 AlexNet网络结构图
如图4.3所示,除去下采样(池化层)和局部响应规范化操作(Local Responsible Normalization, LRN),AlexNet一共包含8层,前5层由卷积层组成,而剩下的3层为全连接层。网络结构分为上下两层,分别对应两个GPU的操作过程,除了中间某些层( C 3 C_3 C3卷积层和 F 6 − 8 F_{6-8} F6−8全连接层会有GPU间的交互),其他层两个GPU分别计算结 果。最后一层全连接层的输出作为 s o f t m a x softmax softmax的输入,得到1000个图像分类标签对应的概率值。除去GPU并行结构的设计,AlexNet网络结构与LeNet十分相似,其网络的参数配置如表4.2所示。
表1.2 AlexNet网络参数配置
网络层 | 输入尺寸 | 核尺寸 | 输出尺寸 | 可训练参数量 |
---|---|---|---|---|
卷积层 C 1 C_1 C1 ∗ ^* ∗ | 224 × 224 × 3 224\times224\times3 224×224×3 | 11 × 11 × 3 / 4 , 48 ( × 2 G P U ) 11\times11\times3/4,48(\times2_{GPU}) 11×11×3/4,48(×2GPU) | 55 × 55 × 48 ( × 2 G P U ) 55\times55\times48(\times2_{GPU}) 55×55×48(×2GPU) | ( 11 × 11 × 3 + 1 ) × 48 × 2 (11\times11\times3+1)\times48\times2 (11×11×3+1)×48×2 |
下采样层 S m a x S_{max} Smax ∗ ^* ∗ | 55 × 55 × 48 ( × 2 G P U ) 55\times55\times48(\times2_{GPU}) 55×55×48(×2GPU) | 3 × 3 / 2 ( × 2 G P U ) 3\times3/2(\times2_{GPU}) 3×3/2(×2GPU) | 27 × 27 × 48 ( × 2 G P U ) 27\times27\times48(\times2_{GPU}) 27×27×48(×2GPU) | 0 |
卷积层 C 2 C_2 C2 | 27 × 27 × 48 ( × 2 G P U ) 27\times27\times48(\times2_{GPU}) 27×27×48(×2GPU) | 5 × 5 × 48 / 1 , 128 ( × 2 G P U ) 5\times5\times48/1,128(\times2_{GPU}) 5×5×48/1,128(×2GPU) | 27 × 27 × 128 ( × 2 G P U ) 27\times27\times128(\times2_{GPU}) 27×27×128(×2GPU) | ( 5 × 5 × 48 + 1 ) × 128 × 2 (5\times5\times48+1)\times128\times2 (5×5×48+1)×128×2 |
下采样层 S m a x S_{max} Smax | 27 × 27 × 128 ( × 2 G P U ) 27\times27\times128(\times2_{GPU}) 27×27×128(×2GPU) | 3 × 3 / 2 ( × 2 G P U ) 3\times3/2(\times2_{GPU}) 3×3/2(×2GPU) | 13 × 13 × 128 ( × 2 G P U ) 13\times13\times128(\times2_{GPU}) 13×13×128(×2GPU) | 0 |
卷积层 C 3 C_3 C3 ∗ ^* ∗ | 13 × 13 × 128 × 2 G P U 13\times13\times128\times2_{GPU} 13×13×128×2GPU | 3 × 3 × 256 / 1 , 192 ( × 2 G P U ) 3\times3\times256/1,192(\times2_{GPU}) 3×3×256/1,192(×2GPU) | 13 × 13 × 192 ( × 2 G P U ) 13\times13\times192(\times2_{GPU}) 13×13×192(×2GPU) | ( 3 × 3 × 256 + 1 ) × 192 × 2 (3\times3\times256+1)\times192\times2 (3×3×256+1)×192×2 |
卷积层 C 4 C_4 C4 | 13 × 13 × 192 ( × 2 G P U ) 13\times13\times192(\times2_{GPU}) 13×13×192(×2GPU) | 3 × 3 × 192 / 1 , 192 ( × 2 G P U ) 3\times3\times192/1,192(\times2_{GPU}) 3×3×192/1,192(×2GPU) | 13 × 13 × 192 ( × 2 G P U ) 13\times13\times192(\times2_{GPU}) 13×13×192(×2GPU) | ( 3 × 3 × 192 + 1 ) × 192 × 2 (3\times3\times192+1)\times192\times2 (3×3×192+1)×192×2 |
卷积层 C 5 C_5 C5 | 13 × 13 × 192 ( × 2 G P U ) 13\times13\times192(\times2_{GPU}) 13×13×192(×2GPU) | 3 × 3 × 192 / 1 , 128 ( × 2 G P U ) 3\times3\times192/1,128(\times2_{GPU}) 3×3×192/1,128(×2GPU) | 13 × 13 × 128 ( × 2 G P U ) 13\times13\times128(\times2_{GPU}) 13×13×128(×2GPU) | ( 3 × 3 × 192 + 1 ) × 128 × 2 (3\times3\times192+1)\times128\times2 (3×3×192+1)×128×2 |
下采样层 S m a x S_{max} Smax | 13 × 13 × 128 ( × 2 G P U ) 13\times13\times128(\times2_{GPU}) 13×13×128(×2GPU) | 3 × 3 / 2 ( × 2 G P U ) 3\times3/2(\times2_{GPU}) 3×3/2(×2GPU) | 6 × 6 × 128 ( × 2 G P U ) 6\times6\times128(\times2_{GPU}) 6×6×128(×2GPU) | 0 |
全连接层 F 6 F_6 F6 ∗ ^* ∗ | 6 × 6 × 128 × 2 G P U 6\times6\times128\times2_{GPU} 6×6×128×2GPU | 9216 × 2048 ( × 2 G P U ) 9216\times2048(\times2_{GPU}) 9216×2048(×2GPU) | 1 × 1 × 2048 ( × 2 G P U ) 1\times1\times2048(\times2_{GPU}) 1×1×2048(×2GPU) | ( 9216 + 1 ) × 2048 × 2 (9216+1)\times2048\times2 (9216+1)×2048×2 |
全连接层 F 7 F_7 F7 | 1 × 1 × 2048 × 2 G P U 1\times1\times2048\times2_{GPU} 1×1×2048×2GPU | 4096 × 2048 ( × 2 G P U ) 4096\times2048(\times2_{GPU}) 4096×2048(×2GPU) | 1 × 1 × 2048 ( × 2 G P U ) 1\times1\times2048(\times2_{GPU}) 1×1×2048(×2GPU) | ( 4096 + 1 ) × 2048 × 2 (4096+1)\times2048\times2 (4096+1)×2048×2 |
全连接层 F 8 F_8 F8 | 1 × 1 × 2048 × 2 G P U 1\times1\times2048\times2_{GPU} 1×1×2048×2GPU | 4096 × 1000 4096\times1000 4096×1000 | 1 × 1 × 1000 1\times1\times1000 1×1×1000 | ( 4096 + 1 ) × 1000 × 2 (4096+1)\times1000\times2 (4096+1)×1000×2 |
卷积层 C 1 C_1 C1输入为 224 × 224 × 3 224\times224\times3 224×224×3的图片数据,分别在两个GPU中经过核为 11 × 11 × 3 11\times11\times3 11×11×3、步长(stride)为4的卷积卷积后,分别得到两条独立的 55 × 55 × 48 55\times55\times48 55×55×48的输出数据。
下采样层 S m a x S_{max} Smax实际上是嵌套在卷积中的最大池化操作,但是为了区分没有采用最大池化的卷积层单独列出来。在 C 1 − 2 C_{1-2} C1−2卷积层中的池化操作之后(ReLU激活操作之前),还有一个LRN操作,用作对相邻特征点的归一化处理。
卷积层 C 3 C_3 C3 的输入与其他卷积层不同, 13 × 13 × 192 × 2 G P U 13\times13\times192\times2_{GPU} 13×13×192×2GPU表示汇聚了上一层网络在两个GPU上的输出结果作为输入,所以在进行卷积操作时通道上的卷积核维度为384。
全连接层 F 6 − 8 F_{6-8} F6−8中输入数据尺寸也和 C 3 C_3 C3类似,都是融合了两个GPU流向的输出结果作为输入。
1.3 模型特性
- 所有卷积层都使用ReLU作为非线性映射函数,使模型收敛速度更快
- 在多个GPU上进行模型的训练,不但可以提高模型的训练速度,还能提升数据的使用规模
- 使用LRN对局部的特征进行归一化,结果作为ReLU激活函数的输入能有效降低错误率
- 重叠最大池化(overlapping max pooling),即池化范围z与步长s存在关系 z > s z>s z>s(如 S m a x S_{max} Smax中核尺度为 3 × 3 / 2 3\times3/2 3×3/2),避免平均池化(average pooling)的平均效应
- 使用随机丢弃技术(dropout)选择性地忽略训练中的单个神经元,避免模型的过拟合
有任何GTP需要,看我简介