资源描述:
《bp处理异或问题分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
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。采
3、用matlab自带的神经网络工具箱函数分别从隐含层层数,隐含层神经元个数,核函数,学习算法等方面进行分析。讨论其输出值的均方差误减少到0.001所需要的迭代次数,或者在迭代次数达到设定最大次数10000次时,所输出的均方差误差值的大小,具体分析见下文。2结果与分析2.1不同隐含层层数,核函数选取Matlab神经网络工具箱提供核函数有sigmoid函数logsig,线性函数purelin,双曲正切函数tansig等。由于sigmoid函数与双曲正切函数同属于非线性函数,因此本文核函数仅限于非线性和线性函数进行讨论,选取logsig和pur
4、elin函数为讨论函数,在下文中将二者简称为L和P。设置学习效率为0.01,最大训练次数为10000次,期望均方差误差为0.001,将隐含层的细胞数限定为4个,分别对二层[4,1]和三层[4,4,1]神经网络设置不同的核函数进行讨论,学习函数为标准BP算法traingd,由于工具箱函数的各层的初始权重是随机分配的,所以对每种核函数设置都进行10次重复试验取平均值进行讨论,其中表中小数表示训练均方差误差,即训练次数达到最大训练次数10000次时的训练误差;整数表示迭代次数,即训练达到训练目标误差时所对应的训练次数。训练结果如表1和表2所示
5、:表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可以看出隐含层核函数的设置很重要,当
6、隐含层核函数设置为sigmoid函数时,其均方差误差普遍小于设置为线性函数的误差;而且在其输出层的核函数设置为线性函数时,能在最大限定训练次数内达到训练目标误差0.001。由表2可以看出,当网络隐含层设置成两层时,情况就变得复杂多样,当只有一层隐含层神经网络不能在规定的训练次数内达到目标误差时,通过增加隐含层并设置适宜的核函数可以达到增快训练速度的目的。如表1中(P,P)不能达到精度,但通过增加隐含层P在规定最大训练次数内达到目标精度。但如果网络函数设定不当,会使得训练结果变得更糟,从表2中可以看出最好的训练核函数组合为(L,P,P),
7、该组能够在迭代次数为1000次左右达到训练精度。总体上来说,以sigmoid函数L为输出层函数的网络组合普遍比线性函数P为输出函数的训练速度慢。表2网络设置为[4,4,1]两个隐含层和输出层不同的激活函数选取实验结果对比核函数设置12345678910平均值(P,P,P)2349215719154818426380182847355530679603395(L,P,P)70122056411531455602140574739455291276(L,L,P)5559272218621000021432461100003090297531
8、124392(L,L,L)0.0490.0330.2400.0310.0420.1390.1290.2510.1410.1540.121(P,L,L)0.0170.0220.0150.0800.1530.0