http://cs231n.github.io/convolutional-networks/#pool

卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,长期制霸计算机视觉领域。其核心主要是“卷积与池化”接下来我将介绍卷积神经网络进行特征提取的原理

1、基本概念

对比普通的神经网络,卷积神经网络包含了由 卷积层 和 池化层 构成的特征提取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。而不会像神经网络一样全连接
这里写图片描述
在CNN的一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。
网络结构主要包含以下层次

  • 输入层/input layer
  • 卷积层/conv layer
  • Relu激励层/Relu layer
  • 池化层/Pooling layer
  • 全连接层/FC layer
  • Batch normalization层(可能存在)/BN layer

1.1、卷积层

卷积层是构建卷积神经网络的核心层,它产生了网络中大部分的计算量。举例说明,我们人脑看一张图片的时候其实在背后有着不同的神经元共同工作使得我们的大脑得以理解的,每个神经元都不一样有的对方块敏感,有的对圆形敏感。我们就可以把这个神经元看做我们的 滤波器 filter 也叫卷积核 kernel ,在我们的卷积神经网络中就是通过这写 filter 进行图片识别的。

  • 局部连接 :在处理图像这样的高维度输入时,让每个神经元都与前一层中的所有神经元进行全连接是不现实的。所以那就让每个神经元与只其中一部分相连接。该连接的空间大小叫做神经元的感受野(receptivefield),它的尺寸是一个超参数(其实就是滤波器的空间尺寸)。在深度方向上,这个连接的大小总是和输入量的深度相等。
  • 深度: 卷积之后输出数据体的深度是一个超参数,他和滤波器filter的数量一致,这也就是为什么与神经网络相比卷积网络变成立体的原因。
  • 步长: 在滑动滤波器的时候,步长为每次滑动的像素,常用1和2,步长会导致输出的数据体在空间上变小。
  • 零填充: 也就是padding 就是在输入数据体的边缘上使用0补充大小,使用零填充可以有效地控制输出数据体的尺寸。
  • 权重共享: 每个神经元连接窗口的权重都是一样的,因为就像我之前所说每个神经元只负责提取特定的特征,只认识直线或者弧线等。否则的话由于图片转移成矩阵之后,很多参数在经过卷积之后就变得更庞大了,而且还只是一层,这也是为什么CNN训练会消耗很多资源的原因。

在前向传播的时候,让每个滤波器都在输入数据的宽度和高度上滑动(更精确地说是卷积),然后计算整个滤波器和输入数据任一处的内积。当滤波器沿着输入数据的宽度和高度滑过后,会生成一个2维的激活图(activation map),激活图给出了在每个空间位置处滤波器的反应。
可查看动态图
这里写图片描述

接下来给出卷积层超参数设置规律

  • 输入数据体大小为