Alexnet网络出自于《ImageNet Classification with Deep Convolutional Neural Network》,加拿大多伦多大学的Alex 于2012年发表在NIPS会议上,在当年ImageNet中取得最好的成绩。该ImageNet数据集有1.2 million幅高分辨率图像,总共有1000个类别。测试集分为top-1和top-5,并且分别拿到了37.5%和17%的错误率。
AlexNet有60 million个参数和65000个神经元,五层卷积,三层全连接网络,最终的输出层是1000通道的softmax,AlexNet利用了两块GPU进行计算,大大提高了运算效率。
Alexnet的网络结构
Conv1 relu1 norm1–> pool1-> conv2 relu2 norm2-> pool2–> conv3 relu3 --> conv4 relu4–>conv5 relu5 >pool5–>fc6 relu6 droupout6–> fc7 relu7 droupout7–> fc8 (logits)–>softmax
-
Conv1层:
- 输入Input的图像规格224×224×3(RGB图像),实际上会经过预处理变为227×227×3
- 使用的96个大小规格为11×11×3的过滤器filter,或者称为卷积核(步长为4),进行特征提取,卷积后的数据:555596【注:卷积过程(227-11)/4+1=55注意,内核的宽度和高度通常是相同的,深度与通道的数量是相同的。】
- 使用relu作为激励函数,来确保特征图的值范围在合理范围之内。
relu1后的数据:55×55×964 - 降采样操作pool1
pool1的核:3×3,步长:2,降采样之后的数据为27×27×96【(55-3)/2+1=27】
-
Conv2层:
- 输入数据为27×27×96
- conv2中使用256组5×5×96大小的过滤器fiter(步长1)对27×27×96个特征图,进行进一步提取特征,但是处理的方式和conv1不同,过滤器是对96个特征图中的某几个特征图中相应的区域乘以相应的权重,然后加上偏置之后所得到区域进行卷积。经过这样卷积之后,然后再在加上宽度高度两边都填充2像素,会的到一个新的256个27×27特征图【(27+2×2-5)/1+1)=27】
- 然后进行relu操作,relu之后的数据27×27×256
- 降采样操作pool2
Pool2的核:3×3,步长:2,得到数据为13×13×256【 (27-3)/2+1=13】
-
Conv3层:
- 没有降采样层
- Conv3中使用384组3×3×256大小的过滤器fiter(步长1),得到数据为13×13×384
-
Conv4层:
- 没有降采样层
- Conv4中使用384组3×3×384大小的过滤器fiter(步长1),得到特征图为13×13×384
-
Conv5层:
- Conv5中使用256组3×3×384大小的过滤器fiter(步长1),得到特征图为13×13×384
- 降采样操作pool3
Pool3的核:3×3,步长:2,得到数据为6×6×25【(13-3)/2+1=6】
-
fc6全连接层:
这里使用4096个神经元,对256个大小为6X6特征图,进行一个全连接,也就是将6x6大小的特征图,进行卷积变为一个特征点然后对于4096个神经元中的一个点,是由256个特征图中某些个特征图卷积之后得到的特征点乘以相应的权重之后,再加上一个偏置得到。之后再进行一个dropout,也就是随机从4096个节点中丢掉一些节点信息(值清0),然后就得到新的4096个神经元。 -
fc7全连接层:和fc6类似
-
fc8全连接层:
采用的是1000个神经元,然后对fc7中4096个神经元进行全连接,得到1000个float型的值,再经过softmax和交叉熵,也就是我们所看到的预测的可能性。
网络特点
- 非线性单元Relu优点详解:
1.可以使网络训练更快
相比于tanh,sigmod而言,relu的导数更好求,反向传播会涉及到**函数的求导,tanh,sigmod包含指数且表达式复杂,他们的函数的导数求取慢一些。
2.增加网络非线性
relu为非线性函数,加入到神经网络中可以使网络拟合非线性的映射,因此增加了网络的非线性。
3.防止梯度消失(弥散)
当数值过大或者过小时,sigmoid,tanh导数接近0,会导致反向传播时候梯度消失的问题,relu为非饱和**函数不存在此问题。
4.使网络具有稀疏性
relu可以使一些神经元输出为0,因此可以增加网络的稀疏性。 - Dropout层作用:随机将一定比例的神经元置为0。dropout的使用可以减少过度拟合,丢弃并不影响正向和反向传播。在经过交叉验证,隐含节点dropou率等于0.5的时候效果最好,原因是0.5的时候dropout随机生成的网络结构最多。
- sofitmax作用:将神经网络的输出变为概率分布,数据之和为1,负数变为正数。
- cross entropy:交叉熵衡量两个概率分布的距离
- 最大池化:是为了避免平均池化的模糊化效果,从而保留最显著的特征,并且AlexNet中提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,提升了特征的丰富性,减少了信息的丢失。