神经网络到卷积神经网络原理与实践_第1页
神经网络到卷积神经网络原理与实践_第2页
神经网络到卷积神经网络原理与实践_第3页
神经网络到卷积神经网络原理与实践_第4页
神经网络到卷积神经网络原理与实践_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上神经网络 到 卷积神经网络 推导与实践摘 要卷积神经网络(Convolutional Neural Network, CNN)是一种源于人工神经网络(Neural Network, NN)的深度机器学习方法,近年来在图像识别领域取得了巨大的成功。CNN由于采用局部连接和权值共享,保持了网络的深层结构,同时又大大减少了网络参数,使模型具有良好的泛化能力又较容易训练。NN的训练算法是基于梯度下降的错误反向传播(Back Propagate,BP)算法,CNN的训练算法是BP算法的一种变形。本文从梯度下降的数学推导中总结了NN训练过程中的错误信号传播和权重修改策略,用切割小

2、图训练共权神经网络的方式解释了CNN中的卷积过程,并以特殊卷积的方式解释了CNN的子采样过程,最后将NN的错误信号传播和权重修改策略移植到CNN的训练中。我们将推导出的CNN训练方法用C+编码实现,用CNN应用最早最典型的手写数字识别问题验证被编码的推导过程,得到了正确的效果。目 录图目录专心-专注-专业第三章 神经网络与卷积神经网络人工神经网络(Neural Network, NN)有50多年的历史。神经网络的发展也经历过单层感知机,多层感知机,多层感知机变形几个阶段。卷积神经网络(Convolutional Neural Network, CNN)是多层感知机的一种变体。神经网络的训练方法

3、是错误反向传播算法(Back Propagate, BP),而错误反向传播算法的数学基础是梯度下降。在本章的前半部分,我给出单层感知机和多层感知机的工作原理,即BP算法。计算机学者从生物视觉的研究中得到启示,一个视觉神经细胞只与其距离较近的邻层神经元相连。鉴于此,CNN的采用了局部感受野。为了简化模型,一个特征平面的神经元共享权值。CNN最早由Yann Lecun 实现并运用到手写数字识别问题中,并取得该领域最高的识别率,至今未被超越。CNN是NN的一种变形,CNN与NN最大的不同在于CNN的卷积和子采样过程,而子采样可以被认为是一种特殊的卷积过程。在本章的后半部分,将以切割小图训练共享权值的

4、NN的方式阐释卷积神经网络中的卷积过程。本文按照BP的思想实现并训练了一个卷积神经网络模型。我使用经典的手写数字识别问题检测CNN训练推导过程的准确性。在实验中,我使用6万张图片训练CNN,用1万张数字图片做测试,训练后的CNN模型在测试集上的准确率高达98.6%。实验说明用切割小图训练NN的方法推导的CNN训练方法是正确的。3.1 神经网络神经网络(neural network,NN)是生物科学和信息科学交叉的产物。生物学家研究人脑神经的工作过程,发现神经元(神经细胞)和神经元之间通过突起(轴突和树突)的相连,神经细胞感受到刺激之后产生兴奋并通过细胞突起将兴奋传导给与之有连接的神经元。神经元

5、的连接大多是相邻层间的连接,神经细胞总体上呈现分层结构,感受器中的神经接收外界刺激,神经中枢的神经元决定人脑的意识。如图3.1为一个神经细胞的结构:图3.1神经元的结构Error! Reference source not found.Figure 3.1 structure of a neuron Error! Reference source not found.一个神经元和其它神经元的连接如图3.2所示:图3.2神经元之间的连接Error! Reference source not found.Figure 3.2 the connection between neurons Error

6、! Reference source not found.一个神经元通常和若干个神经元相连,连接有强有弱,不同的连接就像电子元件之间阻值不同的带阻导体。一个非输入神经元在兴奋传导过程中受到的刺激总和为与之相连的神经元传递来的兴奋之和。我们用Y表示一个神经元受到的兴奋之和,兴奋来自于n个与之相连的前层神经元,那么Y可以通过公式3-1来计算。在公式3-1中,x0=1,它并不是一个真实的兴奋输入,只是为了统一表示而虚拟出来的一个节点,w0反映神经元基础兴奋度。一个神经元与n个前层神经元相连,xi是n个前层神经元传来的兴奋值,w i 是其与前层n个神经元的连接紧密程度。(3-1)一个神经元受到总量为Y

7、的刺激之后会在细胞内部转化一下,得到一个兴奋输出y,该输出将传导给与之相连的后层神经元。我们假设y与Y满足公式3-2(对应整形函数,可以有多种定义)。Sigmoid函数是一个S形函数,图3.3为sigmoid函数的图像。Sigmoid函数在定义域单调递增,当Y取0时,y=0.5;当Y趋向正无穷时,y=1;当Y趋向负无穷时,y=0。(3-2)图3.3 sigmoid 函数Figure 3.3 sigmoid function3.1.1 单层感知机神经网络最简单的结构就是单输出的单层感知机,单层感知机只有输入层和输出层,分别代表了神经感受器和神经中枢。图3.4是一个只有2个输入单元和1个输出单元的

8、简单单层感知机。在图3.4中,w 1、w2代表神经网络的输入神经元受到的刺激,w1、w2代表输入神经元和输出神经元间连接的紧密程度,w3代表输出神经元的兴奋阈值。Y是输出神经元受到的刺激总和,y为输出神经元的输出。图3.4单层感知机Figure 3.4 a one-layer perceptron如果整形函数(如sigmoid)确定,网络拓扑和连接权重就足以表示一个网络。在网络拓扑确定的情况下,利用训练数据修改连接权重的过程就是BP算法。我们利用一个例子说明单层感知机的训练过程。有一个单层感知机的网络拓扑如图3.5所示,权重wi(i=1,2,3)被初始化为01之间的随机小数。一个训练的样本我们

9、用式子(x1, x2),T表示,x1,x2为输入神经元的兴奋值,T教师信号,即期望输出神经元产生的输出,T取值一般为0或者1。单层感知机的BP训练分为三个过程:前向过程、错误反向传导过程和连接权重修改过程。(1) 前向过程:利用当前的权重和输入兴奋计算Y和y的过程就是BP训练的前向过程,前向过程模拟的是脑神经的工作过程。Y和y的计算满足公式3-3。(3-3)(2)错误信号反向传播过程:图3.5单层感知机的错误信号Figure 3.5 Error of one-layer perceptron对于未经训练的网络,y往往和期望输出T不一样,y和T的差值构成整个神经网络的源错误信号,该信号要用来指导

10、网络权重的修正。我们按照图3.5定义输出神经元的输入错误信号Err(Y)和输出错误信号Err(y)。(3)连接权重的修改:权重的修改,有两个感性直观的方法:a某个输出神经元的错误越大,与之相关的连接(w)就需要越多的修改;例如:Err(Y)很大,说明w修改量delta(w)也应该很大。b在输入神经元中,谁的兴奋值越大,对错误产生的责任就越大,其与输出神经元的连接就需要越多的修改。例如:x1=0.1,x2=0.8。Err(Y)的出现,x2的责任更大,连接权重w2的修改量delta(w2)要比delta(w1)要更大。基于以上两点,我们把一条连接权重的修改量定为该连接的前层神经元的输出x乘以后层神

11、经元的Err(Y),用公式3-4表示: (3-4)再由公式3-5我们可以得到图3.5中的各权重修改量为:(3-5)算出delta(w)之后,我们通过公式3-6完成对网络的更新。 (3-6)我们可以从多元函数求极值角度解释上述过程。模型的训练的理念是经验风险最小化,也就是要使训练数据的错误|Err(y)|最小,但是由于|Err(y)|带有绝对值的目标不方便求导,我们把模型训练目标用函数lossFun表示。lossFun定义如公式3-7: (3-7)对于一个样本(x1,x2),T,特征为x1、x2;类别或输出目标为T。lossFun是一个以(x1,x2),T为常量,以w1,w2,w3为变量的多元函

12、数。模型的训练优化可看成一个多元函数求极值的问题。已知条件为: (3-8)在公式3-8中,x1,x2,T为常量,w1、w2,、w3为变量。lossFun对w1求偏导得到: (3-9)同理可得: (3-10)训练样本(x1,x2),T时,网络参数按照梯度下降的方向求解。偏导数算出的是lossFun上升最快的方向,W的修改量delta(W)是lossFun下降最快的方向,所以delta(W)方向与梯度方向相反。(3-11)3.1.2单输出多层感知机在单层感知机的基础上增加若干个(本文增加一个)隐层,得到多层感知机(Multi Perceptron Machine,MLP)。结构如图3.6所示: 图

13、3.6单输出多层感知机 Figure 3.6 a MLP with single output图3.6中各变量满足公式3-12: (3-12)假如现在有一个样本(x1,x2),T,用该样本训练网络时,网络优化的目标为lossFun最小。lossFun是一个关于变量w和v多元函数。网络的训练又变成多元函数求极值的问题。求v1的梯度:(3-13)同理可得vi的梯度: (3-14)求w11的梯度:(3-15)同理,可得wij的梯度 :(3-16)通过上述方法算得单输出多层感知机的各连接权重w和v的梯度,只要按照w和v的梯度下降方向更新网络就能完成网络训练。3.1.3多输出多层感知机在前面两节中的神经

14、网络输出节点都是一个,如果遇到多分类问题,我们便需要多输出的神经网络。图3.7为一个多输出多层感知机。图3.7多输出多层感知机 Figure 3.7 a MLP with multi output在图3.7的网络中,各变量满足公式3-17: (3-17)通过数学求导,得到lossFun对vjk的梯度:(3-18)求导得到lossFun对wij的梯度:(3-19)在求出权重梯度之后,只要按照梯度下降的方向更新连接权重就可以完成网络的训练。从公式3-21和3-22我们总结出:对于末层神经元,输出错误定义为:(3-20)对于非末层神经元,输出错误如Err(y)由与其相连的后层神经元的输入错误Err(

15、Z)加权求和得到,如公式3-21所示。 (3-21)一个神经元的输入错误Err(Y)与输出错误Err(y)满足公式3-22。 (3-22)一条连接权重的更新量为该条连接前层神经元的输出乘以后层神经元的输入错误信号,如公式3-23所示。 (3-23)3.2卷积神经网络受Hubel和Wiesel对猫视觉皮层电生理研究启发,有人提出卷积神经网络(CNN),Yann Lecun 最早将CNN用于手写数字识别并一直保持了其在该问题的霸主地位。近年来卷积神经网络在多个方向持续发力,在语音识别、人脸识别、通用物体识别、运动分析、自然语言处理甚至脑电波分析方面均有突破。卷积神经网络与普通神经网络的区别在于,卷

16、积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。在CNN的一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一

17、种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。3.2.1卷积神经网络的常用结构卷积神经网络通常采用若干个卷积和子采样层的叠加结构作为特征抽取器。卷积层与子采样层不断将特征图缩小,但是特征图的数量往往增多。特征抽取器后面接一个分类器,分类器通常由一个多层感知机构成。在特征抽取器的末尾,我们将所有的特征图展开并排列成为一个向量,称为特征向量,该特征向量作为后层分类器的输入。 图3.8卷积神经网络结构示例Figure 3.8 a sample structrue of CNN3.2.2卷积与子采样图3.9卷积过程Figure 3.9 procesure of convolut

18、ion 卷积过程有三个二维矩阵参与,它们分别是两个特征图和一个卷积核:原图inputX、输出图outputY卷积核kernelW。卷积过程可以理解为卷积核kernalW覆盖在原图inputX的一个局部的面上,kernalW对应位置的权重乘于inputX对应神经元的输出,对各项乘积求和并赋值到outputY矩阵的对应位置。卷积核在inputX图中从左向右,从上至下每次移动一个位置,完成整张inputX的卷积过程。卷积过程如图3.9所示。子采样有两种形式,一种是均值子采样(mean-pooling),一种是最大值子采样(max-pooling)。两种子采样看成特殊的卷积过程,如图3.10所示:(1

19、)均值子采样的卷积核中每个权重都是0.25,卷积核在原图inputX上的滑动的步长为2。均值子采样的效果相当于把原图模糊缩减至原来的1/4。(2)最大值子采样的卷积核中各权重值中只有一个为1,其余均为0,卷积核中为1的位置对应inputX被卷积核覆盖部分值最大的位置。卷积核在原图inputX上的滑动步长为2。最大值子采样的效果是把原图缩减至原来的1/4,并保留每个2*2区域的最强输入。图 3.10子采样过程的卷积式表示Figure 3.10 max-pooling and mean-pooling in form of convolution 3.2.3卷积与权值共享在卷积神经网络的卷积层,卷

20、积核本质是神经元之间相互连接的权重,而且该权重被属于同一特征图的神经元所共享。在实际的网络训练过程中,输入神经元组成的特征图被交叠切割成卷积核大小的小图。每个小图通过卷积核与后层特征图的一个神经元连接。一个特征图上的所有小图和后层特征图中某个神经元的连接使用的是相同的卷积核,也就是同特征图的神经元共享了连接权重。 图3.11 CNN中的卷积过程Figure 3.11 convolution in CNN图3.11展示了卷积神经网络中兴奋在卷积层由前向后传播的一次卷积过程。这个过程相当于把inputX切割成和kernalW一样大小的4各小图,4张小图对应4个4*1的神经网络,这四个小神经网络共享

21、权值KernalW,如图3.12所示。图3.12四个4*1的神经网络Figure 3.12 four NN of 4*1在人工神经网络中,一个非输入神经元表征了某种特征,一个非输入神经元又可以由与之相关的前层连接表示,通过权重的还原,我们可以看到每个神经元代表的特征,神经元特征是逐层具象化的Error! Reference source not found.。在卷积神经网络中,卷积核是神经元之间的连接权重,如果只用来训练局部,可以代表局部某种特征,但是它被一个特征图共享,用来训练整个特征图,代表了比较通用(适用于全图)的某种的特征。中我们往往在卷积神经网络中设置多个卷积层,在一个卷积层中设置多

22、个卷积核,以得到丰富的特征供尾部的分类器使用。3.2.4 CNN训练过程中的三次卷积过程在神经网络的训练中包含兴奋前向传递、错误信号反向传递和权重修改三个过程,在卷积神经网络的训练过程中存在三次卷积过程与之对应。这三次卷积分别是前向过程的图像卷积、错误反向传导过程中的错误传导卷积和权值更新卷积。前向图像卷积、权值更新卷积采用的是valid卷积模式,错误信号传导卷积采用的是full卷积模式。卷积过程可以通过切割小图(如图3.11与3.12)训练神经网络的方式(公式3.233.26)论证。卷积神经网络的一次迭代训练分为三个过程。第一个过程为由原始兴奋输入,经过前向卷积和子采样过程以及后层分类器的前

23、向过程得到分类器的输出。第二个过程为由分类器输出和教师信号得到末层网络的错误信号,并根据梯度下降法将错误信号依次往前传递到所有非输入层的神经元中。第三个过程为根据神经元上的错误信号以及神经元的输出更新网络的权重,包括后层分类器的权重更新和卷积核更新。在特征抽取器通过三次卷积完成以上三个过程中。3.2.4.1前向过程的卷积前向过程的卷积为典型valid的卷积过程,即卷积核kernalW覆盖在输入图inputX上,对应位置求积再求和得到一个值并赋给输出图OutputY对应的位置。每次卷积核在inputX上移动一个位置,从上到下从左到右交叠覆盖一遍之后得到输出矩阵outputY(如图3.11与图3.

24、13所示)。如果卷积核的输入图inputX为Mx*Nx大小,卷积核为Mw*Nw大小,那么输出图Y为(Mx-Mw+1)*(Nx-Nw+1)大小。图3.13前向卷积过程Figure 3.13 forward convolutional procedure3.2.4.2错误反向传导过程的卷积在错误信号反向传播过程中,先按照神经网络的错误反传方式得到尾部分类器中各神经元的错误信号,然后错误信号由分类器向前面的特征抽取器传播。错误信号从子采样层的特征图(subFeatureMap)往前面卷积层的特征图(featureMap)传播要通过一次full卷积过程来完成(如图3.14)。这里的卷积和上一节卷积的略

25、有区别。如果卷积核kernalW的长度为Mw*Mw的方阵,那么subFeatureMap的错误信号矩阵Q_err需要上下左右各拓展Mw-1行或列,与此同时卷积核自身旋转180度。subFeatureMap的错误信号矩阵P_err等于featureMap的误差矩阵Q_err卷积旋转180度的卷积核W_rot180。图3.14中的卷积过程可以通过公式3-24和四个4*1的NN误差反向传播的过程(图3.12)论证。对于图3.14中错误信号矩阵Q_err中的A,它的产生是P中左上2*2小方块(对应图3.12中的)导致的,该2*2的小方块的对A的责任正好可以用卷积核W表示,错误信号A通过卷积核将错误信号

26、加权传递到与错误信号量为A的神经元所相连的神经元a、b、d、e中(如图3.11与3.12),所以在图3.14中的P_err左上角的2*2位置错误值包含A、2A、3A、4A。同理,我们可以论证错误信号B、C、D的反向传播过程。综上所述,错误信号反向传播过程可以用图3.14中的卷积过程表示。图3.14错误传播过程中的卷积Figure 3.14 convolution in Error propagate3.2.4.3权值更新过程中的卷积卷积神经网络中卷积层的权重更新过程本质是卷积核的更新过程。由神经网络的权重修改策略(公式3-26)我们知道一条连接权重的更新量为该条连接的前层神经元的兴奋输出乘以后

27、层神经元的输入错误信号,卷积核的更新也是按照这个规律来进行。图3.15四个4*1的神经网络的权重更新Figure 3.15 weight update of 4 NN of 4*1在前向卷积过程(图3.13)中,卷积核的每个元素(链接权重)被使用过四次,所以卷积核每个元素的产生四个更新量。把前向卷积过程当做切割小图进行多个神经网络训练过程, 我们得到四个4*1的神经网络的前层兴奋输入和后层输入错误信号,如图3.16所示。图3.16卷积核的权重修改量Figure 3.16 W_delta of Kernal W根据神经网络的权重修改策略(公式3-26),我们可以算出如图3.16所示卷积核的更新量W_delta。权重更新量W_delta可由P_out和Q_err卷积得到,如图3.17所示。图3.17权重更新过程中的卷积Figure 3.17 convolution in weight update3.2.5卷积的作用通过实验我们发现,训练之后的卷积核有些能突显图像的边缘特征,有些能对原图产生了震颤效果。通过丰富的卷积核,卷积可以提炼原题的某些特征,同时模型将对目标在产生偏移、缩放或者轻微形变的时候变得鲁棒。图3.18两个固定卷积核Figure 3.18

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论