您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > BP处理异或问题分析
BP神经网络实现“异或逻辑”分析舒小健S201305025摘要:本文采用matlab神经网络工具箱中的BP网络处理“异或逻辑”。通过使用不同的网络结构、核函数、学习算法,讨论其均方差误差达到0.001时,所需要的迭代次数。结果表明二层神经网络以(L,P)组合训练结果最佳,三层神经网络以(L,P,P)训练结果最佳,且后者的训练速度比前者要快一倍左右;隐含层神经元数个数设置为5个就能达到较快的训练速度;使用LM算法为学习算法将大大提高网络的训练速度,平均迭代次数为3次左右即能达到目标误差。关键词:异或逻辑BP神经网络优化模型引言:BP神经网络是一种由非线性变化单元组成的前馈网络,以sigmoid对数函数、双曲正切函数、线性函数等为核函数,通过误差的反向传导对网络进行训练,以得到期望的输出值,其中BP网络的设计,训练算法的选取对模型的收敛速度有较大的影响。本报告通过构建两层和三层BP神经网络模型,选取不同的核函数、学习算法,不同个数的神经元讨论“异或逻辑”的实现效率,着重对其收敛速度进行对比分析,以得到实现“异或逻辑”较优的BP网络设计。1问题描述“异或逻辑”,可用计算机语言表述为当输入值为就(0,0),(1,1),(1,0),(0,1)时,期望输出分别为0,0,1,1。采用matlab自带的神经网络工具箱函数分别从隐含层层数,隐含层神经元个数,核函数,学习算法等方面进行分析。讨论其输出值的均方差误减少到0.001所需要的迭代次数,或者在迭代次数达到设定最大次数10000次时,所输出的均方差误差值的大小,具体分析见下文。2结果与分析2.1不同隐含层层数,核函数选取Matlab神经网络工具箱提供核函数有sigmoid函数logsig,线性函数purelin,双曲正切函数tansig等。由于sigmoid函数与双曲正切函数同属于非线性函数,因此本文核函数仅限于非线性和线性函数进行讨论,选取logsig和purelin函数为讨论函数,在下文中将二者简称为L和P。设置学习效率为0.01,最大训练次数为10000次,期望均方差误差为0.001,将隐含层的细胞数限定为4个,分别对二层[4,1]和三层[4,4,1]神经网络设置不同的核函数进行讨论,学习函数为标准BP算法traingd,由于工具箱函数的各层的初始权重是随机分配的,所以对每种核函数设置都进行10次重复试验取平均值进行讨论,其中表中小数表示训练均方差误差,即训练次数达到最大训练次数10000次时的训练误差;整数表示迭代次数,即训练达到训练目标误差时所对应的训练次数。训练结果如表1和表2所示:表1网络设置为[4,1]隐含层和输出层不同的激活函数选取实验结果对比核函数设置12345678910平均值(L,L)0.370.070.020.070.140.080.020.040.140.260.12(L,P)21944637417516953227364416302644465024353093(P,L)0.250.250.250.250.250.250.250.250.250.250.25(P,P)0.250.250.250.250.250.250.250.250.250.250.25由表1可以看出隐含层核函数的设置很重要,当隐含层核函数设置为sigmoid函数时,其均方差误差普遍小于设置为线性函数的误差;而且在其输出层的核函数设置为线性函数时,能在最大限定训练次数内达到训练目标误差0.001。由表2可以看出,当网络隐含层设置成两层时,情况就变得复杂多样,当只有一层隐含层神经网络不能在规定的训练次数内达到目标误差时,通过增加隐含层并设置适宜的核函数可以达到增快训练速度的目的。如表1中(P,P)不能达到精度,但通过增加隐含层P在规定最大训练次数内达到目标精度。但如果网络函数设定不当,会使得训练结果变得更糟,从表2中可以看出最好的训练核函数组合为(L,P,P),该组能够在迭代次数为1000次左右达到训练精度。总体上来说,以sigmoid函数L为输出层函数的网络组合普遍比线性函数P为输出函数的训练速度慢。表2网络设置为[4,4,1]两个隐含层和输出层不同的激活函数选取实验结果对比核函数设置12345678910平均值(P,P,P)2349215719154818426380182847355530679603395(L,P,P)70122056411531455602140574739455291276(L,L,P)5559272218621000021432461100003090297531124392(L,L,L)0.0490.0330.2400.0310.0420.1390.1290.2510.1410.1540.121(P,L,L)0.0170.0220.0150.0800.1530.0170.0200.0180.1710.0250.054(P,P,L)计算梯度很快降到1e-5以下,误差只能收敛到0.25,不能达到要求(L,P,L)0.0020.0020.0030.0030.0010.0020.0020.0020.0020.0030.002(P,L,P)3065100003296100003239233463499571189039705371由上述分析可知,二层神经网络以(L,P)组合训练结果最佳,三层神经网络以(L,P,P)训练结果最佳,且后者的训练速度比前者要快一倍左右。故采用适宜的神经网络设计方案,就异或问题而言,三层的网络比二层网络训练速度快。2.2神经元个数对网络的影响就神经元个数对网络影响的讨论,为简洁起见,以二层神经网络分析为例,网络训练参数均采用2.1中设置方式,隐含层的核函数设置为sigmoid函数,输出层函数设置为线性函数,通过设置不同的神经元个数,分别对网络训练效果进行讨论,得到了如表3所示的结果。从表中可以看出,隐含层神经元的个数的变化对训练效果的影响,随着神经元个数的增多,达到目标误差的平均训练次数之减少,在神经元个数小于5个时,训练速度的提升比较的明显,产生较少训练次数的几率也随着神经元个数的增多而增大,但到5个之后,这种影响就变得不那么显著。实际上随着神经元个数的增加,所占用的计算机资源也随之增大,所以神经元个数的选择不宜太大,故解决异或问题隐含层使用5个神经元较为合理。表3隐含层不同神经元个数的设置对网络训练效果的影响隐含层神经元设置12345678910平均[2,1]100001000010000100003387100001000069683650100008400[3,1]50411000010000221914892479449845391000095135978[4,1]100001303149596984160361417044064199821724021[5,1]2800285915051633207915421189146611918891715[6,1]220534161077133715251680134877010819181536[7,1]32711013864714103188810059397938811140[8,1]275642141660010288277635898025457492.3对学习函数的讨论Matlab的BP神经网络工具箱提供了标准BP算法traingd,动量梯度下降算法traingdm,共轭梯度算法traincgf,LM算法trainlm等学习函数,引用2.1,2.2的结论,设计三层结构[5,5,1],核函数为[L,P,P]的神经网络模型,其它参数同2.1,训练结果如表4所示。从表中可以看出,学习函数对达到训练目标需要的迭代次数影响非常明显,不同的学习函数的迭代次数相差很大,标准BP平均需要1000次左右,共轭算法平均需要20次,而LM算法平均仅仅需要3次,说明好的学习函数对训练速度起相当重要的作用。表4不同学习算法使用后达到训练目标的迭代次数学习算法12345678910平均traingd12981702743999988127362840990045091344traingdm562611713889992214134423015021106614652247traincgd2091095103940103719trainlm22223223232通过绘制四种学习函数对网络的训练过程,清晰展现出神经网络的训练速度随迭代次数之间的关系,如图1所示,标准BP算法训练呈S型,一开始收敛梯度较大,但经过一定的迭代次数之后计算梯度变小,使得到达目标误差的迭代次数较多;动量梯度算法有所改善,依然需要较多的迭代次数;共轭梯度算法对训练有了很大的改进,大大增加了每次迭代的梯度;LM算法更是收敛梯度极大,很快收敛到目标误差。充分说明将LM算法应用于处理异或问题可以极大提高BP神经网络的收敛速度。A:traingdB:traingdmC:traincgdD:trainlm图1A表示标准BP算法训练结果,B表示动量梯度下降算法训练结果;C表示共轭梯度算法训练结果,D表示LM算法训练结果3结论05001000150020002500300035004000450010-410-310-210-1100BestTrainingPerformanceis0.00099758atepoch4509MeanSquaredError(mse)4509EpochsTrainBestGoal02004006008001000120014001600180010-410-310-210-1100101BestTrainingPerformanceis0.00099866atepoch1860MeanSquaredError(mse)1860EpochsTrainBestGoal0510152025303510-410-310-210-1100101BestTrainingPerformanceis0.00096282atepoch37MeanSquaredError(mse)37EpochsTrainBestGoal00.511.522.5310-410-310-210-1100101BestTrainingPerformanceis0.00011179atepoch3MeanSquaredError(mse)3EpochsTrainBestGoal通过使用matlab的BP神经网络工具箱实现异或逻辑,对其神经网络结构参数、核函数、学习函数进行讨论,进一步的了解不同参数对BP神经网络算法训练速度的影响,得到了如下的结论。二层神经网络以(L,P)组合训练结果最佳,三层神经网络以(L,P,P)训练结果最佳,且后者的训练速度比前者要快一倍左右。随着隐含层神经元个数的增多,训练达到目标误差的平均训练次数会随之减少,在神经元个数小于5个时,训练速度的提升比较明显,产生较少训练次数随之增大;但到5个之后,这种影响就变得不那么显著。学习函数对达到训练目标需要的迭代次数影响非常明显,不同的学习函数的迭代次数相差很大,标准BP平均需要1000次左右,共轭算法平均需要20次,而LM算法平均仅仅需要3次,说明好的学习函数对训练速度起相当重要的作用。LM算法应用于处理异或问题可以极大提高BP神经网络的收敛速度。附件:%神经网络训练程序clc;closeall;clear;P=[0011;0101];T=[0110];n=10;%fori=2:10fori=2forj=1%LP.lr=0.1;net=newff(minmax(P),[41],{'logsig','purelin'},'traingdm');%net=newff(minmax(P),[21],{'logsig','logsig'},'traingd');net.trainParam.epochs=10000;net.trainParam.goal=0.001;LP.lr=0.1;[net,tr,Y,E,Pf,Af]=train(net,P,T);m(i-1,j)=max(tr.ep
本文标题:BP处理异或问题分析
链接地址:https://www.777doc.com/doc-4227368 .html