



卷积神经网络是人工神经网络的一种,已成为当前语音分析和图像识别领域的研究热点。它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。该优点在网络的输入是多维图像时表现得更为明显,使图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建过程。卷积网络是为识别二维形状而特殊设计的一个多层感知器,这种网络结构对平移、比例缩放、倾斜或者共他形式的变形具有高度不变性。
CNNs(Convolutional Neural Networks) [10] 是受早期的延时神经网络(TDNN)的影响。延时神经网络通过在时间维度上共享权值降低学习复杂度,适用于语音和时间序列信号的处理。
CNNs是第一个真正成功训练多层网络结构的学习算法。它利用空间关系减少需要学习的参数数目以提高一般前向BP算法的训练性能。CNNs作为一个深度学习架构提出,是为了最小化数据的预处理要求。在CNNs中,图像的一小部分(局部感受区域)作为层级结构的最低层的输入,信息再依次传输到不同的层,每层通过一个数字滤波器获得观测数据的最显著的特征。这个方法能够获取对平移、缩放和旋转不变的观测数据的显著特征,因为图像的局部感受区域允许神经元或者处理单元可以访问到最基础的特征,例如定向边缘或者角点。
1962年Hubel和Wiesel通过对猫视觉皮层细胞的研究 [1] ,提出了感受野(receptive field)的概念,1984年日本学者Fukushima基于感受野的概念提出的神经认知机(neocognitron) [8] ,可以看作是卷积神经网络的第一个实现网络,也是感受野这一概念在人工神经网络领域的首次应用。神经认知机将一个视觉模式分解成许多子模式(特征),然后进入分层递阶式相连的特征平面进行处理,它试图将视觉系统模型化,即使物体有位移或轻微变形的时候,也能完成识别。
通常神经认知机包含两类神经元,即承担特征抽取的S-元和抗变形的C-元。S-元中涉及两个重要参数,即感受野与阈值参数,前者确定输入连接的数目,后者则控制对特征子模式的反应程度。许多学者一直致力于提高神经认知机的性能的研究,在传统的神经认知机中,每个S-元的感光区中由C-元带来的视觉模糊量呈正态分布。如果感光区的边缘所产生的模糊效果要比中央来得大,则S-元将会接受这种非正态模糊所导致的更大的变形容忍性。我们希望得到的是,训练模式与变形刺激模式在感受野的边缘与其中心所产生的效果之间的差异变得越来越大。为了有效地形成这种非正态模糊,Fukushima提出了带双C-元层的改进型神经认知机。
Van Ooyen和Niehuis为提高神经认知机的区别能力引入了一个新的参数 [9] 。事实上,该参数作为一种抑制信号,抑制了神经元对重复激励特征的激励。多数神经网络在权值中记忆训练信息。根据Hebb学习规则,某种特征训练的次数越多,在以后的识别过程中就越容易被检测。也有学者将进化计算理论与神经认知机结合,通过减弱对重复性激励特征的训练学习,而使得网络注意那些不同的特征以助于提高区分能力。上述都是神经认知机的发展过程,而卷积神经网络可看作神经认知机的推广形式,神经认知机是卷积神经网络的一种特例。
卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成,如图2-9所示。
图2-9 卷积神经网络的网络结构
输入图像通过三个可训练的滤波器和可加偏置进行卷积,卷积后在C1层产生三个特征映射图,然后特征映射图中每组的四个像素再进行求和,加权值,加偏置,通过一个Sigmoid函数得到三个S2层的特征映射图。这些映射图再经过滤波得到C3层。这个层级结构再和S2一样产生S4。最终,这些像素值被光栅化,并连接成一个向量输入到传统的神经网络,得到输出。
一般地,C层为特征提取层,每个神经元的输入与前一层的局部感受野相连,并提取该局部的特征,一旦该局部特征被提取后,它与其他特征间的位置关系也随之确定下来。S层是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射为一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。
此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数,降低了网络参数选择的复杂度。卷积神经网络中的每一个特征提取层(C-层)都紧跟着一个用来求局部平均与二次提取的计算层(S-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。
卷积神经网络有两种技术可以降低参数数目,第一种技术叫做局部感知野。一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因此,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。网络部分连通的思想,也是启发于生物学里面的视觉系统结构。视觉皮层的神经元就是局部接受信息的(即这些神经元只响应某些特定区域的刺激)。如图2-10所示,左图为全连接,右图为局部连接。
图2-10 全连接与局部连接
在2-10右图中,假如每个神经元只和10×10个像素值相连,那么权值数据为1,000,000×100个参数,减少为原来的千分之一。而那10×10个像素值对应的10×10个参数,其实就相当于卷积操作。
如果采用上述方法,参数仍然过多,那么就需要新的策略,即权值共享。在上面的局部连接中,每个神经元都对应100个参数,一共1,000,000个神经元,如果这1,000,000个神经元的100个参数都是相等的,那么参数数目就变为100了。
可以为这100个参数(也就是卷积操作)看成是提取特征的方式,该方式与位置无关。这其中隐含的原理则是:图像的一部分的统计特性与其他部分是一样的。这也意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。
更直观一些,当从一个大尺寸图像中随机选取一小块,比如说8×8作为样本,并且从这个小块样本中学习到了一些特征,这时我们可以把从这个8×8样本中学习到的特征作为探测器,应用到这个图像的任意地方中去。特别地,我们可以用从8×8样本中所学习到的特征跟原本的大尺寸图像作卷积,从而对这个大尺寸图像上的任一位置获得一个不同特征的激活值。
上面所述只有100个参数时,表明只有1个100×100的卷积核,显然,特征提取是不充分的,我们可以添加多个卷积核,比如32个卷积核,可以学习32种特征。在有多个卷积核时,如图2-11所示。
图2-11 多卷积核
图2-11右图中对图片不同部分进行卷积,它们表明了不同的卷积核。每个卷积核都会将图像生成为另一幅图像。比如两个卷积核就可以生成两幅图像,这两幅图像可以看作一张图像的不同的通道。如图2-12所示。
图2-12 多卷积核
在四个通道上的卷积操作,有两个卷积核,生成两个通道。其中需要注意的是,四个通道上每个通道对应一个卷积核,先将 w 1忽略,只看 w 0,那么在 w 0的某位置( i , j )处的值,是由四个通道上( i , j )处的卷积结果相加再取激活函数值得到的。
所以,由四个通道卷积得到二个通道的过程中,参数的数目为4×2×2×2个,其中4表示四个通道,第一个2表示生成二个通道,最后的2×2表示卷积核大小。
在通过卷积获得了特征(features)之后,下一步我们希望利用这些特征去做分类。理论上讲,人们可以用所有提取得到的特征去训练分类器,例如softmax分类器,但这样做面临计算量的挑战。例如:对于一个96×96像素的图像,假设我们已经学习得到了400个定义在8×8输入上的特征,每一个特征和图像卷积都会得到一个(96 - 8 + 1)×(96 - 8 + 1) =7921维的卷积特征。由于有400个特征,所以每个样例(example)都会得到一个892 × 400 =3,168,400维的卷积特征向量。学习一个拥有超过三百万特征输入的分类器十分不便,并且容易出现过拟合(over-fitting)。
为了解决这个问题,先回忆一下,我们之所以决定使用卷积后的特征,是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域中有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计。例如,人们可以计算图像一个区域上的某个特定特征的平均值(或最大值)。这些概要统计特征不仅具有低得多的维度(相比使用所有提取得到的特征),同时能改善结果(不容易过拟合)。这种聚合的操作就叫作池化(Pooling),有时也叫作平均池化或者最大池化(取决于计算池化的方法)。