cnn从入门到入土

cnn全称卷积神经网络(Convolutional Neural Networks),常用于图像分类,语音,机器翻译等。其中最为常见的还是图像分类。

LeNet

总结

各层主要作用

  • 卷积层:提取特征
  • 池化层:降低计算量
  • 全连接:联系各个区域,在分类中结合softmax起到分类器的作用

AlexNet 2012

主要工作与改进点

  • 引入ReLU激活函数: ReLU的全称是修正线性单元(Rectified Linear Unit), 其函数表达式为 max(0, x)
    sigmod
    tanh
    ReLU
  • 多GPU训练: 加快训练速度
  • 引入局部响应归一化(LRN): 实际证明没什么用,在此不对其做解释
  • 使用重叠池化:一种池化类型,普通池化是 stride == kernel size,而重叠池化 stride < kernel size
  • 使用数据增强:一个trick,在数据过少的时候,通过翻转,旋转,移位,缩放等操作增加数据。
  • 引入dropout: 一个trick,用于抑制过拟合。dropout通俗点解释就是在网络前向传播的时候,让每一个隐藏节点以一定的概率失效。

VGG 2014

vgg

主要工作与改进点

  • 使用更小的卷积核。用2个3*3的卷积核有效代替了AlexNet的5*5卷积核,用3个3*3代替了7*7。并证明了这种代替方式能够减少参数。2 * (3c * 3c) < 5c * 5c, 3 * (3c * 3c ) < 7c * 7c
  • 使用更小的池化核,2*2, 步长为 2,卷积核通道更多,使得提取的特征增多,同时不会大规模增大数据量。
    3*3
  • 实践证明了 LRN 的无效性,但会增加内存和计算量。
  • 实践证明了随着网络深度的增加,网络的准确性可以得到提升。
    vgg res

Inception-v1 2014

扩展宽度

主要工作与改进点

  • 引入inception module。
    在实际分类与检测任务中,图片中的物体有大有小,大的物体适合用更大的卷积核,小的物体适合用更小的卷积核,如何正确选择卷积核是需要面对的一个问题。
  • 引入瓶颈层,减少计算量。
  • 引入了辅助分类器,论文中指出,多出来的两个辅助分类器在反向传播的时候计算的损失函数各占30%。 --> 为了解决梯度消失的问题

ResNet 2015

扩展深度

主要工作与改进点

  • 引入残差块

Exploring Over 1000 layers. We explore an aggressively deep model of over 1000 layers. We set n=200n=200 that leads to a 1202-layer network, which is trained as described above. Our method shows no optimization difficulty, and this 103103-layer network is able to achieve training error <0.1% (Fig. 6, right). Its test error is still fairly good (7.93%, Table 6).

Inception-v2, Inception-v3, Inception-v4, inception-resnet

主要工作与改进点

  • inception-v2: 使用更小的卷积核,用2个3*3代替5*5, 用 1*n 和 n*1 代替 n*n,增加 inception module等
  • inception-v3: 在inception-v2之上在辅助分类器中使用了BN正则化(也是google在同年提出的正则化方法
  • inception-v4: 按我理解其实没多大变化,就是用了更多的inception块
  • inception-resnet: 主要就是结合了resnet

参考学习