1. 概述
卷积神经网络是一种特殊的深层的神经网络模型,它的特殊性体现在两个方面,一方面它的神经元间的连接是非全连接的, 另一方面同一层中某些神经元之间的连接的权重是共享的(即相同的)。它的非全连接和权值共享的网络结构使之更类似于生物 神经网络,降低了网络模型的复杂度(对于很难学习的深层结构来说,这是非常重要的),减少了权值的数量。
卷积网络最初是受视觉神经机制的启发而设计的,是为识别二维形状而设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他 形式的变形具有高度不变性。1962年Hubel和Wiesel通过对猫视觉皮层细胞的研究,提出了感受野(receptive field)的概念,1984年日本学者Fukushima 基于感受野概念提出的神经认知机(neocognitron)模型,它可以看作是卷积神经网络的第一个实现网络,也是感受野概念在人工神经网络领域的首次应用。
神经认知机将一个视觉模式分解成许多子模式(特征),然后进入分层递阶式相连的特征平面进行处理,它试图将视觉系统模型化,使其能够在即使物体有 位移或轻微变形的时候,也能完成识别。神经认知机能够利用位移恒定能力从激励模式中学习,并且可识别这些模式的变化形。在其后的应用研究中,Fukushima 将神经认知机主要用于手写数字的识别。随后,国内外的研究人员提出多种卷积神经网络形式,在邮政编码识别(Y. LeCun etc)、车牌识别和人脸识别等方面 得到了广泛的应用。
2. CNN的结构
卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。 这些良好的性能是网络在有监督方式下学会的,网络的结构主要有稀疏连接和权值共享两个特点,包括如下形式的约束: 1 特征提取。每一个神经元从上一层的局部接受域得到突触输人,因而迫使它提取局部特征。一旦一个特征被提取出来, 只要它相对于其他特征的位置被近似地保留下来,它的精确位置就变得没有那么重要了。 2 特征映射。网络的每一个计算层都是由多个特征映射组成的,每个特征映射都是平面形式的。平面中单独的神经元在约束下共享 相同的突触权值集,这种结构形式具有如下的有益效果:a.平移不变性。b.自由参数数量的缩减(通过权值共享实现)。 3.子抽样。每个卷积层跟着一个实现局部平均和子抽样的计算层,由此特征映射的分辨率降低。这种操作具有使特征映射的输出对平移和其他 形式的变形的敏感度下降的作用。
2.1 稀疏连接(Sparse Connectivity)
卷积网络通过在相邻两层之间强制使用局部连接模式来利用图像的空间局部特性,在第m层的隐层单元只与第m-1层的输入单元的局部区域有连接,第m-1层的这些局部 区域被称为空间连续的接受域。我们可以将这种结构描述如下: 设第m-1层为视网膜输入层,第m层的接受域的宽度为3,也就是说该层的每个单元与且仅与输入层的3个相邻的神经元相连,第m层与第m+1层具有类似的链接规则,如下图所示。
2.2 权值共享(Shared Weights)
在卷积网络中,每个稀疏过滤器$h_{i}$通过共享权值都会覆盖整个可视域,这些共享权值的单元构成一个特征映射,如下图所示。
2.3 The Full Model
卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。网络中包含一些简单元和复杂元,分别记为S-元 和C-元。S-元聚合在一起组成S-面,S-面聚合在一起组成S-层,用Us表示。C-元、C-面和C-层(Us)之间存在类似的关系。网络的任一中间级由S-层与C-层 串接而成,而输入级只含一层,它直接接受二维视觉模式,样本特征提取步骤已嵌入到卷积神经网络模型的互联结构中。
一般地,Us为特征提取层,每个神经元的输入与前一层的局部感受野相连,并提取该局部的特征,一旦该局部特征被提取后,它与其他特征间的位置关系 也随之确定下来;Uc是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射为一个平面,平面上所有神经元的权值相等。特征映射结构采用 影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性(这一句表示没看懂,那位如果看懂了,请给我讲解一下)。此外,由于 一个映射面上的神经元共享权值,因而减少了网络自由参数的个数,降低了网络参数选择的复杂度。卷积神经网络中的每一个特征提取层(S-层)都紧跟着一个 用来求局部平均与二次提取的计算层(C-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。
下图是一个卷积网络的实例
图中所示的多层感知器包含近似 100000 个突触连接,但只有大约2600 个自由参数。自由参数在数量上显著地减少是通过权值共享获得 的,学习机器的能力(以 VC 维的形式度量)因而下降,这又提高它的泛化能力。而且它对自由参数的调整通过反向传播学习的随机形式来实 现。另一个显著的特点是使用权值共享使得以并行形式实现卷积网络变得可能。这是卷积网络对全连接的多层感知器而言的另一个优点。
3. CNN的学习
总体而言,前面提到的卷积网络可以简化为下图所示模型:
3.1 卷积层的学习
卷积层的典型结构如下图所示。
卷积层的前馈运算是通过如下算法实现的:
卷积层的反馈运算的核心代码如下:
``` cpp
ConvolutionLayer::bprop(input,output,in_dx,out_dx) {
//梯度通过DSigmoid反传
sum_dx = DSigmoid(out_dx);
//计算bias的梯度
for (i=0;i 子采样层的典型结构如下图所示。
3.2 子采样层的学习
类似的字采样层的输出的计算式为:
子采样层的反馈运算的核心代码如下:
``` cpp
SubSamplingLayer::bprop(input,output,in_dx,out_dx) {
//梯度通过DSigmoid反传
sum_dx = DSigmoid(out_dx);
//计算bias和coeff的梯度
for (i=0;i 全连接层的学习与传统的神经网络的学习方法类似,也是使用BP算法,这里就不详述了。 关于CNN的完整代码可以参考https://github.com/ibillxia/DeepLearnToolbox/tree/master/CNN中的Matlab代码。 [1] Learn Deep Architectures for AI, Chapter 4.5.
[2] Deep Learning Tutorial, Release 0.1, Chapter 6.
[3] Convolutional Networks for Images Speech and Time-Series.
[4] 基于卷积网络的三维模型特征提取. 王添翼.
[5] 卷积神经网络的研究及其在车牌识别系统中的应用. 陆璐.
3.3 全连接层的学习
References