BP处理异或问题分析

上传人:tia****nde 文档编号:36946065 上传时间:2018-04-04 格式:DOCX 页数:8 大小:44.93KB
返回 下载 相关 举报
BP处理异或问题分析_第1页
第1页 / 共8页
BP处理异或问题分析_第2页
第2页 / 共8页
BP处理异或问题分析_第3页
第3页 / 共8页
BP处理异或问题分析_第4页
第4页 / 共8页
BP处理异或问题分析_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《BP处理异或问题分析》由会员分享,可在线阅读,更多相关《BP处理异或问题分析(8页珍藏版)》请在金锄头文库上搜索。

1、BP 神经网络实现“异或逻辑”分析舒小健 S201305025摘要:摘要:本文采用 matlab 神经网络工具箱中的 BP 网络处理“异或逻辑”。通过使用不同的网络结构、核函数、学习算法,讨论其均方差误差达到 0.001 时,所需要的迭代次数。结果表明二层神经网络以(L,P)组合训练结果最佳,三层神经网络以(L,P,P)训练结果最佳,且后者的训练速度比前者要快一倍左右;隐含层神经元数个数设置为 5 个就能达到较快的训练速度;使用 LM 算法为学习算法将大大提高网络的训练速度,平均迭代次数为 3 次左右即能达到目标误差。关键词:关键词:异或逻辑BP 神经网络 优化模型引言:BP 神经网络是一种由

2、非线性变化单元组成的前馈网络,以sigmoid 对数函数、双曲正切函数、线性函数等为核函数,通过误差的反向传导对网络进行训练,以得到期望的输出值,其中 BP 网络的设计,训练算法的选取对模型的收敛速度有较大的影响。本报告通过构建两层和三层 BP 神经网络模型,选取不同的核函数、学习算法,不同个数的神经元讨论“异或逻辑”的实现效率,着重对其收敛速度进行对比分析,以得到实现“异或逻辑”较优的 BP 网络设计。1 问题描述“异或逻辑”,可用计算机语言表述为当输入值为就(0,0) ,(1,1) , (1,0) , (0,1)时,期望输出分别为 0,0,1,1。采用matlab 自带的神经网络工具箱函数

3、分别从隐含层层数,隐含层神经元个数,核函数,学习算法等方面进行分析。讨论其输出值的均方差误减少到 0.001 所需要的迭代次数,或者在迭代次数达到设定最大次数 10000 次时,所输出的均方差误差值的大小,具体分析见下文。2 结果与分析2.1 不同隐含层层数,核函数选取Matlab 神经网络工具箱提供核函数有 sigmoid 函数 logsig,线性函数 purelin,双曲正切函数 tansig 等。由于 sigmoid 函数与双曲正切函数同属于非线性函数,因此本文核函数仅限于非线性和线性函数进行讨论,选取 logsig 和 purelin 函数为讨论函数,在下文中将二者简称为 L 和 P。

4、设置学习效率为 0.01,最大训练次数为 10000 次,期望均方差误差为 0.001,将隐含层的细胞数限定为 4 个,分别对二层4,1和三层4,4,1神经网络设置不同的核函数进行讨论,学习函数为标准 BP 算法 traingd,由于工具箱函数的各层的初始权重是随机分配的,所以对每种核函数设置都进行 10 次重复试验取平均值进行讨论,其中表中小数表示训练均方差误差,即训练次数达到最大训练次数 10000次时的训练误差;整数表示迭代次数,即训练达到训练目标误差时所对应的训练次数。训练结果如表 1 和表 2 所示:表 1 网络设置为4,1隐含层和输出层不同的激活函数选取实验结果对比核函数 设置12

5、345678910平均值(L,L)0.37 0.07 0.02 0.07 0.14 0.08 0.02 0.04 0.14 0.26 0.12 (L,P)21944637417516953227364416302644465024353093(P,L)0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 (P,P)0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 由表 1 可以看出隐含层核函数的设置很重要,当隐含层核函数设置为 sigmoid 函数时,其均方差误差普遍小于设置为线

6、性函数的误差;而且在其输出层的核函数设置为线性函数时,能在最大限定训练次数内达到训练目标误差 0.001。由表 2 可以看出,当网络隐含层设置成两层时,情况就变得复杂多样,当只有一层隐含层神经网络不能在规定的训练次数内达到目标误差时,通过增加隐含层并设置适宜的核函数可以达到增快训练速度的目的。如表 1 中(P,P)不能达到精度,但通过增加隐含层 P在规定最大训练次数内达到目标精度。但如果网络函数设定不当,会使得训练结果变得更糟,从表 2 中可以看出最好的训练核函数组合为(L,P,P) ,该组能够在迭代次数为 1000 次左右达到训练精度。总体上来说,以 sigmoid 函数 L 为输出层函数的

7、网络组合普遍比线性函数 P 为输出函数的训练速度慢。表 2 网络设置为4,4,1两个隐含层和输出层不同的激活函数选取实验结果对比核函数 设置12345678910平均值(P,P,P)2349215719154818426380182847355530679603395(L,P,P)70122056411531455602140574739455291276(L,L,P)5559272218621000021432461100003090297531124392(L,L,L)0.049 0.033 0.240 0.031 0.042 0.139 0.129 0.251 0.141 0.154 0

8、.121 (P,L,L)0.017 0.022 0.015 0.080 0.153 0.017 0.020 0.018 0.171 0.025 0.054 (P,P,L)计算梯度很快降到 1e-5 以下,误差只能收敛到 0.25,不能达到要求(L,P,L)0.002 0.002 0.003 0.003 0.001 0.002 0.002 0.002 0.002 0.003 0.002 (P,L,P)3065100003296100003239233463499571189039705371由上述分析可知,二层神经网络以(L,P)组合训练结果最佳,三层神经网络以(L,P,P)训练结果最佳,且后者

9、的训练速度比前者要快一倍左右。故采用适宜的神经网络设计方案,就异或问题而言,三层的网络比二层网络训练速度快。2.2 神经元个数对网络的影响就神经元个数对网络影响的讨论,为简洁起见,以二层神经网络分析为例,网络训练参数均采用 2.1 中设置方式,隐含层的核函数设置为 sigmoid 函数,输出层函数设置为线性函数,通过设置不同的神经元个数,分别对网络训练效果进行讨论,得到了如表 3 所示的结果。从表中可以看出,隐含层神经元的个数的变化对训练效果的影响,随着神经元个数的增多,达到目标误差的平均训练次数之减少,在神经元个数小于 5 个时,训练速度的提升比较的明显,产生较少训练次数的几率也随着神经元个

10、数的增多而增大,但到 5 个之后,这种影响就变得不那么显著。实际上随着神经元个数的增加,所占用的计算机资源也随之增大,所以神经元个数的选择不宜太大,故解决异或问题隐含层使用 5 个神经元较为合理。表 3 隐含层不同神经元个数的设置对网络训练效果的影响隐含层神经元设置12345678910平均2,1100001000010000100003387100001000069683650100008400 3,150411000010000221914892479449845391000095135978 4,1100001303149596984160361417044064199821724021

11、 5,12800285915051633207915421189146611918891715 6,1220534161077133715251680134877010819181536 7,132711013864714103188810059397938811140 8,127564214166001028827763589802545749 2.3 对学习函数的讨论Matlab 的 BP 神经网络工具箱提供了标准 BP 算法 traingd,动量梯度下降算法 traingdm,共轭梯度算法 traincgf,LM 算法 trainlm 等学习函数,引用 2.1,2.2 的结论,设计三层结

12、构5,5,1,核函数为L,P,P的神经网络模型,其它参数同 2.1,训练结果如表 4 所示。从表中可以看出,学习函数对达到训练目标需要的迭代次数影响非常明显,不同的学习函数的迭代次数相差很大,标准 BP 平均需要1000 次左右,共轭算法平均需要 20 次,而 LM 算法平均仅仅需要 3次,说明好的学习函数对训练速度起相当重要的作用。表 4 不同学习算法使用后达到训练目标的迭代次数学习算法12345678910平均traingd12981702743999988127362840990045091344traingdm56261171388999221413442301502110661465

13、2247traincgd2091095103940103719trainlm22223223232通过绘制四种学习函数对网络的训练过程,清晰展现出神经网络的训练速度随迭代次数之间的关系,如图 1 所示,标准 BP 算法训练呈 S 型,一开始收敛梯度较大,但经过一定的迭代次数之后计算梯度变小,使得到达目标误差的迭代次数较多;动量梯度算法有所改善,依然需要较多的迭代次数;共轭梯度算法对训练有了很大的改进,大大增加了每次迭代的梯度;LM 算法更是收敛梯度极大,很快收敛到目标误差。充分说明将 LM 算法应用于处理异或问题可以极大提高 BP 神经网络的收敛速度。050010001500200025003

14、00035004000450010-410-310-210-1100Best Training Performance is 0.00099758 at epoch 4509Mean Squared Error (mse)4509 EpochsTrain Best Goal02004006008001000120014001600180010-410-310-210-1100101Best Training Performance is 0.00099866 at epoch 1860Mean Squared Error (mse)1860 EpochsTrain Best GoalA:tra

15、ingd B:traingdm0510152025303510-410-310-210-1100101Best Training Performance is 0.00096282 at epoch 37Mean Squared Error (mse)37 EpochsTrain Best Goal00.511.522.5310-410-310-210-1100101Best Training Performance is 0.00011179 at epoch 3Mean Squared Error (mse)3 EpochsTrain Best GoalC:traincgd D:train

16、lm图 1 A 表示标准 BP 算法训练结果,B 表示动量梯度下降算法训练结果; C 表示共轭梯度算法训练结果,D 表示 LM 算法训练结果3 结论通过使用 matlab 的 BP 神经网络工具箱实现异或逻辑,对其神经网络结构参数、核函数、学习函数进行讨论,进一步的了解不同参数对 BP 神经网络算法训练速度的影响,得到了如下的结论。二层神经网络以(L,P)组合训练结果最佳,三层神经网络以(L,P,P)训练结果最佳,且后者的训练速度比前者要快一倍左右。随着隐含层神经元个数的增多,训练达到目标误差的平均训练次数会随之减少,在神经元个数小于 5 个时,训练速度的提升比较明显,产生较少训练次数随之增大;但到 5 个之后,这种影响就变得不那么显著。学习函数对达到训练目标需要的迭代次数影响非常明显,不同的学习函数的迭代次数相差很大,标准 BP 平均需要 1000 次左右,共轭算法平均需要 20 次,而 LM 算法平均仅仅需要 3 次

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号