Convolutional Neural Networks卷积神经网络(二)

转自http://blog.csdn.net/zouxy09/article/details/8781543算法

CNNs是第一个真正成功训练多层网络结构的学习算法。它利用空间关系减小须要学习的参数数目以提升通常前向BP算法的训练性能。在CNN中,图像的一小部分(局部感觉区域)做为层级结构的最低层的输入,信息再依次传输到不一样的层,每层经过一个数字滤波器去得到观测数据的最显著的特征。这个方法可以获取对平移,缩放和旋转不变的观测数据的显著特征,由于图像的局部感觉区域容许神经元或者处理单元能够访问到最基础的特征,例如定向边缘或者角点。数据库

2)卷积神经网络的网络结构网络

 

卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每一个平面由多个独立神经元组成,机器学习

图:卷积神经网络的概念示范:输入图像经过和三个可训练的滤波器和可加偏置进行卷积,滤波过程如图一,卷积后在C1层产生三个特征映射图,而后特征映射图中每组的四个像素再进行求和,加权值,加偏置,经过一个Sigmoid函数获得三个S2层的特征映射图。这些映射图再进过滤波获得C3层。这个层级结构再和S2同样产生S4。最终,这些像素值被光栅化,并链接成一个向量输入到传统的神经网络,获得输出函数

 通常地,C层为特征提取层,每一个神经元的输入与前一层的局部感觉野相连,并提取该局部的特征,一旦该局部特征被提取后,它与其余特征间的位置关系也随之肯定下来;S层是特征映射层,网络的每一个计算层由多个特征映射组成,每一个特征映射为一个平面,平面上全部神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数做为卷积网络的激活函数,使得特征映射具备位移不变性布局

       此外,因为一个映射面上的神经元共享权值,于是减小了网络自由参数的个数,下降了网络参数选择的复杂度。卷积神经网络中的每个特征提取层(C-层)都紧跟着一个用来求局部平均与二次提取的计算层(S-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力性能

3)关于参数减小与权值共享学习

      上面聊到,好像CNN一个牛逼的地方就在于经过感觉野和权值共享减小了神经网络须要训练的参数的个数。那到底是啥的呢?spa

       下图左:若是咱们有1000x1000像素的图像,有1百万个隐层神经元,那么他们全链接的话(每一个隐层神经元都链接图像的每个像素点),就有1000x1000x1000000=10^12个链接,也就是10^12个权值参数。然而图像的空间联系是局部的,就像人是经过一个局部的感觉野去感觉外界图像同样,每个神经元都不须要对全局图像作感觉,每一个神经元只感觉局部的图像区域,而后在更高层,将这些感觉不一样局部的神经元综合起来就能够获得全局的信息了。这样,咱们就能够减小链接的数目,也就是减小神经网络须要训练的权值参数的个数了。以下图右:假如局部感觉野是10x10,隐层每一个感觉野只须要和这10x10的局部图像相链接,因此1百万个隐层神经元就只有一亿个链接,即10^8个参数。比原来减小了四个0(数量级),这样训练起来就没那么费力了,但仍是感受不少的啊,那还有啥办法没?.net

咱们知道,隐含层的每个神经元都链接10x10个图像区域,也就是说每个神经元存在10x10=100个链接权值参数。那若是咱们每一个神经元这100个参数是相同的呢?也就是说每一个神经元用的是同一个卷积核去卷积图像。这样咱们就只有100个参数,无论隐层的神经元个数有多少,两层间的链接只有100个参数,这是权值共享,就是卷积神经网络的主要优点,共同窗习。

       好了,你就会想,这样提取特征也忒不靠谱吧,这样你只提取了一种特征啊?对了,真聪明,咱们须要提取多种特征对不?假如一种滤波器,也就是一种卷积核就是提出图像的一种特征,例如某个方向的边缘。那么咱们须要提取不一样的特征,怎么办,加多几种滤波器不就好了吗?对了。因此假设咱们加到100种滤波器,每种滤波器的参数不同,表示它提出输入图像的不一样特征,例如不一样的边缘。(这样就会有100个feature map)这样每种滤波器去卷积图像就获得对图像的不一样特征的放映,咱们称之为Feature Map。因此100种卷积核就有100个Feature Map这100个Feature Map就组成了一层神经元。到这个时候明了了吧。咱们这一层有多少个参数了?100种卷积核x每种卷积核共享100个参数=100x100=10K,也就是1万个参数。见下图右:不一样的颜色表达不一样的滤波器。

 嘿哟,遗漏一个问题了。刚才说隐层的参数个数和隐层的神经元个数无关,只和滤波器的大小和滤波器种类的多少有关。那么隐层的神经元个数怎么肯定呢?它和原图像,也就是输入的大小(神经元个数)、滤波器的大小和滤波器在图像中的滑动步长都有关!例如,个人图像是1000x1000像素,而滤波器大小是10x10,假设滤波器没有重叠,也就是步长为10,这样隐层的神经元个数就是(1000x1000 )/ (10x10)=100x100个神经元了,假设步长是8,也就是卷积核会重叠两个像素,那么……我就不算了,思想懂了就好。注意了,这只是一种滤波器,也就是一个Feature Map的神经元个数哦,若是100个Feature Map就是100倍了。因而可知,图像越大,神经元个数和须要训练的权值参数个数的贫富差距就越大。

 

      须要注意的一点是,上面的讨论都没有考虑每一个神经元的偏置部分。因此权值个数须要加1 。这个也是同一种滤波器共享的。

      总之,卷积网络的核心思想是将:局部感觉野、权值共享(或者权值复制)以及时间或空间亚采样这三种结构思想结合起来得到了某种程度的位移、尺度、形变不变性

例子:

 LeNet-5共有7层,不包含输入,每层都包含可训练参数(链接权重)。输入图像为32*32大小。这要比Mnist数据库(一个公认的手写数据库)中最大的字母还大。这样作的缘由是但愿潜在的明显特征如笔画断电或角点可以出如今最高层特征监测子感觉野的中心。

        咱们先要明确一点:每一个层有多个Feature Map,每一个Feature Map经过一种卷积滤波器提取输入的一种特征,而后每一个Feature Map有多个神经元。

        C1层是一个卷积层(为何是卷积?卷积运算一个重要的特色就是,经过卷积运算,可使原信号特征加强,而且下降噪音),由6个特征图Feature Map构成。特征图中每一个神经元与输入中5*5的邻域相连。特征图的大小为28*28,这样能防止输入的链接掉到边界以外(是为了BP反馈时的计算,不致梯度损失,我的看法)。C1有156个可训练参数(每一个滤波器5*5=25个unit参数和一个bias参数,一共6个滤波器,共(5*5+1)*6=156个参数),共156*(28*28)=122,304个链接。

       S2层是一个下采样层(为何是下采样?利用图像局部相关性的原理,对图像进行子抽样,能够减小数据处理量同时保留有用信息),有6个14*14的特征图。特征图中的每一个单元与C1中相对应特征图的2*2邻域相链接。S2层每一个单元的4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果经过sigmoid函数计算。可训练系数和偏置控制着sigmoid函数的非线性程度。若是系数比较小,那么运算近似于线性运算,亚采样至关于模糊图像。若是系数比较大,根据偏置的大小亚采样能够被当作是有噪声的“或”运算或者有噪声的“与”运算。每一个单元的2*2感觉野并不重叠,所以S2中每一个特征图的大小是C1中特征图大小的1/4(行和列各1/2)。S2层有12个可训练参数和5880个链接。

图:卷积和子采样过程:卷积过程包括:用一个可训练的滤波器fx去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是卷积特征map了),而后加一个偏置bx,获得卷积层Cx。子采样过程包括:每邻域四个像素求和变为一个像素,而后经过标量Wx+1加权,再增长偏置bx+1,而后经过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1

       因此从一个平面到下一个平面的映射能够看做是做卷积运算,S-层可看做是模糊滤波器,起到二次特征提取的做用。隐层与隐层之间空间分辨率递减,而每层所含的平面数递增,这样可用于检测更多的特征信息。

       C3层也是一个卷积层,它一样经过5x5的卷积核去卷积层S2,而后获得的特征map就只有10x10个神经元,可是它有16种不一样的卷积核,因此就存在16个特征map了。这里须要注意的一点是:C3中的每一个特征map是链接到S2中的全部6个或者几个特征map的,表示本层的特征map是上一层提取到的特征map的不一样组合(这个作法也并非惟一的)。(看到没有,这里是组合,就像以前聊到的人的视觉系统同样,底层的结构构成上层更抽象的结构,例如边缘构成形状或者目标的部分)。

       刚才说C3中每一个特征图由S2中全部6个或者几个特征map组合而成。为何不把S2中的每一个特征图链接到每一个C3的特征图呢?缘由有2点。第一,不彻底的链接机制将链接的数量保持在合理的范围内。第二,也是最重要的,其破坏了网络的对称性。因为不一样的特征图有不一样的输入,因此迫使他们抽取不一样的特征(但愿是互补的)。

      例如,存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。而后的3个以不相邻的4个特征图子集为输入。最后一个将S2中全部特征图为输入。这样C3层有1516个可训练参数和151600个链接。

       S4层是一个下采样层,由16个5*5大小的特征图构成。特征图中的每一个单元与C3中相应特征图的2*2邻域相链接,跟C1和S2之间的链接同样。S4层有32个可训练参数(每一个特征图1个因子和一个偏置)和2000个链接。

       C5层是一个卷积层,有120个特征图。每一个单元与S4层的所有16个单元的5*5邻域相连。因为S4层特征图的大小也为5*5(同滤波器同样),故C5特征图的大小为1*1:这构成了S4和C5之间的全链接。之因此仍将C5标示为卷积层而非全相联层,是由于若是LeNet-5的输入变大,而其余的保持不变,那么此时特征图的维数就会比1*1大。C5层有48120个可训练链接。

       F6层有84个单元(之因此选这个数字的缘由来自于输出层的设计),与C5全链接。有(120+1)*84个可训练参数。如同经典神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置。而后将其传递给sigmoid函数产生单元i的一个状态。

       最后,输出层由欧式径向基函数单元组成,

RBF (Radial Basis Function)能够看作是一个高维空间中的曲面拟合(逼近)问题,学习是为了在多维空间找到一个可以最佳匹配训练数据的曲面,而后来一批新的数据,用刚才训练的那个曲面来处理(好比回归、分类)。RBF的本质思想是反向传播学习算法应用递归技术,这种技术在统计学中被称为随机逼近。RBF里的basis function(径向基函数里的基函数)就是在神经网络的隐单元里提供了一个函数集,该函数集在输入模式(向量)扩散至隐空间时,为其构建了一个任意的基。这个函数集中的函数就被称为径向基函数。

映射到高维空间的缘由:

一、一个模式分类问题若是映射到一个高维空间将会比映射到一个地位空间更可能实现线性可分。

二、隐空间的维数越高,逼近就越精确

注意:这里是非线性映射到高维空间,其目的是是使得分类更加容易、精确。

最后,输出层由欧式径向基函数单元组成,每类一个单元,每一个有84个输入。换句话说,每一个输出RBF单元计算输入向量和参数向量之间的欧式距离。输出离参数向量越远,RBF输出的越大。一个RBF输出能够被理解为衡量输入模式和与RBF相关联类的一个模型的匹配程度的惩罚项。用几率术语来讲,RBF输出能够被理解为F6层配置空间的高斯分布的对数似然函数。给定一个输入模式,损失函数应该能使F6的配置与RBF参数向量(即模式的指望分类)足够接近。这些单元的参数时人工选取并保持固定的。

RBF参数向量起着F6层目标向量的角色。须要指出这些向量的成分是+1或者-1,这正好在F6 sigmoid的范围内,所以能够防止sigmoid函数饱和。实际上,+1和-1是sigmoid函数的最大弯曲的点处。这使得F6单元运行在最大非线性范围内。必须避免sigmoid函数的饱和,由于这将会致使损失函数较慢的收敛和病态问题。

5)训练过程

        神经网络用于模式识别的主流是有指导学习网络,无指导学习网络更多的是用于聚类分析。对于有指导的模式识别,因为任同样本的类别是已知的,样本在空间的分布再也不是依据其天然分布倾向来划分,而是要根据同类样本在空间的分布及不一样类样本之间的分离程度找一种适当的空间划分方法,或者找到一个分类边界,使得不一样类样本分别位于不一样的区域内。这就须要一个长时间且复杂的学习过程,不断调整用以划分样本空间的分类边界的位置,使尽量少的样本被划分到非同类区域中。

       卷积网络在本质上是一种输入到输出的映射,它可以学习大量的输入与输出之间的映射关系,而不须要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具备输入输出对之间的映射能力。卷积网络执行的是有导师训练,因此其样本集是由形如:(输入向量,理想输出向量)的向量对构成的。全部这些向量对,都应该是来源于网络即将模拟的系统的实际“运行”结果。它们能够是从实际运行系统中采集来的。在开始训练前,全部的权都应该用一些不一样的小随机数进行初始化。“小随机数”用来保证网络不会因权值过大而进入饱和状态,从而致使训练失败;“不一样”用来保证网络能够正常地学习。实际上,若是用相同的数去初始化权矩阵,则网络无能力学习。

       训练算法与传统的BP算法差很少。主要包括4步,这4步被分为两个阶段:

第一阶段,向前传播阶段:

a)从样本集中取一个样本(X,Yp),将X输入网络;

b)计算相应的实际输出Op

      在此阶段,信息从输入层通过逐级的变换,传送到输出层。这个过程也是网络在完成训练后正常运行时执行的过程。在此过程当中,网络执行的是计算(实际上就是输入与每层的权值矩阵相点乘,获得最后的输出结果):

          Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n)

第二阶段,向后传播阶段

a)算实际输出Op与相应的理想输出Yp的差;

b)按极小化偏差的方法反向传播调整权矩阵。

6)卷积神经网络的优势

        卷积神经网络CNN主要用来识别位移、缩放及其余形式扭曲不变性的二维图形。因为CNN的特征检测层经过训练数据进行学习,因此在使用CNN时,避免了显式的特征抽取,而隐式地从训练数据中进行学习;再者因为同一特征映射面上的神经元权值相同,因此网络能够并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优点。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享下降了网络的复杂性,特别是多维输入向量的图像能够直接输入网络这一特色避免了特征提取和分类过程当中数据重建的复杂度。

        流的分类方式几乎都是基于统计特征的,这就意味着在进行分辨前必须提取某些特征。然而,显式的特征提取并不容易,在一些应用问题中也并不是老是可靠的。卷积神经网络,它避免了显式的特征取样,隐式地从训练数据中进行学习。这使得卷积神经网络明显有别于其余基于神经网络的分类器,经过结构重组和减小权值将特征提取功能融合进多层感知器。它能够直接处理灰度图片,可以直接用于处理基于图像的分类。

       卷积网络较通常神经网络在图像处理方面有以下优势: a)输入图像和网络的拓扑结构能很好的吻合;b)特征提取和模式分类同时进行,并同时在训练中产生;c)权重共享能够减小网络的训练参数,使神经网络结构变得更简单,适应性更强。

7)小结

       CNNs中这种层间联系和空域信息的紧密关系,使其适于图像处理和理解。并且,其在自动提取图像的显著特征方面还表现出了比较优的性能。在一些例子当中,Gabor滤波器已经被使用在一个初始化预处理的步骤中,以达到模拟人类视觉系统对视觉刺激的响应。在目前大部分的工做中,研究者将CNNs应用到了多种机器学习问题中,包括人脸识别,文档分析和语言检测等。为了达到寻找视频中帧与帧之间的相干性的目的,目前CNNs经过一个时间相干性去训练,但这个不是CNNs特有的。

相关文章
相关标签/搜索