AlexNet

AlexNet在2012年的ImageNet图像分类大赛中夺得第一名,将top-5错误率瞬间提升了百分之十以上。之后,CNN重回历史舞台。 首先看一下它的网络结构:

 

AlexNet总结_ImageNet这是论文中的给出的结构图,看起来很复杂,我们简化一下。AlexNet总结_ImageNet_02这是吴恩达深度学习课程中给出的讲义(注意这里输入的是的AlexNet总结_ImageNet_03格式,与论文中有所不同,但是对网络结构没有影响)。

 

AlexNet的网络结构

  1. Conv_1: 卷积层,输入:AlexNet总结_ImageNet_04,使用AlexNet总结_ImageNet_05AlexNet总结_ImageNet_06核卷积,步长为AlexNet总结_ImageNet_07,卷积之后长宽为AlexNet总结_ImageNet_08,所以输出格式为AlexNet总结_ImageNet_09

  2. Max-pooling:输入为AlexNet总结_ImageNet_10,pool:AlexNet总结_ImageNet_11,步长为:2,所以pool之后长宽为:AlexNet总结_ImageNet_12,输出为:AlexNet总结_ImageNet_13

  3. Conv_2:卷积层,输入:AlexNet总结_ImageNet_13,使用AlexNet总结_ImageNet_15AlexNet总结_ImageNet_16,步长为AlexNet总结_ImageNet_17,padding为same. Padding常用的有两种same,valid:

    • SAME padding:

      AlexNet总结_ImageNet_18

      AlexNet总结_ImageNet_19

    • VALID padding:

      AlexNet总结_ImageNet_20 AlexNet总结_ImageNet_21

    所以此时Padding为左右两边均是AlexNet总结_ImageNet_22。输出结果:AlexNet总结_ImageNet_23.

  4. Max-pooling:输入为:AlexNet总结_ImageNet_23,pool为AlexNet总结_ImageNet_11,步长为AlexNet总结_ImageNet_22,长度为:AlexNet总结_ImageNet_27,输出结果为:AlexNet总结_ImageNet_28

  5. Conv_3,Conv_4,Conv_5:输入输出均为AlexNet总结_ImageNet_28,步长为AlexNet总结_ImageNet_17,核为AlexNet总结_ImageNet_31,Padding为Same。

  6. Max-pooling:输入AlexNet总结_ImageNet_28,pool:AlexNet总结_ImageNet_33,步长为AlexNet总结_ImageNet_22输出结果为AlexNet总结_ImageNet_35,也就是AlexNet总结_ImageNet_36个特征变量。

  7. FC:全连接层有两个隐藏层,从AlexNet总结_ImageNet_37

AlexNet高性能的解释

  1. 非线性激活函数:ReLU
  2. 防止过拟合的方法:Dropout,Data augmentation
  3. 大数据训练:百万级ImageNet图像数据
  4. 其他:GPU实现,LRN归一化层的使用

ReLU

优点:

  1. ReLU本质上是分段线性模型,前向计算非常简单,无需指数之类操作;
  2. ReLU的偏导也很简单,反向传播梯度,无需指数或者除法之类操作;
  3. ReLU不容易发生梯度发散问题,Tanh和Logistic激活函数在两端的时候导数容易趋近于零,多级连乘后梯度更加约等于0;
  4. ReLU关闭了右边,从而会使得很多的隐层输出为0,即网络变得稀疏,起到了类似L1的正则化作用,可以在一定程度上缓解过拟合。

缺点:

左边全部关了很容易导致某些隐藏节点永无翻身之日,所以后来又出现pReLU、random ReLU等改进,而且ReLU会很容易改变数据的分布,因此ReLU后加Batch Normalization也是常用的改进的方法。

Data Augmentation

  1. 从原始图像(256,256)中,随机的crop出一些图像(224,224)。【平移变换,crop】
  2. 水平翻转图像。【反射变换,flip】
  3. 给图像增加一些随机的光照。【光照、彩色变换,color jittering】

AlexNet 训练的时候,在data augmentation上的处理:

  1. 随机crop。训练时候,对于256*256的图片进行随机crop到224*224,然后允许水平翻转,那么相当与将样本倍增到AlexNet总结_ImageNet_38
  2. 测试时候,对左上、右上、左下、右下、中间做了5次crop,然后翻转,共10个crop,之后对结果求平均。作者说,不做随机crop,大网络基本都过拟合(under substantial overfitting)。
  3. 对RGB空间做PCA,然后对主成分做一个AlexNet总结_ImageNet_39的高斯扰动。结果让错误率又下降了1%。

Dropout

结合多个训练模型可以减少测试误差,但是在神经网络中,训练每个模型都需要大量的时间,代价昂贵。Dropout通过在隐藏层中以rate概率随机将部分神经元输出设置为0,这些神经元既不参于前向传播,也不参与反向传播。所以每次提出一个输入,该神经网络就尝试一个不同的结构,但是所有这些结构之间共享权重。因为神经元不能依赖于其他特定神经元而存在,所以这种技术降低了神经元复杂的互适应关系。在测试时只需要除以AlexNet总结_ImageNet_40

Local Response Normalization

 

AlexNet总结_ImageNet_41局部响应归一化原理是仿造生物学上活跃的神经元对相邻神经元的抑制现象(侧抑制)。

 

本质上,这个层也是为了防止激活函数的饱和的。

  1. AlexNet总结_ImageNet_42 是神经元的影响范围。
  2. AlexNet总结_ImageNet_43是超参数。

参考资料:

 

 


 

 作者:Rasin_Wu  版权声明:本文为博主原创文章,转载请附上博文链接!