标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用.ppt_第1页
标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用.ppt_第2页
标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用.ppt_第3页
标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用.ppt_第4页
标准BP算法及改进的BP算法标准BP算法及改进的BP算法应用.ppt_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

bpbp网络网络 主要内容主要内容 4.1 bp4.1 bp网络简介网络简介 4.2 bp4.2 bp网络模型网络模型 4.3 bp4.3 bp学习算法学习算法 4.4 bp4.4 bp网络的网络的matlabmatlab仿真程序设计仿真程序设计 4.1 bp4.1 bp网络简介网络简介 1 1、bpbp算法的出现算法的出现 19741974年,年,werboswerbos在其博士论文中提出了第一个适合多层在其博士论文中提出了第一个适合多层 网络的学习算法,但是没有受到重视。网络的学习算法,但是没有受到重视。 2020世纪世纪8080年代中期,年代中期, 美国加利福尼亚的美国加利福尼亚的pdppdp小组的小组的 rumelhartrumelhart、hintonhinton和和williams1986williams1986年独立地给出了年独立地给出了bpbp算算 法清楚而简单的描述,并将其用于神经网络的研究,才法清楚而简单的描述,并将其用于神经网络的研究,才 使之成为迄今为止最著名的多层网络学习算法使之成为迄今为止最著名的多层网络学习算法-bp-bp算法算法 ,由此算法训练的神经网络,称之为,由此算法训练的神经网络,称之为bpbp神经网络。神经网络。 2 2、弱点、弱点:训练速度非常慢、局部极小点的逃离问题:训练速度非常慢、局部极小点的逃离问题 、 算法不一定收敛。算法不一定收敛。 3 3、优点:、优点:广泛的适应性和有效性。广泛的适应性和有效性。 4 4、应用、应用 bpbp网络主要用于下述方面网络主要用于下述方面 函数逼近:用输入矢量和相应的输出矢量训练一个网函数逼近:用输入矢量和相应的输出矢量训练一个网 络逼近一个函数络逼近一个函数 模式识别和分类:用一个特定的输出矢量将它与输入模式识别和分类:用一个特定的输出矢量将它与输入 矢量联系起来;矢量联系起来; 数据压缩:减少输出矢量维数以便于传输或存储数据压缩:减少输出矢量维数以便于传输或存储 4.2 4.2 网络模型网络模型 x1o1 输出层隐藏层输入层 x2 o2 omxn 4.2 4.2 网络模型网络模型 感知器和自适应线性元件的主要差别在激活函数上感知器和自适应线性元件的主要差别在激活函数上 :前者是二值型的,后者是线性的:前者是二值型的,后者是线性的 bpbp网络具有一层或多层隐含层,除了在多层网络上网络具有一层或多层隐含层,除了在多层网络上 与前面已介绍过的模型有不同外,其主要差别也表与前面已介绍过的模型有不同外,其主要差别也表 现在激活函数上。现在激活函数上。 bpbp网络的激活函数必须是处处可微的,因此它不能网络的激活函数必须是处处可微的,因此它不能 采用二值型的阀值函数采用二值型的阀值函数00,11或符号函数或符号函数 1 1,11 bpbp网络经常使用的激活函数是网络经常使用的激活函数是s s型函数型函数, ,包括对数(包括对数( logsiglogsig)或正切激活函数()或正切激活函数(tansigtansig);或者线性函);或者线性函 数数(purelin)(purelin) s s型函数的表达式型函数的表达式 (1)logsig(net (1)logsig(net) )=a+b/(1+exp(-d*net)=a+b/(1+exp(-d*net) a a,b b,d d为常数。它的饱和值为为常数。它的饱和值为a a和和a+ba+b。 最简单形式为:最简单形式为: logsig logsig(netnet)= 1/(1+exp(-net)= 1/(1+exp(-net) 函数的饱和值为函数的饱和值为0 0和和1 1。 (2)tansig(net) (2)tansig(net) = (1-exp(-net)/(1+exp(-net) = (1-exp(-net)/(1+exp(-net) s s型函数的图像型函数的图像 a+b net a c=a+b/2 0 s s型函数的优点型函数的优点 s s型函数具有非线性放大系数功能,可以把型函数具有非线性放大系数功能,可以把 输入从负无穷大到正无穷大的信号,变换输入从负无穷大到正无穷大的信号,变换 成成-1-1到到l l之间输出之间输出 对较大的输入信号,放大系数较小;而对对较大的输入信号,放大系数较小;而对 较小的输入信号,放大系数则较大较小的输入信号,放大系数则较大 采用采用s s型激活函数可以处理和逼近非线性输型激活函数可以处理和逼近非线性输 入入/ /输出关系输出关系 4.3 bp4.3 bp学习算法学习算法 4.3.14.3.1 简单介绍简单介绍 bpbp算法属于算法属于算法,是一种监督式的学习算法算法,是一种监督式的学习算法 主要思想主要思想 n n 对于对于q q个输入学习样本:个输入学习样本:p p1,1, p p 2,2, , p pq q ,已知与其对应的,已知与其对应的 输出样本为:输出样本为:t t1,1, t t 2,2, , t tq q n n 使网络输出层的误差平方和达到最小使网络输出层的误差平方和达到最小 n n 用网络的实际输出用网络的实际输出a a1,1, a a 2,2, , a a q, q, 与目标矢量与目标矢量t t1,1, t t 2,2, , t tq q 之之 间的误差修改其权值,使间的误差修改其权值,使a a m m 与期望的与期望的t tm,m, ( ( m ml,l,q,q) )尽可尽可 能接近能接近 4.3 bp4.3 bp学习算法学习算法 bpbp算法是由两部分组成算法是由两部分组成, ,信息的正向传递与误差的信息的正向传递与误差的 反向传播反向传播 n n 正向传播过程中,输入信息从输入层经隐含层逐层计算正向传播过程中,输入信息从输入层经隐含层逐层计算 传向输出层,每一层神经元的状态只影响下一层神经元传向输出层,每一层神经元的状态只影响下一层神经元 的状态的状态 n n 如果在输出层未得到期望的输出,则计算输出层的误差如果在输出层未得到期望的输出,则计算输出层的误差 变化值,然后转向反向传播,通过网络将误差信号沿原变化值,然后转向反向传播,通过网络将误差信号沿原 来的连接通路反传回来修改各层神经元的权值直至达到来的连接通路反传回来修改各层神经元的权值直至达到 期望目标期望目标 * * 1212 4.3 bp4.3 bp学习算法学习算法 假设输入为假设输入为p p,输入神经元有,输入神经元有r r个,隐含层内有个,隐含层内有s1s1个神经个神经 元,激活函数为元,激活函数为f1f1,输出层内有,输出层内有s2s2个神经元,对应的激个神经元,对应的激 活函数为活函数为f2f2,输出为,输出为a a,目标矢量为,目标矢量为t t * * 1313 4.3 bp4.3 bp学习算法学习算法 信息的正向传递信息的正向传递 n n 隐含层中第隐含层中第i i个神经元的输出个神经元的输出 n n 输出层第输出层第k k个神经元的输出个神经元的输出 n n 定义误差函数定义误差函数 * * 1414 利用梯度下降法求权值变化及误差的反向传播利用梯度下降法求权值变化及误差的反向传播 n n 输出层的权值变化输出层的权值变化 其中其中 同理可得同理可得 * * 1515 4.3 bp4.3 bp学习算法学习算法 利用梯度下降法求权值变化及误差的反向传播利用梯度下降法求权值变化及误差的反向传播 n n 隐含层权值变化隐含层权值变化 其中其中 同理可得同理可得 * * 1616 4.3 bp4.3 bp学习算法学习算法 对于对于f1f1为对数为对数s s型激活函数,型激活函数, 对于对于f2f2为线性激活函数为线性激活函数 * * 1717 4.3 bp4.3 bp学习算法学习算法 误差反向传播过程实际上是通过计算输出层的误差误差反向传播过程实际上是通过计算输出层的误差e e k k ,然后,然后 将其与输出层激活函数的一阶导数将其与输出层激活函数的一阶导数f2f2 相乘来求得相乘来求得ki ki 由于隐含层中没有直接给出目标矢量,所以利用输出层的由于隐含层中没有直接给出目标矢量,所以利用输出层的 ki ki反向传递来求出隐含层权值的变化量 反向传递来求出隐含层权值的变化量w2w2ki ki。然后计算 。然后计算 同样通过将同样通过将e e i i 与该层激活函数的一阶导数与该层激活函数的一阶导数f1f1 相乘,而求得相乘,而求得 ij ij,以此求出前层权值的变化量 ,以此求出前层权值的变化量w1w1ij ij 如果前面还有隐含层,沿用上述同样方法依此类推,一直将如果前面还有隐含层,沿用上述同样方法依此类推,一直将 输出误差输出误差e e k k 逐层的反推算到第一层为止逐层的反推算到第一层为止 * * 1818 误差反向传播图形解释误差反向传播图形解释 * * 1919 4.3.24.3.2网络训练网络训练 训练训练bpbp网络,需要计算网络加权输入矢量以及网络网络,需要计算网络加权输入矢量以及网络 输出和误差矢量,然后求误差平方和输出和误差矢量,然后求误差平方和 当所训练矢量的误差平方和小于误差目标,训练停当所训练矢量的误差平方和小于误差目标,训练停 止;否则在输出层计算误差变化,且采用反向传播止;否则在输出层计算误差变化,且采用反向传播 学习规则来调整权值,然后重复此过程学习规则来调整权值,然后重复此过程 网络完成训练后,对网络输入一个不是训练集合中网络完成训练后,对网络输入一个不是训练集合中 的矢量,网络将以泛化方式给出输出结果的矢量,网络将以泛化方式给出输出结果 4.3 bp4.3 bp学习算法学习算法 * * 2020 为了能够较好地掌握为了能够较好地掌握bpbp网络的训练过程,我们用两层网络的训练过程,我们用两层 网络为例来叙述网络为例来叙述bpbp网络的训练步骤网络的训练步骤 初始化:用小的随机数初始化每一层的权值初始化:用小的随机数初始化每一层的权值w w和偏差和偏差b b ,保证网络不被大的加权输入饱和,保证网络不被大的加权输入饱和 n n 期望误差最小值期望误差最小值error_goalerror_goal n n 最大循环次数最大循环次数max_epochmax_epoch n n 修正权值的学习速率修正权值的学习速率1r1r,一般情况下,一般情况下k k0.0l,0.70.0l,0.7 * * 2121 变量表达:计算网络各层输出矢量变量表达:计算网络各层输出矢量a1a1和和a2a2以及网以及网 络误差络误差e e n n a1a1tansig(w1*ptansig(w1*p,b1)b1); n n a2a2purelin(w2*a1purelin(w2*a1,b2)b2); n n e et-at-a; 权值修正:计算各层反传的误差变化权值修正:计算各层反传的误差变化d2d2和和d1d1并计并计 算各层权值的修正值以及新权值:算各层权值的修正值以及新权值: n n d2d2deltalin(a2deltalin(a2,e)e); n n d1d1deltatan(a1deltatan(a1,d2d2,w2)w2); n n dwldwl,dbldbllearnbp(plearnbp(p,d1d1,lr)lr); n n dw2dw2,db2db21earnbp(a11earnbp(a1,d2d2,1r)1r); n n w1w1w1w1十十dw1dw1;b1b1b1b1十十dbldbl; n n w2w2w2w2十十dw2dw2;b2b2b2b2十十db2db2 * * 2222 4.3 bp4.3 bp学习算法学习算法 4.3.3 4.3.3 网络设计网络设计 网络的层数网络的层数 隐含层神经元数隐含层神经元数 初始权值的选取初始权值的选取 学习速率学习速率 期望误差的选取期望误差的选取 * * 2323 网络的层数网络的层数 理论上已经证明:具有偏差和至少一个理论上已经证明:具有偏差和至少一个s s型隐含层型隐含层 加上一个线性输出层的网络,能够逼近任何有理函加上一个线性输出层的网络,能够逼近任何有理函 数数 n n 定理:定理: 增加层数主要可以进一步的降低误差,提高精度,增加层数主要可以进一步的降低误差,提高精度, 但同时也使网络复杂化,从而增加了网络权值的训但同时也使网络复杂化,从而增加了网络权值的训 练时间。练时间。 一般情况下应优先考虑增加隐含层中神经元数一般情况下应优先考虑增加隐含层中神经元数 仅用具有非线性激活函数的单层网络来解决问题没仅用具有非线性激活函数的单层网络来解决问题没 有必要或效果不好有必要或效果不好 n n 线性问题线性问题 n n 非线性问题非线性问题 * * 2424 隐含层神经元数隐含层神经元数 网络训练精度的提高,可以通过采用一个隐含网络训练精度的提高,可以通过采用一个隐含 层,而增加其神经元数的方法来获得。这在结层,而增加其神经元数的方法来获得。这在结 构实现上,要比增加更多的隐含层简单得多构实现上,要比增加更多的隐含层简单得多 在具体设计时,比较实际的做法是通过对不同在具体设计时,比较实际的做法是通过对不同 神经元数进行训练对比,然后适当地加上一点神经元数进行训练对比,然后适当地加上一点 余量余量 * * 2525 初始权值的选取初始权值的选取 一般取初始权值在一般取初始权值在(-1(-1,1)1)之间的随机数之间的随机数 威得罗等人在分析了两层网络是如何对一个函数威得罗等人在分析了两层网络是如何对一个函数 进行训练后,提出一种选定初始权值的策略进行训练后,提出一种选定初始权值的策略 n n 选择权值的量级为选择权值的量级为 在在matlabmatlab工具箱中可采用函数工具箱中可采用函数nwlog.mnwlog.m或或nwtan.mnwtan.m 来初始化隐含层权值来初始化隐含层权值w1w1和和b1b1。 其方法仅使用在第一隐含层的初始值的选取上,其方法仅使用在第一隐含层的初始值的选取上, 后面层的初始值仍然采用随机取数后面层的初始值仍然采用随机取数 * * 2626 学习速率学习速率 学习速率决定每一次循环训练中所产生的权值学习速率决定每一次循环训练中所产生的权值 变化量变化量 大的学习速率可能导致系统的不稳定大的学习速率可能导致系统的不稳定 小的学习速率导致较长的训练时间,可能收敛小的学习速率导致较长的训练时间,可能收敛 很慢,不过能保证网络的误差值不跳出误差表很慢,不过能保证网络的误差值不跳出误差表 面的低谷而最终趋于最小误差值面的低谷而最终趋于最小误差值 所以在一般情况下,倾向于选取较小的学习速所以在一般情况下,倾向于选取较小的学习速 率以保证系统的稳定性。学习速率的选取范围率以保证系统的稳定性。学习速率的选取范围 在在0.01-0.80.01-0.8之间之间 * * 2727 期望误差值选取期望误差值选取 在设计网络的训练过程中,期望误差值也应当在设计网络的训练过程中,期望误差值也应当 通过对比训练后确定一个合适的值通过对比训练后确定一个合适的值 这个所谓的这个所谓的“ “合适合适” ”,是相对于所需要的隐含层,是相对于所需要的隐含层 的节点数来确定,因为较小的期望误差值是要的节点数来确定,因为较小的期望误差值是要 靠增加隐含层的节点,以及训练时间来获得靠增加隐含层的节点,以及训练时间来获得 一般情况下,作为对比,可以同时对两个不同一般情况下,作为对比,可以同时对两个不同 期望误差值的网络进行训练,最后通过综合因期望误差值的网络进行训练,最后通过综合因 素的考虑来确定采用其中一个网络素的考虑来确定采用其中一个网络 4.4 bp4.4 bp网络的网络的matlabmatlab仿真程序设计仿真程序设计 4.4.1matlab4.4.1matlab中中bpbp网络的重要函数和基本功网络的重要函数和基本功 能能 1 1、newff()newff() 功能功能 创建一个前向创建一个前向bpbp网络网络 格式格式 net=net= newff(pr,s1 s2 sn1,tf1 newff(pr,s1 s2 sn1,tf1 tf2 tfn1,btf,blf,pf) tf2 tfn1,btf,blf,pf) 说明说明 netnet为创建的新为创建的新bpbp网络网络 s1 s2 sn1 s1 s2 sn1为隐含层和输出层的神为隐含层和输出层的神 经元个数经元个数 tf1 tf2 tfn1 tf1 tf2 tfn1表示网络隐含层和输出层表示网络隐含层和输出层 的传输函数,默认为的传输函数,默认为 tansigtansig ; btf btf表示网络的训练函数默认表示网络的训练函数默认 traindmtraindm (动量(动量bpbp算法进行修正);算法进行修正); blf blf表示网络的学习函数默认表示网络的学习函数默认 learndmlearndm ; pf pf表示网络的性能函数,默认是表示网络的性能函数,默认是 msemse 2 2、tansig()tansig() 功能功能 正切正切sigmoidsigmoid激活函数激活函数 格式格式 a=tansig(n)a=tansig(n) 说明说明 正切正切sigmoidsigmoid函数把神经元的输入函数把神经元的输入 范围从范围从r r映射到(映射到(-1-1,1 1) 3 3、logsiglogsig()() 功能功能 对数对数sigmoidsigmoid激活函数激活函数 格式格式 a=logsig(n)a=logsig(n) 说明说明 对数对数sigmoidsigmoid函数把神经元的输入函数把神经元的输入 范围从范围从r r映射到(映射到(-1-1,1 1) 4.4.24.4.2应用举例应用举例 1 1、用、用bpbp神经网络实现两类模式分类神经网络实现两类模式分类 p=1 -1 -2 -4;2 1 1 0;p=1 -1 -2 -4;2 1 1 0; t=0 1 1 0;t=0 1 1 0; %创建创建bpbp网络和定义训练函数及参数网络和定义训练函数及参数 nodenum=8;%nodenum=8;%隐含层节点数隐含层节点数 typenum=1;%typenum=1;%输出维数输出维数 epochs=1000;%epochs=1000;%训练次数训练次数 tf1=logsig;tf1=logsig; tf2=logsig;tf2=logsig; net=newff(minmax(p),nodenum,typenumnet=newff(minmax(p),nodenum,typenum ,tf1,tf2,trainlm);,tf1,tf2,trainlm); net.trainparam.epochs=epochs;net.trainparam.epochs=epochs; net.trainparam.goal=1e-5;net.trainparam.goal=1e-5; net=train(net,p,t);net=train(net,p,t); p_test=1 -1 -2 -4;2 0 1 0;p_test=1 -1 -2 -4;2 0 1 0; t_test=0 0 1 0;t_test=0 0 1 0; x=sim(net,p_test);%x=sim(net,p_test);%测试,输出为预测值测试,输出为预测值 x=x0.5x=x0.5 输出结果;输出结果; x=0 0 1 0x=0 0 1 0 4.4.24.4.2应用举例应用举例 2 2、求解函数逼近问题、求解函数逼近问题 例例4-24-2下面是单输入矢量和相对应的目标矢下面是单输入矢量和相对应的目标矢 量,试设计神经网络来实现这对数组的量,试设计神经网络来实现这对数组的 函数关系函数关系 p = -1:0.1:1 p = -1:0.1:1 t = -0.96 -0.577 -0.0729 0.377 0.641 0.66 t = -0.96 -0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 0.1647 0.0988 0.3072 0.396 0.3449 0.1816 0.1647 0.0988 0.3072 0.396 0.3449 0.1816 0.0312 -0.2183 -0.3201 ;0.0312 -0.2183 -0.3201 ; %输入向量输入向量p p和目标向量和目标向量t t p = -1:0.1:1p = -1:0.1:1 t = -0.96 -0.577 -0.0729 0.377 0.641 0.66 t = -0.96 -0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 -0.461 0.1336 -0.201 -0.434 -0.5 -0.393 - 0.1647 0.0988 0.3072 0.396 0.3449 0.1816 0.1647 0.0988 0.3072 0.396 0.3449 0.1816 -0.0312 -0.2183 -0.3201 ;-0.0312 -0.2183 -0.3201 ; r,q = size(p); r,q = size(p); s2,q = size(t);s2,q = size(t); s1 = 5;s1 = 5; w1,b1 = rands(s1,r);w1,b1 = rands(s1,r); w2,b2 = rands(s2,s1);w2,b2 = rands(s2,s1); net = newff( minmax(p), 5,1, net = newff( minmax(p), 5,1, tansig,purelin,traingd );tansig,purelin,traingd ); net.trainparam.epochs = 7000;net.trainparam.epochs = 7000; net.performfcn = sse; net.trainparam.goal = 0.02;net.trainparam.goal = 0.02; net,tr = train(net,p,t);net,tr = train(net,p,t); y = sim(net,p);y = sim(net,p); plot(p,t,p,y,o) plot(p,t,p,y,o) 训练1000次的结果 训练次3000次的结果 训练7366次的结果 训练结束后的网络误差记录 * * 4141 限制与不足限制与不足 需要较长的训练时间需要较长的训练时间 完全不能训练完全不能训练 n n 选取较小的初始权值选取较小的初始权值 n n 采用较小的学习速率,但同时又增加了训练时间采用较小的学习速率,但同时又增加了训练时间 局部极小值局部极小值 n n bpbp算法可以使网络权值收敛到一个解,但它并不能保证所求算法可以使网络权值收敛到一个解,但它并不能保证所求 为误差超平面的全局最小解,很可能是一个局部极小解为误差超平面的全局最小解,很可能是一个局部极小解 标准的标准的bpbp 算法虽然原理简单,实现方便,算法虽然原理简单,实现方便, 但由于训练过程中为一较小的常数,因而但由于训练过程中为一较小的常数,因而 存在收敛速度慢和局部极小的问题。存在收敛速度慢和局部极小的问题。 对于复杂问题,训练过程需迭代几千、几对于复杂问题,训练过程需迭代几千、几 万次才能收敛到期望的精度。万次才能收敛到期望的精度。 因此,标准的因此,标准的bpbp 网络在很大程度上表现出网络在很大程度上表现出 它的不实用性,特别是对实时性很强的系它的不实用性,特别是对实时性很强的系 统。为此就有了各种改进算法。统。为此就有了各种改进算法。 附加动量法附加动量法 附加动量法使网络在修正权值时不仅考虑附加动量法使网络在修正权值时不仅考虑 误差在梯度上的作用,而且考虑在误差曲误差在梯度上的作用,而且考虑在误差曲 面上变化趋势的影响;面上变化趋势的影响; 其中其中k k为训练次数,为训练次数,mcmc为动量因子,一般为动量因子,一般 取取0.950.95左右左右 ; 附加动量法的实质是将最后一次权值变化附加动量法的实质是将最后一次权值变化 的影响通过一个动量因子来传递。的影响通过一个动量因子来传递。 当动量因子的取值为零时,权值的变化仅当动量因子的取值为零时,权值的变化仅 是根据梯度下降法产生的。是根据梯度下降法产生的。 当动量因子的取值为当动量因子的取值为1 1时,新的权值变化为时,新的权值变化为 最后一次权值的变化,而依梯度法产生的最后一次权值的变化,而依梯度法产生的 变化部分则被忽略掉了。变化部分则被忽略掉了。 为此当增加了动量项后,促使权值的调节为此当增加了动量项后,促使权值的调节 向着误差曲面底部的平均方向变化。可在向着误差曲面底部的平均方向变化。可在 一定程度上解决局部极小问题,但收敛速一定程度上解决局部极小问题,但收敛速 度仍然很慢。度仍然很慢。 附加动量法的应用附加动量法的应用 p = -1:0.1:1p = -1:0.1:1 t = -0.96 -0.577 -0.0729 0.377 0.641 0.66 t = -0.96 -0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 -0.1647 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 -0.1647 0.0988 0.3072 0.396 0.3449 0.1816 -0.0312 -0.0988 0.3072 0.396 0.3449 0.1816 -0.0312 - 0.2183 -0.3201 ;0.2183 -0.3201 ; r,q = size(p); r,q = size(p); s2,q = size(t);s2,q = size(t); s1 = 5;s1 = 5; w1,b1 = rands(s1,r);w1,b1 = rands(s1,r); w2,b2 = rands(s2,s1);w2,b2 = rands(s2,s1); net = newff( minmax(p), 5,1, net = newff( minmax(p), 5,1, tansig,purelin,traingdx );tansig,purelin,traingdx ); net.trainparam.epochs = 700;net.trainparam.epochs = 700; net.trainparam.mc = 0.95;net.trainparam.mc = 0.95; net.trainparam.lr = 0.05;net.trainparam.lr = 0.05; net.performfcn = sse; net.trainparam.goal = 0.02;net.trainparam.goal = 0.02; net,tr = train(net,p,t);net,tr = train(net,p,t); y = sim(net,p);y = sim(net,p); plot(p,t,p,y,o) plot(p,t,p,y,o) 采用动量法时的训练误差记录 自适应学习率调整法自适应学习率调整法 在在bpbp算法中,网络权值的调整取决于学习算法中,网络权值的调整取决于学习 速率和梯度。在标准速率和梯度。在标准bpbp 算法中,学习速率算法中,学习速率 是不变的。是不变的。 而在自适应学习率调整法中,通常学习速而在自适应学习率调整法中,通常学习速 率的调整准则是:检查权值的修正是否真率的调整准则是:检查权值的修正是否真 正降低了误差函数,如果确实如此,则说正降低了误差函数,如果确实如此,则说 明所选的学习率小了,可对其增加一个量明所选的学习率小了,可对其增加一个量 ;若不是则说明产生了过调,那么就应减;若不是则说明产生了过调,那么就应减 小学习速率的值。小学习速率的值。 通过调整学习率通过调整学习率 (k)(k),从而可得到比标准的,从而可得到比标准的bpbp 算法更快的收敛速度。算法更快的收敛速度。 因此,将附加动量法和自适应学习率调整法两种因此,将附加动量法和自适应学习率调整法两种 策略结合起来,既可有效地抑制网络陷入局部极策略结合起来,既可有效地抑制网络陷入局部极 小,又有利于缩短学习时间。小,又有利于缩短学习时间。 但上述两种改进方法都是在标准梯度下降法基础但上述两种改进方法都是在标准梯度下降法基础 上发展起来的,它们只利用了目标函数对网络权上发展起来的,它们只利用了目标函数对网络权 值和阈值的一阶导数信息。因此,当用于较复杂值和阈值的一阶导数信息。因此,当用于较复杂 的问题时,也还存在收敛速度不够快的问题。的问题时,也还存在收敛速度不够快的问题。 自适应学习速率应用自适应学习速率应用 p = -1:0.1:1p = -1:0.1:1 t = -0.96 -0.577 -0.0729 0.377 0.641 0.66 t = -0.96 -0.577 -0.0729 0.377 0.641 0.66 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 -0.1647 0.461 0.1336 -0.201 -0.434 -0.5 -0.393 -0.1647 0.0988 0.3072 0.396 0.3449 0.1816 -0.0312 -0.0988 0.3072 0.396 0.3449 0.1816 -0.0312 - 0.2183 -0.3201 ;0.2183 -0.3201 ; r,q = size(p); r,q = size(p); s2,q = size(t);s2,q = size(t); s1 = 5;s1 = 5; w1,b1 = rands(s1,r);w1,b1 = rands(s1,r); w2,b2 = rands(s2,s1);w2,b2 = rands(s2,s1); net = newff( minmax(p), 5,1, net = newff( minmax(p), 5,1, tansig,purelin,traingdx );tansig,purelin,traingdx ); net.trainparam.epochs = 1000;%net.trainparam.epochs = 1000;%最大训练次数最大训练次数 net.trainparam.lr = 0.05;%net.trainparam.lr = 0.05;%学习速率学习速率 net.trainparam.lr_inc = 1.05;%递增乘因子 net.trainparam.lr_dec = 0.7;%递减乘因子 net.performfcn = sse; net.trainparam.goal = 0;%net.trainparam.goal = 0;%期望误差最小值期望误差最小值 net,tr = train(net,p,t);net,tr = train(net,p,t); y = sim(net,p);y = sim(net,p); plot(p,t,p,y,o) plot(p,t,p,y,o) 例例4-2 4-2 下表为某药品的销售情况,现构建一下表为某药品的销售情况,现构建一 个三层的个三层的bpbp神经网络对药品的销售进行预神经网络对药品的销售进行预 测:输入层有测:输入层有3 3个结点,隐含层结点数为个结点,隐含层结点数为5 5 个,隐含层的激活函数为个,隐含层的激活函数为tansigtansig;输出层结;输出层结 点数为点数为1 1,输出层的激活函数为,输出层的激活函数为logsiglogsig,并,并 利用此网络,对药品的销售量进行预测,利用此网络,对药品的销售量进行预测, 预测的方法为滚动预测方式,即前三个月预测的方法为滚动预测方式,即前三个月 的预测第四个月的。的预测第四个月的。 月份123456 销量205623952600229816341600 月份789101112 销量187314781900150020461556 归一化归一化就是要把数据统一到你想要的区间就是要把数据统一到你想要的区间 内内a,ba,b 因为一般我们都是在区间因为一般我们都是在区间0 10 1或或-1 1-1 1效果效果 比较好比较好 所以就是归一化所以就是归一化 比较简单通用的公式:比较简单通用的公式: y=(x-min)/(max-min) y=(x-min)/(max-min) 归一到归一到0 10 1 y=(x-mean(x)/(max-min) y=(x-mean(x)/(max-min) 归一到归一到-1 1-1 1 %以每三个月的销售量经归一化处理后作为输入以每三个月的销售量经归一化处理后作为输入 p=0.5152 0.8173 1.0000;p=0.5152 0.8173 1.0000; 0.8173 1.0000 0.7308;0.8173 1.0000 0.7308; 1.0000 0.7308 0.1390;1.0000 0.7308 0.1390; 0.7308 0.1390 0.1087;0.7308 0.1390 0.1087; 0.1390 0.1087 0.3520;0.1390 0.1087 0.3520; 0.1087 0.3520 0.0000;0.1087 0.3520 0.0000; %以第四个月的销售量归一化处理后作为目标向量以第四个月的销售量归一化处理后作为目标向量 t=0.7308 0.1390 0.1087 0.3520 0.0000 0.3761;t=0.7308 0.1390 0.108

温馨提示

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

评论

0/150

提交评论