接下来学习一下经典的Alexnet,关于卷积神经网络,不同的网络算法,其实大家的框架是一样的,不一样的是大家的卷基层,也就是提取特征的过程。
整个算法的体系
Alexnet包含了八个学习层,五个卷积层和三个全连接层
conv1阶段
- 输入数据: 227×227×3
- 卷积核: 11×11×3 ;步长:4;数量(也就是输出个数):96
- 卷积后数据: 55×55×96
- relu1后的数据: 55×55×96
- pool1的核: 3×3 ,步长:2
- pool1后的数据: 27×27×96
- norm1:local_size=5
- 最后的输出:
27×27×96
卷积后的大小计算方式 (227−11)/4+1=55(55−3)/2+1=27
第一阶段分析
这里想要提一下的是relu1和norm1这两个过程
ReLu
这是一个使用激活函数的过程,在一些之前传统的机器学习过程中我们一般采用 Simoid 和 tanh 函数来作为激活函数,但是这两个函数在做梯度下降的过程中(减小训练误差),速度比较慢,也就是迭代次数会比较多。
在复杂的神经网络中,传统的那些激活函数效率太低,不切合实际。所以我们一般会在网络中采用 ReLu 函数,使学习周期大大缩短,提高速度和效率。
ReLU函数的数学公式很简单ReLU(x)=max(x,0),但其对DNN的贡献是巨大的。
这里提一下 Softplus,这也是一个激活函数,有兴趣可以看一下,其实它也是ReLu 的平滑函数(平滑函数好求导)
Norm
ReLu 所具有的特性,它们不需要输入归一化来防止它们达到饱和。
但是局部相应归一化有助于模型的泛化,将模型top1和top5的错误率分别降低了1.4%和1.2%。
若使用传统的激活函数,input 不进行归一化的话,激活后的值都会进入平坦区,会使隐层的输出全部趋同。
这里有三篇关于Alexnet的博客,第一篇是翻译,第二篇是对主要对卷积层的结构分析的比较好,最后一个想自己动手跑跑这个网络比较实用。
http://blog.csdn.net/liumaolincycle/article/details/50496499
http://blog.csdn.net/sunbaigui/article/details/39938097
http://blog.csdn.net/drdeep/article/details/50835974