神经网络PPT

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

BP神经网络的讲解BP神经网络1986年Rumelhart等提出了多层前馈网络误差反向传播(ErrorBackPropa—gation,简称BP)算法,通过数学上的详细分析和完整的推导,系统地解决了多层神经元网络中隐层单元连续权的学习问题,从而用BP算法克服了简单感知器不能解决的XOR和其他一些问题。因为多层前馈网络的训练经常采用误差反向传播算法,所以通常人们都将多层前馈网络直接称为BP网络。由于BP算法得到广泛的使用,BP模型已成为神经网络的重要模式之一。BP网络学习方法的基本思想是将训练过程分为两个阶段,第一阶段正向传播,输入信息从输入层经隐含层单元处理后传向输出层,每一层神经元的状态只影响下一层神经元状态。倘若在输出层得不到希望的输出,则转入第二阶段反向传播,将误差信号沿原来的神经元连接通路返回。通过修改各层神经元的权值,逐次地向输入层传播进行计算。这样,反复地运用这两个过程,使得误差信号最小,最后使得信号误差达到允许的范围之内,网络就结束学习训练过程。BP网络主要用于:1)函数逼近:用输入矢量和相应的输出矢量训练一个网络逼近一个函数;2)模式识别:用一个特定的输出矢量将它与输入矢量联系起来;3)分类:把输人矢量以所定义的合适方式进行分类;4)数据压缩:减少输出矢量维数以便于传输或存贮.1)多层网络结构多层BP网络不仅有输入节点、输出节点,而且有一层或多层隐节点,如下图:1、BP网络结构2)传递函数一般为(0,1)S型函数:exxf11)(3)误差函数对第P个样本误差计算公式为:22ipotEpipi式中tpi,opi分别为期望和网络的计算输出2、BP网络学习公式网络学习公式推导的指导思想是,对网络权值(ωij,Tli)的修正与阈值(θ)的修正,使误差函数(E)沿负梯度方向下降。BP网络三层节点表示为,输入节点:xj,隐节点:yi,输出节点:ol输入节点与隐节点间的网络权值为ωij,隐节点与输出节点间的网络权值为Tli。当输出节点的期望输出为tl时,BP模型的计算公式如下:(1)输出节点的输出计算公式1)隐节点的输出:netxwyijijijiff其中jijijixwnet2)输出节点的计算输出:netyTolilililffilililyTnet其中3)输出节点的误差公式:llliljijijlililililllExwfTftyTftot222212121(2)输出层(隐节点到输出节点间)的修正公式1)误差控制所有样本误差:其中一个样本误差,1pkkeEnlklklkote1其中p为样本数,n为输出节点数2)误差公式:oootlllll13)权修正值:yTTillilikk1其中k为迭代次数4)阀值修正:lllnkk1(3)隐节点层(输入节点到隐节点间)的修正公式1)误差控制Tyyliliiii12)权值修正jiijijxkk13)阀值修正iiikk13、MATLAB神经网络工具箱中的BP网络(1)BP网络中的神经元模型下图给出了一个基本的神经元模型,它具有R个输入,每个输入都通过一个适当的权值与神经元相连,神经元的输出可表示成bpfa,BP网络中基本神经元的激活函数必须处处可微,所以,经常使用的是S型的对数或正切激活函数或线性函数。(2)BP网络结构典型的BP网络结构如下图。BP网络通常有一个或多个隐层,隐层中的神经元均采用S型变换函数,输出层的神经元采用纯线性变换函数。(2)MATLAB中有关BP网络的重要函数1)神经元上的传递函数①purelin利用Widrow—Hoff或BP算法训练的神经元的传递函数经常采用线性函数。神经元可采用的最简单的函数,即线性函数,它只是简单地将神经元输入经阈值调整后传递到输出。purelin(n)函数可得到输入矢量为n时网络层输出矩阵。purelin(z,b)函数可用于成批处理矢量,并且提供阈值的情况。这时阈值矢量b与加权输入距阵z是区分的。阈值矢量b加到z的每个矢量中去,以形成网络的输人矩阵,调用后得到的结果为矩阵。purelin(p)函数中,P指出传递函数特性的名称,调用后可得到所询问的特性,即:purelin(’delta‘)指出delta函数名称。purelin(‘init’)指出标准初始化函数名称。purelin(‘name‘)指出传递函数的全称。purelin(‘output‘)指出包含传递函数最大和最小输出值的二元矢量。②Tansig双曲正切S型(sigmoid)传递函数。双曲正切sigmoid函数用于将神经元的输入范围为(一∞,+∞)映射到(一1,+1)。正切sigmoid函数是可微函数,因此很适合于利用BP算法训练神经网络。函数表达式为:tansig(n)=tanh(n)tansig(n)函数对网络输入矢量n的所有元素求正切sigmoid函数tansig(z,b)函数用于成批处理矢量,并且提供阈值的情况,这时阈值b与加权输入矩阵z是区分的,阈值矢量b加到z的每个矢量中去,以形成网络的输入矩阵,然后利用正切sigmoid函数将网络输入转换成输出tansig(p)函数中,P指出传递函数特性的名称,调用后可得到所询问的特性,即tansig(‘delta‘)指出delta函数名称tansig(‘init‘)指出标准初始化函数名称tansig(’name‘)指出传递函数的全称tansig(‘output‘)指出包含传递函数最大和最小输出值的二元矢量③logsig对数S型(sigmoid)传递函数。对数sigmoid函数用于将神经元的输入范围(一∞,+∞)映射到(0,+1)的区间上,对数sigmoid函数是可微函数,因此很适合于利用BP算法训练神经网络。函数表达式为:logsig(n)函数对网络输入阵n的所有元素求对数logmoid函数.logsig(z,b)函数用于成批处理矢量,并且提供阈值的情况,这时阈值b与加权输入矩阵Z是区分的,阈值矢量b加到Z的每个矢量中去,以形成网络的输入矩阵,然后利用对数sigmoid函数将网络输入转换成输出.logsig(p)函数中,P指出传递函数特性的名称,调用后可得到所询问的特性,即logsig(’delta‘)指出delta函数名称.logsig(‘init‘)指出标准初始化函数名称.logsig(‘name‘)指出传递函数的名称.logsig(‘output‘)指出包含传递函数最大和最小输出值的二元矢量.nensig11log2)δ(Delta)函数①deltalin纯线性(purelin)神经元的δ函数。通常的反向传播算法(BP)是利用网络误差平方和对网络各层输入的导数来调整其权值和阈值,从而降低误差平方和。从网络误差矢量中可推导出输出层的误差导数或δ(delta)矢量,隐层的δ矢量可由下一层的δ矢量导出,这种δ矢量的反向传播正是BP算法的由来.deltalin(a)可计算出这一层输出对本层输出的导数,参数矩阵a为纯线性层的输出矢量.deltalin(a,e)可计算出线性输出层的误差导数,参数矩阵a和e分别为该层的输出矢量和误差.deltalin(a,d2,w2)可计算出线性隐层的误差导数,参数矩阵a为纯线性层的输出矢量,d2为下一层的δ矢量,w2为与下一层的连接权值.②deltalog对数S型(logsig)神经元的δ函数。deltalog(a)可计算出这一层输出对本层输出的导数,参数矩阵a为对数S型层的输出矢量.deltalog(a,e)可计算出logsig输出层的误差导数,参数矩阵a和e分别为该层的输出矢量和误差.dehalog(a,d2,w2)可计算出logsig隐层的误差导数,参数矩阵a为对数s型层的输出矢量,d2为下一层的δ矢量,w2为与下一层的连接权值.③deltatan正切S型(tansig)神经元的δ函数.deltatan(a)可计算出这一层输出对本层输出的导数,参数矩阵a为正切S型层的输出矢量.dehatan(a,e)可计算出tansig输出层的误差导数,参数矩阵a和e分别为该层的输出矢量和误差.deltatan(a,d2,w2)可计算出tansig隐层的误差导数,参数矩阵a为正切S型层的输出矢量,d2为下一层的δ矢量,w2为与下一层的连接权值.3)基本函数①initff前向网络初始化.语法格式:[w,b]=initff(p,S,f)[w1,b1,w2,b2]=initff(p,s1,f1,S2,f2)[w1,b1,w2,b2,w3,b3]=initff(p,S1,f1,S2,f2,S3,f3)[w,b]=initff(p,S,t)[w1,b1,w2,b2]=initff(p,S1,f1,S2,t2)[w1,b1,w2,b2,w3,b33=initff(p,S1,f1,S2,f2,S3,t3)initff(p,S,f)可得到S个神经元的单层神经网络的权值和阈值,其中P为输入矢量,f为神经网络层间神经元的传递函数。值得注意:P中的每一行中必须包含网络期望输入的最大值和最小值,这样才能合理地初始化权值和阈值.initff可对至多三层神经网络进行初始化,可得到每层的权值及阈值.此外,initff也可用目标矢量t代替网络输出层的神经元数,这时输出层的神经元数目就为t的行数.②simuff前向网络仿真.语法格式:simuff(p,w1,b1,f1)simuff(p,w1,b1,f1,w2,b2,f2)simuff(p,w1,b1,f1,w2,b2,f2,w3,b3,f3)前向网络由一系列网络层组成,每一层都从前一层得到输入数据,simuff函数可仿真至多三层的前向网络.③trainbp利用BP算法训练前向网络.语法格式:[w,b,te,tr]=trainbp(w,b,’f’,P,t,tp)[w1,b1,w2,b2,te,tr]=trainbp(w1,b1,’f1‘,w2,b2,’f2‘,P,t,tp)[w1,b1,w2,b2,w3,b3,te,tr]=trainbp(w1,b1,‘f1’,w2,b2,‘f2’,w3,b3,‘f3’,P,t,tp)利用BP算法训练前向网络,使网络完成函数逼近、矢量分类及模式识别。[w,b,te,tr]=trainbp(w,b,’f‘,P,t,tp)利用单层神经元连接的权值矩阵w,阈值矢量b及传递函数f成批训练网络,使当输入矢量为P时,网络的输出为目标矢量矩阵t.tp为可选训练参数,其作用是设定如何进行训练,具体如下:tp(1)显示间隔次数,其缺省值为25;tp(2)最大循环次数,其缺省值为100;tp(3)目标误差,其缺省值为0.02;tp(4)学习速率,其缺省值为0.01.值得注意,当指定了tp参数时,任何缺省或NaN值都会自动取其缺省值.一旦训练达到了最大的训练次数,或者网络误差平方和降到期望误差之下时,都会使网络停止学习。学习速率会影响权值与阈值更新的比例,较小的学习速率会导致学习时间增长,但有时可避免训练过程发散.调用trainbp函数可得到新的权值矩阵w、阈值矢量b、网络训练的实际训练次数te及网络训练误差平方和的行矢量tr.对于多层网络,在调用trainbp函数时,可得到各层的权值矩阵及各层的阈值矢量.4)学习规则函数①learnbp反向传播学习规则函数语法格式:learnbp(p,d,lr)[dw,db]=learnbp(p,d,lr)反向传播(BP)学习规则为调整网络的权值和阈值使网络误差的平方和最小,这是通过在最速下降方向上不断地调整网络的权值和阈值来达到的.首先计算出网络输出层的误差矢量的导数,然后通过网络反向传播,直到计算出每个隐层的误差导数(称为δ矢量),这可利用函数deltali

1 / 32
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功