卷积神经网络CNN原理、改进及应用.doc
《卷积神经网络CNN原理、改进及应用.doc》由会员分享,可在线阅读,更多相关《卷积神经网络CNN原理、改进及应用.doc(23页珍藏版)》请在咨信网上搜索。
1、卷积神经网络(CNN)一、简介卷积神经网络(Convolutional Neural Networks,简称CNN)是近年发展起来,并引起广泛重视的一种高效的识别方法。1962年,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的局部互连网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络1(Convolutional Neural Networks-简称CNN)7863。现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。Fukushima
2、在1980年基于神经元间的局部连通性和图像的层次组织转换,为解决模式识别问题,提出的新识别机(Neocognitron)是卷积神经网络的第一个实现网络2。他指出,当在不同位置应用具有相同参数的神经元作为前一层的patches时,能够实现平移不变性1296。随着1986年BP算法以及T-C问题3(即权值共享和池化)9508的提出,LeCun和其合作者遵循这一想法,使用误差梯度(the error gradient)设计和训练卷积神经网络,在一些模式识别任务中获得了最先进的性能45。在1998年,他们建立了一个多层人工神经网络,被称为LeNet-55,用于手写数字分类,这是第一个正式的卷积神经网络
3、模型3579。类似于一般的神经网络,LeNet-5有多层,利用BP算法来训练参数。它可以获得原始图像的有效表示,使得直接从原始像素(几乎不经过预处理)中识别视觉模式成为可能。然而,由于当时大型训练数据和计算能力的缺乏,使得LeNet-5在面对更复杂的问题时,如大规模图像和视频分类,不能表现出良好的性能。因此,在接下来近十年的时间里,卷积神经网络的相关研究趋于停滞,原因有两个:一是研究人员意识到多层神经网络在进行BP训练时的计算量极其之大,当时的硬件计算能力完全不可能实现;二是包括SVM在内的浅层机器学习算法也渐渐开始暂露头脚。直到2006年,Hinton终于一鸣惊人,在科学上发表文章,使得CN
4、N再度觉醒,并取得长足发展。随后,更多的科研工作者对该网络进行了改进。其中,值得注意的是Krizhevsky等人提出的一个经典的CNN架构,相对于图像分类任务之前的方法,在性能方面表现出了显著的改善2674。他们方法的整体架构,即AlexNet9(也叫ImageNet),与LeNet-5相似,但具有更深的结构。它包括8个学习层(5个卷积与池化层和3个全连接层),前边的几层划分到2个GPU上,(和ImageNet是同一个)并且它在卷积层使用ReLU作为非线性激活函数,在全连接层使用Dropout减少过拟合。该深度网络在ImageNet大赛上夺冠,进一步掀起了CNN学习热潮。一般地,CNN包括两种
5、基本的计算,其一为特征提取,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来;其二是特征映射,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数。这两种操作形成了CNN的卷积层。此外,卷积神经网络中的每一个卷积层都紧跟着一个用来求局部平均与二次提取的计算层,即池化层,这种特有的两次特征提取结构减小了特征分辨率。CNN
6、主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显式地特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。注:红色数字表示相应文献的引用量。二、卷积神经网络 vs神经网络2.1神经网络首先
7、简要介绍下神经网络。神经网络的每个单元如下:其对应的公式如下:hW,bx=fWTx=f(i=13Wixi+b)其中,该单元也可以被称作是Logistic回归模型。当将多个单元组合起来并具有分层结构时,就形成了神经网络模型。下图展示了一个具有一个隐含层的神经网络。其对应的公式如下:比较类似的,可以拓展到有2,3,4,5,个隐含层。神经网络的训练方法也同Logistic类似,不过由于其多层性,还需要利用链式求导法则对隐含层的节点进行求导,即梯度下降+链式求导法则,专业名称为反向传播。神经网络的权值调整过程如下(BP算法):计算误差函数 J=xDJx=12k=1Dtk-zk2;误差函数对权系数偏微分
8、的计算对输出层权系数的微分:Jkj=Jnetknetkkj(求导链式法则)输出层第k个神经元的总输入:netk=j=1nHkjyj+k0zk=f(netk)Jnetk=Jzkzknetk=-(tk-zk)f(netk)netkkj=yj令Jnetk=k,可得Jkj=kyj对隐层权系数的微分:Jji=Jnetjnetjji隐含层第j个神经元的总输入:netj=i=1djixi+j0yj=f(netj)Jnetj=Jyjyjnetj=(k=1cJnetknetkyj)yjnetj=(k=1ckkj)f(netj)令Jnetj=j,可得Jji=jxi权系数的更新kjkj-Jkjjiji-Jji根据计
9、算误差修正权值,最终使得误差值J最小,此时就建立好了神经网络模型。卷积神经网络的权值调整过程也多采用BP算法。2.2卷积神经网络目前有许多CNN架构的变体,但它们的基本结构非常相似。CNN的基本体系结构通常由三种层构成,分别是卷积层、池化层和全连接层。卷积层旨在学习输入的特征表示。如图,卷积层由几个特征图(feature maps)组成。一个特征图的每个神经元与它前一层的临近神经元相连,这样的一个邻近区域叫做该神经元在前一层的局部感知野。为了计算一个新的特征图,输入特征图首先与一个学习好的卷积核(也被称为滤波器、特征检测器)做卷积,然后将结果传递给一个非线性激活函数。通过应用不同的卷积核得到新
10、的特征图。注意到,生成一个特征图的核是相同的。(也就是权值共享)这样的一个权值共享模式有几个优点,如可以减少模型的复杂度,使网络更易训练等。激活函数描述CNN的非线性度,对多层网络检测非线性特征十分理想。典型的激活函数有sigmoid、tanh和ReLU。池化层旨在通过降低特征图的分辨率实现空间不变性。它通常位于两个卷积层之间。每个池化层的特征图和它相应的前一卷积层的特征图相连,因此它们的特征图数量相同。典型的池化操作是平均池化和最大池化。通过叠加几个卷积和池化层,我们可以提取更抽象的特征表示。几个卷积和池化层之后,通常有一个或多个全连接层。它们将前一层所有的神经元与当前层的每个神经元相连接,
11、在全连接层不保存空间信息。下面对各层进行详细的分析与介绍:在图像处理中,往往把图像表示为像素的向量,比如一个10001000的图像,可以表示为一个1000000的向量。在上一节中提到的神经网络中,如果隐含层数目与输入层一样,即也是1000000时,那么输入层到隐含层的参数数据为10000001000000=1012,这样就太多了,基本没法训练,所以必需先减少参数加快速度。2.2.1 卷积层(The convolutional layer)1、局部感知卷积神经网络有两种神器可以降低参数数目,第一种神器叫做局部感知野。一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧
12、密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。网络部分连通的思想,也是受启发于生物学里面的视觉系统结构。视觉皮层的神经元就是局部接受信息的(即这些神经元只响应某些特定区域的刺激)。如下图所示:左图为全连接,右图为局部连接。在上右图中,假如每个神经元只和它前一层邻近的1010个像素值相连,那么权值数据为1000000100个参数,减少为原来的万分之一。而那1010个像素值对应的1010个参数,其实就相当于卷积操作。2、权值共享但其实这样的话参数仍然过多,那么就启动第二级神器,即权值共享。
13、在上面的局部连接中,每个神经元都对应100个参数,一共1000000个神经元,如果这1000000个神经元的100个参数都是相等的,那么参数数目就变为100了。怎么理解权值共享呢?我们可以这100个参数(也就是卷积操作)看成是提取特征的方式,该方式与位置无关。这其中隐含的原理则是:图像的一部分的统计特性与其他部分是一样的。这也意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。更直观一些,当从一个大尺寸图像中随机选取一小块,比如说 88 作为样本,并且从这个小块样本中学习到了一些特征,这时我们可以把从这个 88 样本中学习到的特征作为探测
14、器,应用到这个图像的任意地方中去。特别是,我们可以用从 88 样本中所学习到的特征跟原本的大尺寸图像作卷积,从而对这个大尺寸图像上的任一位置获得一个不同特征的激活值。如下图所示,展示了一个33的卷积核在55的图像上做卷积的过程。每个卷积都是一种特征提取方式,就像一个筛子,将图像中符合条件的部分筛选出来。(图片为gif格式)3、多卷积核上面所述只有100个参数时,表明只有1个1010的卷积核,显然,特征提取是不充分的,我们可以添加多个卷积核,比如32个卷积核,可以学习32种特征。在有多个卷积核时,如下图所示:上图右,不同颜色表明不同的卷积核。每个卷积核都会将图像生成为另一幅图像。比如两个卷积核就
15、可以将生成两幅图像,这两幅图像可以看做是一张图像的不同的通道,如下图所示。下图展示了在四个通道上的卷积操作,有两个卷积核,生成两个通道。其中需要注意的是,四个通道上每个通道对应一个卷积核,先将W1忽略,只看W0,那么在W0的某位置(i,j)处的值,是由四个通道上(i,j)处邻近区域的卷积结果相加然后再取激活函数(假设选择tanh函数)值得到的。hij0=tanh(k=03(Wk*(W0*x)ij)+b0)所以,在上图由4个通道卷积得到2个通道的过程中,参数的数目为4222个,其中4表示4个通道,第一个2表示生成2个通道,最后的22表示卷积核大小。2.2.2池化层(The pooling lay
16、er)在通过卷积获得了特征 (features) 之后,下一步我们希望利用这些特征去做分类。理论上讲,人们可以用所有提取得到的特征去训练分类器,例如 softmax 分类器,但这样做面临计算量的挑战。例如:对于一个 9696 像素的图像,假设我们已经学习得到了400个定义在88输入上的特征(即:有400个卷积核),每一个特征和图像卷积都会得到一个 (96 8 + 1) (96 8 + 1) = 7921 维的卷积特征,由于有 400 个特征,所以每个样例 (example) 都会得到一个7921 400 = 3,168,400 维的卷积特征向量。学习一个拥有超过 3 百万特征输入的分类器十分不
17、便,并且容易出现过拟合 (over-fitting)。为了解决这个问题,首先回忆一下,我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化 (取决于计算池化的方法)。形式上,在获取到我们前面讨论过
18、的卷积特征后,我们要确定池化区域的大小(假定为mn),来池化我们的卷积特征。那么,我们把卷积特征划分到数个大小为mn的不相交区域上,然后用这些区域的平均(或最大)特征来获取池化后的卷积特征。这些池化后的特征便可以用来做分类。2.2.3全连接层(Fully-connected layers)几个卷积和池化层之后,通常有一个或多个全连接层,旨在执行对原始图像的高级抽象。它们将前一层所有的神经元与当前层的每个神经元相连接,即与标准神经网络各层之间的连接相同,在全连接层不保存空间信息。最后的全连接层的输出传递到输出层。对于分类任务,softmax回归由于其可以生成输出的well-formed概率分布4
19、而被普遍使用。给定训练集xi,yi;i1,N,yi0,K-1,其中xi是第i个输入图像块,yi是它的类标签,第i个输入属于第j类的预测值aji可以用如下的softmax函数转换:pji=eajil=0K-1eali,softmax将预测转换为非负值,并进行正则化处理。至此,卷积神经网络的基本结构和原理已经阐述完毕。在实际应用中,往往使用多层卷积,然后再使用全连接层进行训练,多层卷积的目的是一层卷积学到的特征往往是局部的,层数越高,学到的特征就越全局化。2.2.4问题1、预处理步骤利用PCA或ZCA白化矩阵调整权值。白化的目的就是降低输入的冗余性;更正式的说,希望通过白化过程使得学习算法的输入具
20、有如下性质:(1)特征之间相关性较低;(2)所有特征具有相同的方差。利用PCA或ZCA白化矩阵后,卷积层输出的特征激活值等于f(WTx-x+b),其中T是白化矩阵,x是前一层图像块的均值,此时,相当于对图像块做WT卷积而不是之前的W,同时神经元单元的偏置也变为b-WTx。补充:PCA白化和ZCA白化算法首先,我们需要确保数据的均值(近似)为零。对于自然图像,我们通过减去每个图像块(patch)的均值(近似地)来达到这一目标。为此,我们计算每个图像块的均值,并从每个图像块中减去它的均值;avg = mean(x, 1); % 分别为每个图像块计算像素强度的均值x = x - repmat(avg
21、, size(x, 1), 1);其次,计算=1mi=1m(x(i)(x(i)T,假设x为一数据结构,其中每列表示一个训练样本(所以x是一个nm的矩阵);sigma = x * x / size(x, 2);接下来,PCA计算的特征向量。但是由于是对称半正定的矩阵,用 svd 函数在数值计算上更加稳定。矩阵 U 将包含 Sigma 的特征向量(一个特征向量一列,从主向量开始排序),矩阵S 对角线上的元素将包含对应的特征值(同样降序排列)。矩阵V等于U的转置,可以忽略。U,S,V = svd(sigma);最后,计算PCA白化后的数据xPCAwhite和ZCA白化后的数据xZCAwhite:xP
22、CAwhite = diag(1./sqrt(diag(S) + epsilon) * U * x;%diag函数功能:矩阵对角元素的提取和创建对角阵xZCAwhite = U * diag(1./sqrt(diag(S) + epsilon) * U * x;%epsilon MATLAB 本身内建的常数,它是一個10的-52次方的小数,可以作为反复运算时比较之用2、如何计算卷积核?常用的计算卷积核的方法,一种是BP算法,上面神经网络中已经讨论过:3、窄卷积 vs 宽卷积在上文中解释卷积运算的时候,忽略了如何使用滤波器的一个小细节。在矩阵的中部使用33的滤波器没有问题,在矩阵的边缘该怎么办呢
23、?左上角的元素没有顶部和左侧相邻的元素,该如何滤波呢?解决的办法是采用补零法(zero-padding)。所有落在矩阵范围之外的元素值都默认为0。这样就可以对输入矩阵的每一个元素做滤波了,输出一个同样大小或是更大的矩阵。补零法又被称为是宽卷积,不使用补零的方法则被称为窄卷积。如图所示:图中滤波器长度为5,输入长度为7。当滤波器长度相对输入向量的长度较大时,宽卷积很有用,或者说很有必要。在上图中,窄卷积输出的长度是 (7-5)+1=3,宽卷积输出的长度是(7+2*4-5)+1=11。一般形式为nout=nin+2*npadding-nfilter+14、步长卷积运算的另一个超参数是步长,即每一次
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 卷积 神经网络 CNN 原理 改进 应用
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。