基础

卷积神经网络的基本形式

整体结果为:

卷积层

如图所示,左边是输入,中间是卷积核,右边是输出。

如果输入为3通道,输出为2通道,那么卷积核需要6个,每三个卷积核卷积再求和可以得到一个输出

非线性激活函数种类:

其中现在最常使用的是ReLU函数,因为求导简单且不容易造成梯度消失

降采样层

降采样层的作用是增大感受野,并且对形变不敏感。

  • max pooling: 在几个候选结果中选择最大值,例如4$\times$4到2$\times$2 也就是说原来4个映射到了现在的一个,映射规则为选取4个中的最大值
  • average pooling: 选取候选结果中的平均值

LeNet-5结构

  • C1的通道数为6,卷积核大小为5$\times$5
  • S2降采样层,28$\times$28降为14$\times$14
  • C3卷积层,卷积核$5 \times 5$,通道数16

CNN的问题和发展

CNN的问题主要有过拟合、难收敛、计算代价大三点

AlexNet

AlexNet是12年ImageNet比赛的冠军,当时其他人都适用概率的方法,AlexNet首次使用深度学习的方法比其他队高了十多个百分点,掀起了深度学习的热潮。

AlexNet的网络架构为

它对收敛问题和过拟合进行了一些改进。

  1. 使用ReLU加速收敛
    sigmoid函数是之前深度学习中常用的函数,它的导数为$f(x)(1 - f(x)) \in (0, 0.25]$,也就是说每经过一层导数就会减小到原来的$\frac{1}{4}$,因此梯度很快会消失难以收敛。

    而ReLU的导数始终为1,保存了上一层的梯度,极大地缓解了梯度消失的问题

  2. 使用数据增广解决过拟合

ZFNet

ZFNet主要探究卷积核大小和滤波器数目的影响。它的研究方法为特征重建,通过反卷积的方式得出一些图像。例如:

通过研究总结出以下三点规律:

  1. 小尺寸的滤波器(卷积核)可以得到更好的成果。这一点导致后续卷积核大小基本上都是3$\times$3
  2. 更多的滤波器(增加网络深度)可以达到更好的效果
  3. 更大的全连接不能得到更好的效果

VGG-VD

VGG-VD最高达到了19层,不能更深是因为无法收敛

VGG-VD发现:

  1. 使用浅层网络初始化深层网络
  2. 均匀分布初始化方式

ResNet

ResNet从VGG的19层达到了152层,它通过残差网络减缓了梯度消失的问题

如图所示,在每两层之间进行一次之间连接,这样做之后它的导数为

其中$\frac{\partial l}{\partial F}$是ReLU的导数,而$\frac{\partial F_o}{\partial x_o}$是没有添加残差连接时的导数,可以看到添加残差连接之后每隔两层导数便加1

残差链接有效的一种可能解释是他会显著平滑优化地形
左图是没有使用残差链接的地形,可以看到我们很容易降到一个局部最优解,想要梯度下降到全局最优解就需要非常谨慎的选择初始权重。而通过残差链接之后就非常容易训练。

全局均值池化层

传统的卷积神经网络是在卷积层之后添加一个全连接层将各个卷积核的信息进行统合,但是全连接层的参数量过大容易导致过拟合,因此提出了全局均值池化层(GAP)缓解这个问题。

GAP步骤,参考自

  1. 每个通道求均值,也就是说有几层就输出多少个神经元,设神经元数目为h
  2. 经过一个$w \times h$的权重矩阵得出结果,其中w是输出分类的数目。具体计算为$o1 = \sum{i=1}^{h} w_{1i} \times h_i$

DenseNet

DenseNet主要考虑怎样添加残差链接比较好,是否必定是每两层添加一个残差链接。最终它选择每一层都把数据传到后面若干层最终提高了效率但是付出了更高的计算代价

SE-Net

SE-Net试图为卷积输出加上一层权重来增大重要信息的响应,图示

过程:

  1. 计算特征的全局信息
    Residual是普通卷积之后的输出,对每一个通道求平均值为
  2. 利用全局信息学习权重
    也就是经过了两个全连接层
  3. 加权特征
    利用全连接之后的权重乘到原来的卷积输出上

Inception

Inception是谷歌提出的一种架构。它设计的初衷是利用不同大小的卷积核发现不同尺度的信息。

如图所示是Inception-v1的架构,通过不同的卷积核利用了更多的特征

Inception-v2提出了一项重要的技术Batch Normalization

batch normalization是针对一次处理一批数据来说的,也就是说一次会输入n张图片,因此每一个隐藏层的节点都会有n个输出。BN就是对这n个节点进行归一化再输出

BN一般接在ReLU前面,它的过程为

其中$\hat{x_i}$就是正则化的输出,然后还需要经过一个$\gamma 和 \beta$,这两个参数是用来控制y的方差和均值,是未知参数

总结

通过上面2012-2018年重要的架构我们可以得出一些结论

  1. 趋势为更小的滤波器和更深的架构
  2. ReLU非常重要,LRN用处不大
  3. 全连接层可以使用更好的方法替代
  4. 残差链接非常重要
  5. 更好的利用卷积特征(特征重复利用,注意力机制)