BP神经网络原理及应用.docx

上传人:夺命阿水 文档编号:1501111 上传时间:2024-06-29 格式:DOCX 页数:10 大小:160.37KB
返回 下载 相关 举报
BP神经网络原理及应用.docx_第1页
第1页 / 共10页
BP神经网络原理及应用.docx_第2页
第2页 / 共10页
BP神经网络原理及应用.docx_第3页
第3页 / 共10页
BP神经网络原理及应用.docx_第4页
第4页 / 共10页
BP神经网络原理及应用.docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《BP神经网络原理及应用.docx》由会员分享,可在线阅读,更多相关《BP神经网络原理及应用.docx(10页珍藏版)》请在课桌文档上搜索。

1、BP神经网络原理及应用1人工神经网络简介神经系统的根本构造是神经元(神经细胞),它是处理人体内各局部之间相,工信息传递的根本单元。据神经生物学家探讨的结果说明,人的大脑一般有IOe-IOU个神经元。每个神经元都由一个细胞体,一个连接其他神经元的和突和一些向外伸出的其它较短分支-一树突组成。轴突的功能是将本神经元的输出信号(兴奋)传递绐别的神经元。其末端的很多神经末梢使得兴奋可以同时送给多个神经元。树突的功能是承受来自其它神经元的兴奋。神经元细胞体将承受到的全部信号进展简洁地处理后由轴突输出。神经元的树突与另外的神经元的神经末梢相连的局部称为突触.神经网络是由很多相互连接的处理单元组成。这些处理

2、单元通常线性排列成组,称为值.每一个处理单元有很多输入量,而对每一个输入量都相应有一个相关联的权重。处理单元将输入量经过加权求和,并通过传递函数的作用得到输出量,再传给下层的神经元。目前人们提出的神经元模型已仃很多,其中提出最早且影响最大的是1943年心理学家McCulloch和数学家PiltS在分析总结神经元根本特隐含层权值调整公式:,5EEnet.E.wiinetia匕yinetlSwii隐含层网值调整公式:,EEnetlEyineti&=-H=-H1.=F1.lnetl峋y,duet,(3-10)(3-11)又因为:f三-(V-o)Cq1.lZ(3-12)幽=V皿7眄=X幽T西,一,加,

3、加M(3-13)AFp1.-=-t(T-o)y,(nett)-%(3-14)=机,附)cne!i(3-15)4=netionetl(3-16)所以最终得到以下公式:产Z伍-J)W(世)yP-IA-I(3-17)Aq=立(,-C(4)P-IAl(3-18)%=立W-o;)nett)-Wunetiyxir=E(3-19)Aa=一d)w51)%/(”)(3-20)开始图2-2BP算法程序流程图Fig.2-2TheflowchartoftheBPalgorithmprogram2.2 根本BP算法的缺陷BP算法因其简洁、易行、计算量小、并行性强等优点,目前是神经网络训练采纳最多也是最成熟的训练算法之一

4、.其算法的实质是求解误差函数的最小值问题,由于它采纳非线性规划中的最速下降方法,按误差函数的负梯度方向修改权值,因而通常存在以卜问题:(1)学习效率低,收敛速度慢(2)易陷入局部微小状态2.3 BP算法的改良.1附加动量法附加动量法使网络在修正其权值时,不仅考虑误差在梯度上的作用,而且考虑在误差曲面上改变趋势的影响0在没有附加动量的作用下,网络可能陷入浅的局部做小值,利用附加动国的作用有可能滑过这些微小值“该方法是在反向传播法的根底上在每个权值(或阈值)的改变上加上一项正比于前次权值(或阈值)改变量的值,并依据反向传播法来产生新的权值或阈值)改变。带有附加动增因子的权值和阈值调整公式为:%依+

5、1)=(I-ncipi+cwj.(Jl)+I)=(,-ne)rf()+K,(八)其中k为训练次数,OlC为动量因子,一般取左右。附加动量法的实质是将最终一次权值(或网值)改变的影响,通过一个动量因子来传递,当动量因子取值为零时,权值(或阈值)的改变仅是依据梯度下降法产生:当动量因子取值为1时,新的权值(或闽()改变那么是设置为最终次权值(或阈值)的改变,而依梯度法产生的改变局部那么被忽视掉了。以此方式,当增加了动员项后,促使权值的调整向若误差曲面底部的平均方向改变,当网络权值进入误差曲面底部的平坦区时,6,将变得很小,于是AMi(A+)=A%(G),从而防止了AwV=O的出现,有助于使网络从误

6、差曲面的局部微小值中跳出。依据附加动址法的设计原那么,当修正的权值在误差中导致太大的增长结果时.,新的权值应被取消而不被采纳,并使动量作用停顿下来,以使网络不进入较大误差曲面:当新的误差改变率对其旧值超过个事先设定的最大误差改变率时,也得取消所计算的权值改变。其最大误差改变率可以是任何大于或等于1的值。典型的取值取。所以,在进展附加动量法的训练程序设计时,必需加进条件推断以正确运用其权值修正公式。训练程序设计中采纳动量法的推断条件为:0(*)(*-!)*1.04mc=0.95E(k)E(k-),E(k)为第k步误差平方和。me其它.2自适应学习速率时下一个特定的问题,耍选择适当的学习速率不是一

7、件简洁的事情.通常是凭经验或试验获得,但即使这样,对训练开场初期成效较好的学习速率,不见得对后来的训练相宜。为了解决这个问题,人们自然想到在训练过程中,自动调整学习速率。通常调整学习速率的准那么是:检查权值是否真正降低了误差函数,假如的确如此,那么说明所选学习速率小r,可以适当增加个量:假设不是这样,而产生了过调,那幺就应当削减学习速率的值。下式给出了个自适应学习速率的调整公式:.()5(k)E(k+1)1.04E(),E(kJ为第k步误差平方和。(k)其它初始学习速率TI(O)的选取范围可以有很大的随意性。当采纳前述的动量法时,BP算法可以找到全局最优解,而当采纳自适应学习速率时,BP算法可

8、以缩短训练时间,采纳这两种方法也可以用来训练神经网络,该方法称为动量自适应学习速率调整和法。2.4 网络的设计.1网络的层数理论上已证明:具有偏差和至少一个SN隐含层加上一个线性输出层的网络,能够靠近任何有理数。增加层数可以更进一步的降低误差,提高精度,但同时也使网络困难化,从而增加了网络权值的训练时间。而误差精度的提高事实上也可以通过增加神经元数目来获得,其训练效果也比增加层数更简洁视察和调整。所以般状况下,应优先考虑增加隐含层中的神经元数。.2的含层的神经元数网络训练精度的提高,可以通过采纳一个隐含层,而增加神经元数了的方法来获得。这在构造实现上,要比增加隐含层数要简洁得多。那么终究选取多

9、少隐含层节点才相宜?这在理论上并没有一个明确的规定。在详细设计时,比拟实际的做法是通过对不同神经元数进展训练比照,然后适当地加上点余量。.3初始权值的选取由于系统是非线性的,初始值对于学习是否到达局部最小、是否能够收敛及训练时间的长短关系很大。假如初始值太大,使得加权后的输入和n落在了S型激活函数的饱和区,从而导致其导数fYn)特别小,而在计算权值修正公式中,因为boc,(),当(n)0时,那么有60这使得t;0,从而使得调盛过程几乎停顿卜一来。所以一般总是希望经过初始加权后的每个神经元的输出值都接近于零,这样可以保证每个神经元的权值都能够在它们的S型激活函数改变最大之处进展调整。所以,一般取

10、初始权值在(7,1)之间的随机数.4学习速率学习速率确定每一次循环训练中所产生的权值改变员。大的学习速率可能导致系统的不稳定;但小的学习速率导致较长的训练时间,可能收敛很慢,不过能保证网络的误差值不跳出误差外表的低谷而最终趋于最小误差值.所以在一般状况下,倾向于选取较小的学习速率以保证系统的稳定性。学习速率的选取范围在之间。3BP神经网珞的应用现给出一药品商店一年当中12个月的药品销传量维位:豺)如卜丁205623952600229816341600187314871900150020461556训练一个BP网络,用当前的全部数据预料下一个月的药品销售fit.有两种方法实现,一种是编写matl

11、ab程序,一种是运用nntool工具箱O3.1 matlab程序实现我们用前三个月的销售量预料下一个月的销售量,也就是用1-3月的销售fit预料第4个月的销售量,用2-4个月的销售量侦料第5个月的销售S.如此循环下去,宜到用9-11月预料12月份的销售量。这样训练BP神经网络后,就可以用1072月的数据预料来年月的销售量。实现程序如下:p-20S623952600;239526002298;260022981634;229816341600;163416001873;160018731478;187314781900;147819001500;190015002046;)t三229816341

12、600187314871900150020461556;PrnaX=max(p);pfnaxl=max(p11ax;PminFin(p;pminl-min(pmin;for1-1:9*归一化处理pl(I,三-p(i/:)-pminl)/(pmal-pminl);endtl=nsfcrFunction般用TANSlG(当然也可以1.OGSIG),即表示隐层输出是口.1之间的实数,与1.OGSIG相比范围更大。V)1.ayer2NumberofNeurons输出层的神经元个数,须要与输出的矩阵行数对应,比方设理为3,等等。vi)1.ayer2TransferFunction假如是模式识别的两类(或

13、者多类)问题,-TiXH1.OGSIG,即表示输出层的输出是0.1之间的实数:假如输出超过0.1那么可选择PURE1.IN。全部参数输入后,可以先用Vicw按钮预览一卜.,如图6。没有问题的话就可以Create了。另外,网络创立完毕后,假如须要手动设置权重的初始值,按VieW按钮后有个IniIialize选项卡,在那里可以设定.当然了,也可以不自行设定,这时候MaUab执行默认的程序进展权Jg的初始化。4)点击Train按钮,到达TrainingInfO选项卡,在输入向量IlnPUts和目标输入向量Ta里ets下拉框中选择你要训练的向量(即其次步参与的对象),如图7。然后到达TrainPara

14、meters选项卡,填入适当的迭代次数IeIK)Chs一般先设置一个较小的数如200,然后视察收敛结果,假如结果窗口的收敛曲线衰减较快,那么表示之前的参数比拟有效,因此可填入2000或更大的数目使得网络收敛,否那么修改之前的参数)、结果显示频率show(例如要每隔50次迭代显示结果窗口,那么填50)和目标误差goal(这个与第2步中的PerformanceFuncio有关,假如运用默认的MSE,那么一般满意“”就可以了),就可以开场训练了(按钮(TrainNetwork),假如结果收敛(训练误差不大于目标误差,即蓝色线到达黑色线位置)就OK了(例如要求精度很高,尝试填0,等等)。由于神经网络工具箱一次只能输入一组输入数据,所以对于此问题要分九次输入,并没仃编程简洁。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号