神经网络系列(二)--AlexNet解析

AlexNet 网络模型

文章目录

      • 一、简介
      • 二、特性 (相比LeNet)
      • 三、网络结构
        • 1、组成部分
        • 2、各层详解
          • 1、 C1 卷积-->ReLU-->池化-->归一化
          • 2、 C2 卷积-->ReLU-->池化-->归一化 (分为两个GPU操作,以下为单个的参数)
          • 3、 C3 卷积-->ReLU (分为两个GPU操作,以下为单个的参数)
          • 4、 C4 卷积-->ReLU (分为两个GPU操作,以下为单个的参数)
          • 5、 C5 卷积-->ReLU-->池化 (分为两个GPU操作,以下为单个的参数)
          • 6、 (卷积)全连接 -->ReLU -->Dropout (分为两个GPU操作,以下为单个的参数)
          • 7、 全连接-->ReLU-->Dropout (分为两个GPU操作,以下为单个的参数)
          • 8、 输出层
      • 四、总结
      • 五、附录

一、简介

AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。也是在那年之后,更多的更深的神经网路被提出,比如优秀的vgg,GoogleLeNet。其官方提供的数据模型,准确率达到57.1%,top 1-5 达到80.2%. 这项对于传统的机器学习分类算法而言,已经相当的出色。

二、特性 (相比LeNet)

1、 使用ReLU作为CNN的激活函数

验证其效果在较深的网络超过了Sigmoid,成功解决了Sigmoid在网络较深时的梯度弥散问题

2、训练时使用Dropout随机忽略一部分神经元,以避免模型过拟合。

Dropout虽有单独的论文论述,但是AlexNet将其实用化,通过实践证实了它的效果。在AlexNet中主要是最后几个全连接层使用了Dropout。

3、在CNN中使用重叠的最大池化。

此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性。

4、 利用GPU强大的并行计算能力。

AlexNet使用了两块GTX 580 GPU进行训练,是因为GPU之间通信方便,可以互相访问显存,而不需要通过主机内存,所以同时使用多块GPU也是非常高效的。同时,AlexNet的设计让GPU之间的通信只在网络的某些层进行,控制了通信的性能损耗。

5、 数据增强。

随机地从256256的原始图像中截取224224大小的区域(以及水平翻转的镜像),相当于增加了2*(256-224)^2=2048倍的数据量。如果没有数据增强,仅靠原始的数据量,参数众多的CNN会陷入过拟合中,使用了数据增强后可以大大减轻过拟合,提升泛化能力。

三、网络结构

1、组成部分

AlexNet为8层结构,其中前5层为卷积层,后面3层为全连接层,图中分2个GPU运行,以下为了方便,转为1个GPU进行展开;

2、各层详解

1、 C1 卷积–>ReLU–>池化–>归一化

1.1 卷积:

输入: 224 * 224 * 3 图像

卷积核大小: 11 * 11 * 3

卷积核个数: 96

步长: 4

padding: 0

输出featuremap大小:54 * 54

输出数量为:96

连接数:(11 * 11 + 1)* 96 * 54 * 54

C1层共有(11 * 11 + 1)* 96=11712个训练参数,有(11 * 11 + 1)* 96 * 54 * 54=34152192个连接

1.2 ReLU 经过ReLU 函数

1.3 池化:

采样区域 : 3 * 3

采样种类:96

步长: 2

padding: 0

输出: 27 * 27 * 96

1.4 局部响应归一化

使用k=2,n=5,α=10−4,β=0.75k=2,n=5,α=10−4,β=0.75进行局部归一化,输出的仍然为27×27×9627×27×96,输出分为两组,每组的大小为27×27×4827×27×48

2、 C2 卷积–>ReLU–>池化–>归一化 (分为两个GPU操作,以下为单个的参数)

2.1 卷积:

输入: 27 * 27 * 48 图像

卷积核大小: 5 * 5 * 48

卷积核个数: 128

步长: 1

padding: 2

输出featuremap大小:27 * 27

输出数量为:128

2.2 ReLU 经过ReLU 函数

2.3 池化:

采样区域 : 3 * 3

采样种类:128

步长: 2

padding: 0

输出: 13 * 13 * 128

2.4 局部响应归一化

最后经过归一化处理,分别对应2组128个卷积核所运算形成。每组在一个GPU上进行运算。即共256个卷积核,共2个GPU进行运算。

3、 C3 卷积–>ReLU (分为两个GPU操作,以下为单个的参数)

3.1 卷积:

输入: 13 * 13 * 128 图像

卷积核大小: 3 * 3 * 128

卷积核个数: 192

步长: 1

padding: 2

输出featuremap大小:13 * 13

输出数量为:192

3.2 ReLU 经过ReLU 函数

4、 C4 卷积–>ReLU (分为两个GPU操作,以下为单个的参数)

4.1 卷积:

输入: 13 * 13 * 192 图像

卷积核大小: 3 * 3 * 192

卷积核个数: 192

步长: 1

padding: 2

输出featuremap大小:13 * 13

输出数量为:192

4.2 ReLU 经过ReLU 函数

5、 C5 卷积–>ReLU–>池化 (分为两个GPU操作,以下为单个的参数)

5.1 卷积:

输入: 13 * 13 * 192 图像

卷积核大小: 3 * 3 * 192

卷积核个数: 128

步长: 1

padding: 2

输出featuremap大小:13 * 13

输出数量为:192

5.2 ReLU 经过ReLU 函数

5.3 池化:

采样区域 : 3 * 3

采样种类:128

步长: 2

padding: 0

输出: 6 * 6 * 128

6、 (卷积)全连接 -->ReLU -->Dropout (分为两个GPU操作,以下为单个的参数)


6.1 全连接

输入: 6 * 6 * 128

卷积核大小: 6 * 6 * 128

卷积核个数: 4096

步长: 1

padding: 0

输出featuremap大小: 1

输出数量为:4096

因为卷积核大小与输入尺寸相同,即卷积核中的每个系数只与特征图(输入)尺寸的一个像素值相乘, 最后输出4096个神经元。

6.2 ReLU 经过ReLU 函数

6.3 Dropout

抑制过拟合,随机的断开某些神经元的连接或者是不激活某些神经元

7、 全连接–>ReLU–>Dropout (分为两个GPU操作,以下为单个的参数)

7.1 全连接

全连接,输入为4096的向量,与6.1 类似

7.2 ReLU 经过ReLU 函数

7.3 Dropout

8、 输出层

第7层输入的4096个数据与第8层的1000个神经元进行全连接,经过训练后输出被训练的数值。

四、总结

总体来说,AlexNet 首先利用数据增强提高了样本数,而后引入了ReLU 激活函数,大大加快比Sigmoid的激活速度,并且用了双GPU的形式,令到训练速度与正确率有了很大的提高。

五、附录

AlexNet详细解读

卷积神经网络之AlexNet

AlexNet百度百科

你可能感兴趣的:(#,Base,Model)