为什么我们需要卷积

深度神经网络性能优于浅层,但是对于全连接网络来说,增加一层会增加太多的参数

  • 结构过于复杂,参数规模过大
  • 没有考虑到图像的空间结构全连接并没有考虑到图像的空间关系,相邻像素和远距离像素采用同一种方式处理

我们需要一种新的结构

基本概念

局部感受野(local receptive fields):单个视觉细胞仅对部分区域特定模式

人看图片是有顺序的 卷积神经网络-局部感受野 5x5的感受野对应了25个输入像素

滑动这个局部感受野,每个不同的局部感受野,对应着隐藏层的一个神经元

步幅(stride length):每次局部感受野的移动幅度

卷积公式

表示来自一个隐藏神经元的输出激活值

表示输入激活值

*表示卷积操作

卷积操作在高层空间实际上做了什么

  • 第一个隐藏层中的所有神经元都检测到了相同的特征,只是在不同的输入图像的位置

因此从输入层到隐藏层的映射通常称为:特征映射

共享的权值和偏置被称为卷积核(kernel)或者说滤波器(filter) 卷积神经网络-7x7的一个曲线检测滤波器.png 卷积神经网络-7x7的一个曲线检测滤波器2.png Feature map显示了图片中哪些区域有感兴趣的特征

  • 滤波器越多,特征映射的深度越大,得到的关于输入的信息就越多
  • 共享权值极大降低了CNN的参数规模

步幅:相邻的子区域很相似,没有必要检测所有的子区域

Padding:

  • 不丢失原图信息
  • 保持feature map的大小与原图一致
  • 为了更深层的layer的input仍然保持有足够大的信息量,不会越卷积越小

卷积神经网络-卷积层总结.png

对于一个的input,全连接的参数量是,卷积假设卷积核大小为,则卷积的参数量为

池化(Pooling)

  • 池化层通常用在卷积层后,又被成为汇聚层
  • 目的是简化卷积层输出的信息,减少参数&计算量
  • 使得特征具有局部的转移和扭曲不变性(微小形变的鲁棒性) 分类:
  • Max-Pooling
  • Mean-pooling
  • L2 pooling

卷积神经网络-池化的图示.png 可以发现起到了简化的作用

  • 最大池化:池化层输出池化矩阵的最大激活值

  • 平均池化:输出池化矩阵的平均值

  • 池化的输出通道和输入通道大小相同

  • 默认的步幅和池化大小相同

卷积神经网络-一个更一般的CNN结构.png

小卷积核

采用感受野小的卷积核 1x1卷积

卷积核1x1,不用去考虑输入数据局部信息之间的关系,而把关注点放在不同通道之间

Function

  • 实现信息的跨通道交互与整合
    • 考虑到卷积运算的输入输出都是3个维度,所以1x1卷积实际上就是对每个像素点,在不同的通道进行线性组合,从而整合了不同通道的信息
  • 对卷积核通道数进行升维和降维,减少参数量
    • 经过1x1卷积之后的输出保留了输入数据原有的平面结构,通过调控通道数可以实现升维或降维。
  • 利用1x1卷积之后的非线性激活函数,在保持特征图尺寸不变的前提下,大幅增加非线性。

堆叠的3x3卷积

  • 堆叠两个3x3的卷积层(stride=1)
  • 每个神经元看到输入中3x3大小的区域 卷积神经网络-堆叠的3x3卷积核1 那么第二层能看到输入中5x5的区域,第三层能看到输入中7x7的区域

所以3个堆叠的3x3卷积层核1个7x7卷积层的表示能力相似

假定输入大小为,使用能够确保输出为同样大小的卷积操作(stride=1,padding确保输出为),则

  • 1个7x7的卷积层参数量为:
  • 3个3x3的卷积层参数量:
  • 实现了更少的参数,更少的计算,更强的非线性

Inception 块

GoogLeNet提出的一个网络

  • 设计理念认为解决上述两个缺点的根本方法是将全连接甚至一般的卷积结构都转化为稀疏连接。这样做的理由是在现实中生物神经系统的连接也是稀疏的,另外一方面也有许多研究证明了对于大规模的稀疏神经网络,可以通过分析激活值的统计特性和对高度相关的输出进行聚类来逐层构建出一个最优网络。
  • Inception模块的核心思想就是将不同的卷积层通过并联的方式结合在一起,经过不同卷积层处理的结果矩阵在深度这个维度拼接起来,形成一个更深的矩阵。
  • Inception模块可以反复叠堆形成更大的网络,它可以对网络的深度和宽度进行高效的扩充,在提升深度学习网络准确率的同时防止过拟合现象的发生。
  • Inception模块的优点是可以对尺寸较大的矩阵先进行降维处理的同时,在不同尺寸上对视觉信息进行聚合,方便从不同尺度对特征进行提取。

Inception-v1论文名为《Going deeper with convolutions》

Conclusion

  • 卷积核方面
    • 大卷积核用多个小卷积核去代替小卷积核
    • 单一尺寸卷积核用多尺寸卷积核代替
    • 固定形状卷积核趋于使用可变形卷积核
    • 使用1x1卷积核(bottleneck结构)
  • 卷积层通道方面
    • 标准卷积用depthwise卷积代替
    • 使用分组卷积
    • 分组卷积前使用channel shuffle
    • 通道加权计算
  • 卷积层连接方面:
    • 使用skip connection,让模型更深
    • Densely connection,使每一个都融合上它其他层的特征输出(DenseNet)