VALSE

查看: 12457|回复: 0

卷积神经网络CNN

[复制链接]
发表于 2015-7-18 21:37:04 | 显示全部楼层 |阅读模式
卷积神经网络CNN
2015-07-13 jay CSDN大数据 CSDN大数据 CSDN大数据
微信号 csdnbigdata

本文学习笔记的部分内容参考zouxy09的博客,谢谢!
http://blog.csdn.net/zouxy09/article/details/8775360

什么是卷积

卷积如果改名为“加权平均积”,就会很好理解了。卷积的离散形式就是常用的加权平均,而连续形式则可理解为对连续函数的加权平均。假如我们观测或计算出一组数据,但数据由于受噪音的污染并不光滑,我们希望对其进行人工处理。那么,最简单的方法就是加权平均。实际上加权平均是两个序列在做离散卷积,其中一个序列是权重,另一个序列是原数据。试想若把序列换为函数,则就是我们通常卷积的定义。这时可使用一个函数对另外一个函数做加权平均。不过,一个扮演的是权重角色,另一个则扮演被平均的角色。

数学上定义:设ƒ(x),g(x)是实数集R上的两个可积函数,作积分




图像特征

其实对于一张图片来说,像素级特征是没有价值的,特征是具有结构性的时候,才能更好的反应这幅图像。因此可通过卷积神经网络把底层特征表达一层层的抽象到高层特征表示。如:像素级特征表示的图像,在第一层学习后得到梯度级图像表示,再上一层学习后得到目标部分级图像表示,再次学习后得到整个目标结构模型特征。

其实卷积神经网络的本质是构建多层学习模型,来学习得到图像更有价值的特征,从而最终提升分类或预测的准确性。





卷积神经网络

卷积神经网络是人工神经网络的一种,它的最厉害的地方在于权值共享网络结构,降低了网络模型的复杂度,减少了权值数量。优点是图像可直接作为网络的输入,避免了传统算法中复杂的特征提取和数据重建的过程。

CNN利用空间关系减少需要学习的参数数目。CNN中,图像的一小部分作为层级结构的最底层输入,信息再依次传输到不同的层,每层通过一个数字滤波器去获得观测数据的最显著特征。

卷积神经网络结构




CNN是一个多层神经网络,每层由多个二维平面组成,每个平面由多个独立神经元组成。

如上图,输入层可直接使用原图像的像素表示作为输入,通过三个可训练的滤波器和可加偏置对原图像进行卷积,卷积后在C1层产生三个特征映射图(每个特征映射图都可看为是对原图像的抽象),这是一个卷积的过程,称为卷积层。卷积层得到的特征映射图作为输入,将图中每组的四个像素进行求和,加权值,加偏置,再通过一个sigmoid函数得到三个S2层的特征映射图,这是一个下采样的过程。如此卷积层和下采样层交替,最终给出图像的向量表示。后可接一个分类器(如SVM或传统神经网络)得到输出。

参数减少和权值共享

卷积神经网络最厉害的地方在于权值共享网络结构,其具体做法如下:




上图左:如果我们有1000*1000像素的图像,有1000000个隐层神经元,那么他们全连接的话(每个隐层神经元都连接图像的每一个像素点),就有1000*1000*1000000=10^12个连接,也就是10^12个权值参数。

考虑到图像的空间联系是局部的,就像人是通过一个局部的感受野去感受外界图像一样,每一个神经元都不需要对全局图像做感受,每个神经元只感受局部的图像区域,然后在更高层,将这些感受不同局部的神经元综合起来就可以得到全局的信息了。这样,我们就可以减少连接的数目,也就是减少神经网络需要训练的权值参数的个数了。如上图右:假如局部感受野是10*10,隐层每个感受野只需要和这10*10的局部图像相连接,所以1百万个隐层神经元就只有一亿(1000000*10*10)个连接,即10^8个参数。

试想如果每个神经元用的都是同一个卷积核去卷积图像。这样我们就只有100个参数。所以不管隐层的神经元个数有多少,两层间的连接只有100个参数,所有神经元公用同一个卷积核,这就是权值共享。

因为一种滤波器,也就是一种卷积核就是提出图像的一种特征,当需要提取不同的特征时,需要加多几种滤波器就可以了。所以假设我们加到100种滤波器,每种滤波器的参数不一样,表示它提出输入图像的不同特征,这样每种滤波器去卷积图像就得到对图像的不同特征的映射,称之为Feature Map。所以100种卷积核就有100个Feature Map。这100个Feature Map就组成了一层神经元。所以这一层参数只有:100种卷积核*每种卷积核共享100个参数=100*100=10000个参数。如下图右:不同的颜色表达不同的滤波器。




所以隐层的参数个数和隐层的神经元个数无关,只和滤波器的大小和滤波器种类的多少有关。但是隐层的神经元个数和原图像,也就是输入的大小(神经元个数)、滤波器的大小和滤波器在图像中的滑动步长都有关!例如,输入图像是1000*1000像素,而滤波器大小是10*10,假设滤波器没有重叠,也就是步长为10,这样隐层的神经元个数就是(1000*1000)/(10*10)=100*100个神经元了。但这只是一种滤波器,也就是一个Feature Map的神经元个数,如果100个Feature Map就是100倍了。

所以卷积网络的核心思想是将:局部感受野、权值共享以及空间亚采样这三种结构思想结合起来获得了某种程度的位移、尺度、形变不变性。

LeNet-5

一个典型的卷积神经网络的例子就是LeNet-5。这个卷积神经网络当年在美国银行被用来识别支票上的手写数据。其网络结构如下:





LeNet-5共有7层,每层都包含可训练参数(连接权重)。输入图像为32*32大小,每个层有多个Feature Map(多个滤波器处理),每个Feature Map通过一种卷积滤波器提取输入的一种特征,每个Feature Map有多个神经元。

C1层是一个卷积层(通过卷积运算,可以使原信号特征增强,并且降低噪音),由6个特征图Feature Map构成(即需要6个不同的滤波器)。特征图中每个神经元与输入中5*5的邻域(感受野单元大小)相连。特征图的大小为28*28。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函数计算。每个单元的2*2感受野并不重叠,因此S2中每个特征图的大小是C1中特征图大小的1/4(行和列各1/2)。S2层有12个(6*(1+1))可训练参数和5880个((2*2+1)*6*14*14)连接。





如图,卷积过程包括:用一个可训练的滤波器fx去卷积一个输入的图(第一阶段是输入的图像,后面的阶段就是卷积特征map了),然后加一个偏置bx,得到卷积层Cx。

子采样过程包括:每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1。

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

C3层也是一个卷积层,它同样通过5*5的卷积核去卷积层S2,然后得到的特征map就只有10*10个神经元,但是它有16种不同的卷积核(16种不同滤波器),所以就存在16个特征map了。这里需要注意的一点是:S2层特征map和C1层的特征map是一一对应连接的,而C3中的每个特征map是连接到S2中的所有6个或者几个特征map上的,表示本层的特征map是上一层提取到的特征map的不同组合(这个做法也并不是唯一的)。(就像人的视觉系统一样,底层的结构构成上层更抽象的结构)。

如上说C3中每个特征图由S2中所有6个或者几个特征map组合而成。为什么是几个map组合而没确定的说6个(全部组合),原因有2点。第一,不完全的连接机制将连接的数量保持在合理的范围内。第二,也是最重要的,为了破坏网络的对称性。由于不同的特征图有不同的输入,所以迫使他们抽取不同的特征。

例如,存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。这样C3层有1516个((5*5*3+1)*6+(5*5*4+1)*6+(5*5*4+1)*3+(5*5*6+1))可训练参数和151600个连接。

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

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

F6层有84个单元(之所以选这个数字的原因来自于输出层的设计),与C5层全相连(全相连层)。有10164个((1*1*120+1)*84)可训练参数。如同经典神经网络,F6层计算输入向量和权重向量之间的点积,再加上一个偏置。然后将其传递给sigmoid函数产生单元i的一个状态。
最后,输出层10个单元,分别都是由欧式径向基函数(Euclidean Radial Basis Function)单元组成,每类一个单元,每个有84个输入。换句话说,每个输出RBF单元计算输入向量和参数向量之间的欧式距离。输入离参数向量越远,RBF输出的越大。一个RBF输出可以被理解为衡量输入模式和与RBF相关联类的一个模型的匹配程度的惩罚项。这些输出单元的参数是人工选取并保持固定的(至少初始时候如此)。这些参数向量的成分被设为-1或1。例如第一个滤波器的参数向量为(1,-1,1,........,-1)(84维),计算84个输入与该84维参数向量的欧氏距离,相离越近表示该输入为第一类。一共10个滤波器,分别代表该输入为类0,1,....9.

训练过程

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

卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。卷积网络执行的是有监督训练,所以其样本集是由形如:(输入向量,理想输出向量)的向量对构成的。在开始训练前,所有的权都应该用一些不同的小随机数进行初始化。“小随机数”用来保证网络不会因权值过大而进入饱和状态,从而导致训练失败;“不同”用来保证网络可以正常地学习。

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

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

a)从样本集中取一个样本(X,Yp),将X输入网络;
b)计算相应的实际输出Op。

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

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

第二阶段,向后传播阶段

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

b)按极小化误差的方法反向传播调整权矩阵。(后面具体讲权重是如何调整的)

卷积神经网络的优点

卷积神经网络CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。

1、由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显式的特征抽取,而隐式地从训练数据中进行学习;

2、由于同一特征映射面上的神经元权值相同,所以网络可以并行学习。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。CNN通过结构重组和减少权值将特征提取功能融合进多层感知器。它可以直接处理灰度图片,能够直接用于处理基于图像的分类。

卷积网络较一般神经网络在图像处理方面有如下优点:

a)输入图像和网络的拓扑结构能很好的吻合;

b)特征提取和模式分类同时进行,并同时在训练中产生;

c)权重共享可以减少网络的训练参数,使神经网络结构变得更简单,适应性更强。

本文来自CSDN博客:http://blog.csdn.net/qustqustjay/article/details/46839859




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|Vision And Learning SEminar

GMT+8, 2024-12-4 01:18 , Processed in 0.018096 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表