BP处理异或问题分析.docx
- 文档编号:9832484
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:9
- 大小:59.25KB
BP处理异或问题分析.docx
《BP处理异或问题分析.docx》由会员分享,可在线阅读,更多相关《BP处理异或问题分析.docx(9页珍藏版)》请在冰豆网上搜索。
BP处理异或问题分析
BP神经网络实现“异或逻辑”分析
舒小健S2*******5
摘要:
本文采用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]隐含层和输出层不同的激活函数选取实验结果对比
核函数设置
1
2
3
4
5
6
7
8
9
10
平均值
(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)
2194
4637
4175
1695
3227
3644
1630
2644
4650
2435
3093
(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函数时,其均方差误差普遍小于设置为线性函数的误差;而且在其输出层的核函数设置为线性函数时,能在最大限定训练次数内达到训练目标误差0.001。
由表2可以看出,当网络隐含层设置成两层时,情况就变得复杂多样,当只有一层隐含层神经网络不能在规定的训练次数内达到目标误差时,通过增加隐含层并设置适宜的核函数可以达到增快训练速度的目的。
如
表1中(P,P)不能达到精度,但通过增加隐含层P在规定最大训练次数内达到目标精度。
但如果网络函数设定不当,会使得训练结果变得更糟,从表2中可以看出最好的训练核函数组合为(L,P,P),该组能够在迭代次数为1000次左右达到训练精度。
总体上来说,以sigmoid函数L为输出层函数的网络组合普遍比线性函数P为输出函数的训练速度慢。
表2网络设置为[4,4,1]两个隐含层和输出层不同的激活函数选取实验结果对比
核函数设置
1
2
3
4
5
6
7
8
9
10
平均值
(P,P,P)
2349
2157
1915
4818
4263
8018
2847
3555
3067
960
3395
(L,P,P)
701
2205
641
1531
455
602
1405
747
3945
529
1276
(L,L,P)
5559
2722
1862
10000
2143
2461
10000
3090
2975
3112
4392
(L,L,L)
0.049
0.033
0.240
0.031
0.042
0.139
0.129
0.251
0.141
0.154
0.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)
3065
10000
3296
10000
3239
2334
6349
9571
1890
3970
5371
由上述分析可知,二层神经网络以(L,P)组合训练结果最佳,三层神经网络以(L,P,P)训练结果最佳,且后者的训练速度比前者要快一倍左右。
故采用适宜的神经网络设计方案,就异或问题而言,三层的网络比二层网络训练速度快。
2.2神经元个数对网络的影响
就神经元个数对网络影响的讨论,为简洁起见,以二层神经网络分析为例,网络训练参数均采用2.1中设置方式,隐含层的核函数设置为sigmoid函数,输出层函数设置为线性函数,通过设置不同的神经元个数,分别对网络训练效果进行讨论,得到了如表3所示
的结果。
从表中可以看出,隐含层神经元的个数的变化对训练效果的影响,随着神经元个数的增多,达到目标误差的平均训练次数之减少,在神经元个数小于5个时,训练速度的提升比较的明显,产生较少训练次数的几率也随着神经元个数的增多而增大,但到5个之后,这种影响就变得不那么显著。
实际上随着神经元个数的增加,所占用的计算机资源也随之增大,所以神经元个数的选择不宜太大,故解决异或问题隐含层使用5个神经元较为合理。
表3隐含层不同神经元个数的设置对网络训练效果的影响
隐含层神经元设置
1
2
3
4
5
6
7
8
9
10
平均
[2,1]
10000
10000
10000
10000
3387
10000
10000
6968
3650
10000
8400
[3,1]
5041
10000
10000
2219
1489
2479
4498
4539
10000
9513
5978
[4,1]
10000
1303
1495
9698
4160
3614
1704
4064
1998
2172
4021
[5,1]
2800
2859
1505
1633
2079
1542
1189
1466
1191
889
1715
[6,1]
2205
3416
1077
1337
1525
1680
1348
770
1081
918
1536
[7,1]
3271
1013
864
714
1031
888
1005
939
793
881
1140
[8,1]
275
642
1416
600
1028
827
763
589
802
545
749
2.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不同学习算法使用后达到训练目标的迭代次数
学习算法
1
2
3
4
5
6
7
8
9
10
平均
traingd
1298
1702
743
999
988
1273
628
409
900
4509
1344
traingdm
562
6117
1388
999
2214
1344
2301
5021
1066
1465
2247
traincgd
20
9
10
9
5
10
39
40
10
37
19
trainlm
2
2
2
2
3
2
2
3
2
3
2
通过绘制四种学习函数对网络的训练过程,清晰展现出神经网络的训练速度随迭代次数之间的关系,如图1所示,标准BP算法训练呈S型,一开始收敛梯度较大,但经过一定的迭代次数之后计算梯度变小,使得到达目标误差的迭代次数较多;动量梯度算法有所改善,依然需要较多的迭代次数;共轭梯度算法对训练有了很大的改进,大大增加了每次迭代的梯度;LM算法更是收敛梯度极大,很快收敛到目标误差。
充分说明将LM算法应用于处理异或问题可以极大提高BP神经网络的收敛速度。
A:
traingdB:
traingdm
C:
traincgdD:
trainlm
图1A表示标准BP算法训练结果,B表示动量梯度下降算法训练结果;C表示共轭梯度算法训练结果,D表示LM算法训练结果
3结论
通过使用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:
10
fori=2
forj=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.epoch);
mes(i-1,j)=tr.best_perf;
traintime(i-1,j)=max(tr.time);
end
end
mlast=[m,mean(m,2)];
meslast=[mes,mean(mes,2)];
traintimelast=[traintime,mean(traintime,2)];
set(0,'ShowHiddenHandles','on');
set(gcf,'menubar','figure');
(注:
可编辑下载,若有不当之处,请指正,谢谢!
)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BP 处理 问题 分析