深度学习之 卷积神经网络 CNN
CNN(Convolutional Neural Network)卷积神经网络,是一种前馈神经网络,是一种专门用来处理具有类似网格
结构的数据的。神经网络它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。它包括
卷积层(convolutional layer)和池化层(pooling layer)。
卷积神经网络 一词表明该网络使用了卷积(convolution)这种数学运算。卷积是一种特殊的线性运算。卷积网络是
指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。
1、卷积概念
卷积函数
数学上卷积函数, 宇宙飞船的t时刻的位置,有噪声干扰,它的位置与之前的位置有关,与t时刻时间离的越远的影响越小,
对每时刻的位置进行加权平均的操作,得到如下公式,a为当前时刻t的距离。计算方法:从最后层(输出层)往前一层一层推,
i-1节点的偏导数计算基于i层的偏导数,因为计算i-1层时i层的已经计算完成。或者用梯度描述:i-1层的梯度就是i-1层的各节点(n个)
对i层梯度进行求偏导加和,刚好变成i-1层的梯度

离散卷积

机器学习中的卷积
机器学习应用中,输入通常为多维的,经常一次在多个维度上进行卷积运算。例如,如果把一张二维的图像I 作为输入,
我们也许也想要使用一个二维的核K:

翻转之后

2、卷积运算

和全连接网络对比,本图为例,假设输入和输出的通道均为1。先不零填充,那么输出为6个节点;
同样一个全连接网络,限定本层输入为6个节点,
参数 ,先不考虑偏移b
全连接网络 3×4×6 (6为本层节点 m×n×l)
卷积网络 2×2 (多通道下: 输入通道数× (2×2) × 输入通道数)
运算
全连接网络 3×4×6 6为本层节点 m×n×l
卷积 (3-1)×(4-1) × (2×2) (m-1)×(n-1)×Cov大小 运算基本一个量级,区别在卷积大小和隐藏层宽度
3、卷积网络动机
卷积运算对机器学习(深度网络)改进思想:
稀疏交互(sparse interactions)
参数共享(parameter sharing)
等变表示(equivariant representa-tions)
1、稀疏交互
传统的神经网络使用矩阵乘法来建立输入与输出的连接关系。其中,参数矩阵中每一个单独的参数都描述了一个输入单元
与一个输出单元间的交互。这意味着每一个输出单元与每一个输入单元都产生交互。然而,卷积网络具有稀疏交互(sparse interactions)
(也叫做稀疏连接(sparse connectivity)或者稀疏权重(sparse weights))的特征。
如下图,上图为核宽度为3的卷积网络,x3只能影响s2、s3、s4三个输出单元,下图为传统的全连接网络,所有s层所有输出
单元都受x3影响。

同样,输出单元只接受部分输入单元的影响,上图s3的接受域,或者只受x2、x3、x4输入单元的影响。
下图全连接网络s3受所有输入单元的影响。

处于卷积网络更深的层中的单元,它们的接受域要比处在浅层的单元的接受域更大。如果网络还包含类似步幅卷积
或者池化之类的结构特征,这种效应会加强。这意味着在卷积网络中尽管直接连接都是很稀疏的,但处在更深的层中的单元
可以间接地连接到全部或者大部分输入图像。说明深层网络或者最后输出单元会间接的获取全部或者大部分原始输入的特征。

2、参数共享
在卷积网络中每个核的参数是共享的,即核的每个元素都作用在输入的每个位置上。而传统的网络对输入的每个位置都
要学习一个单独的参数集合。这个大大减少了参数集合。
3、等变表示
等变性,对同一个特征(比如人脸)在图像中不同的位置是等效的。
对于卷积,参数共享的特殊形式使得神经网络层具有对平移等变(equivariance)的性质。如果一个函数满足输入改变,
输出也以同样的方式改变这一性质,我们就说它是等变(equivariant) 的。对于卷积来说,如果令g 是输入的任意平移函数,
那么卷积函数对于g 具有等变性。
4、卷积神经网络结构
1、输入层
整个神经网络的输入,在处理图像的网络中,一张图片的像素矩阵。
2、卷积层
进行卷积计算的层,其中卷积核和,也叫过滤器,是卷积神经网络中最重要的部分,过滤器的尺寸一般有3 3,5 5,7*7 等。
卷积计算是整个深度上的,即一个过滤器其深度和输入矩阵深度一致,所以一般忽略这个深度,以便和常说的过滤器深度分开。
比如输入矩阵为14 14 6,使用的过滤器尺寸5 5,隐含这个过滤器其实是一个5 5*6矩阵,卷积计算是整个深度上的,即在每个深度
上卷积计算相加作为输出矩阵相应位置的取值。
另外一个过滤器主要概念是过滤器的深度,这个决定输出矩阵的深度。以上面例子为例:
输入矩阵为14 14 6,使用的过滤器尺寸5 5 16,表示深度为16, 输出矩阵深度为16。这层卷积计算的参数总数为:5 5 6*16,
注意为什么多一个维度的6。
已了解输出矩阵的深度,那么输出矩阵的尺寸呢,从卷积计算原理看出,如果不加入边界上的全0填充。除非过滤器大小为1*1,
不然输出矩阵尺寸会变小。此外,可以设置过滤器移动不长,也可以调整(缩小)输出矩阵的大小。
3、池化层
过滤器和卷积类似,只是计算上不一样,只取最大值或平均值,而不是卷积一样计算节点的加权和。
卷积层和池化层中过滤器移动方式也类似,唯一区别是卷积层计算是横跨整个深度的,而池化层使用的过滤器只有影响一个深度上
的节点。即计算只在当前深度之内,计算后深度不变。
池化层的作用:
1、池化层可对提取到的特征信息进行降维,一方面使特征图变小,简化网络计算复杂度并在一定程度上避免过拟合的出现;
一方面进行特征压缩,提取主要特征。 比如,就像对一张图片(同一个深度内)进行缩放一样,每相邻点(一个池化尺寸内)中取平均
或最大值。
缩小矩阵尺寸同样通过步长来实现。
最大池采样方法是一个高效的降低数据维度的采样方法。
2、池化单元具有平移不变性,即使图像有小的位移,提取到的特征依然会保持不变。这样可以忽略目标的倾斜、旋转之类的相对
位置的变化,以此提高精度。
4、全连接层
经过多层的卷积层和池化层的处理之后,卷积神经网络一般最后1到2两个全连接层来处理最后的分类。经过多层的卷积和池化层
计算后,可以认为图像中的信息已被抽象成信息含量更高的特征。我们把卷积层和池化层看做图像特征提过过程,提取完特征后,仍然
需要使用全连接层来完成分类。
5、Softmax层
和普通深度网络中softmax层一样,使得当前样例属于不同种类的概率分布情况。
5、典型网络模型
5.1 Le-Net-5
模型

第一层,卷积层
这一层的输入就是原始的图像像素32×32×1。第一个卷积层过滤器尺寸为5×5,深度为6,不使用全0填充,步长为1。
所以这一层的输出:28×28×6,卷积层共有5×5×1×6+6=156个参数
第二层,池化层
p这一层的输入为第一层的输出,是一个28×28×6的节点矩阵。本层采用的过滤器大小为2×2,长和宽的步长均为2,
所以本层的输出矩阵大小为14×14×6。
第三层,卷积层
本层的输入矩阵大小为14×14×6,使用的过滤器大小为5×5,深度为16.本层不使用全0填充,步长为1。本层的输出矩阵
大小为10×10×16。本层有5×5×6×16+16=2416个参数。
第四层,池化层
本层的输入矩阵大小10×10×16。本层采用的过滤器大小为2×2,长和宽的步长均为2,所以本层的输出矩阵大小为5×5×16。
第五层,全连接层
本层的输入矩阵大小为5×5×16,在LeNet-5论文中将这一层成为卷积层,但是因为过滤器的大小就是5×5,所以和全连接层
没有区别。如果将5×5×16矩阵中的节点拉成一个向量,那么这一层和全连接层就一样了。本层的输出节点个数为120,总共有
5×5×16×120+120=48120个参数。
第六层,全连接层
本层的输入节点个数为120个,输出节点个数为84个,总共参数为120×84+84=10164个。
第七层,全连接层
本层的输入节点个数为84个,输出节点个数为10个,总共参数为84*10+10=850
5.2 Inception-v1/v2/v3/v4模型
下文人脸识别应用中介绍
