AlexNet 网络模型
AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的。也是在那年之后,更多的更深的神经网路被提出,比如优秀的vgg,GoogleLeNet。其官方提供的数据模型,准确率达到57.1%,top 1-5 达到80.2%. 这项对于传统的机器学习分类算法而言,已经相当的出色。
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会陷入过拟合中,使用了数据增强后可以大大减轻过拟合,提升泛化能力。
AlexNet为8层结构,其中前5层为卷积层,后面3层为全连接层,图中分2个GPU运行,以下为了方便,转为1个GPU进行展开;
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.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.1 卷积:
输入: 13 * 13 * 128 图像
卷积核大小: 3 * 3 * 128
卷积核个数: 192
步长: 1
padding: 2
输出featuremap大小:13 * 13
输出数量为:192
3.2 ReLU 经过ReLU 函数
4.1 卷积:
输入: 13 * 13 * 192 图像
卷积核大小: 3 * 3 * 192
卷积核个数: 192
步长: 1
padding: 2
输出featuremap大小:13 * 13
输出数量为:192
4.2 ReLU 经过ReLU 函数
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.1 全连接
输入: 6 * 6 * 128
卷积核大小: 6 * 6 * 128
卷积核个数: 4096
步长: 1
padding: 0
输出featuremap大小: 1
输出数量为:4096
因为卷积核大小与输入尺寸相同,即卷积核中的每个系数只与特征图(输入)尺寸的一个像素值相乘, 最后输出4096个神经元。
6.2 ReLU 经过ReLU 函数
6.3 Dropout
抑制过拟合,随机的断开某些神经元的连接或者是不激活某些神经元
7.1 全连接
全连接,输入为4096的向量,与6.1 类似
7.2 ReLU 经过ReLU 函数
7.3 Dropout
第7层输入的4096个数据与第8层的1000个神经元进行全连接,经过训练后输出被训练的数值。
总体来说,AlexNet 首先利用数据增强提高了样本数,而后引入了ReLU 激活函数,大大加快比Sigmoid的激活速度,并且用了双GPU的形式,令到训练速度与正确率有了很大的提高。
AlexNet详细解读
卷积神经网络之AlexNet
AlexNet百度百科