实验一 BP神经网络
实验目的:
用MATLAB验证课本25页例2.1,理解BP神经网络算法
实验平台:
笔记本电脑,MATLAB2010版本
实验内容:
M文件如下:
x=[1,0,1];%训练样本
l=0.9;%学习率
w=[0.2,-0.3,0.4,0.1,-0.5,0.2,-0.3,-0.2];%网络连接权重
p=[-0.4,0.2,0.1];%神经元偏置
for i=1:1
%每个神经元的总输入和输出计算如下
s4=w(1)*x(1)+w(3)*x(2)+w(5)*x(3)+p(1);
o4=1/(1+exp(-s4));
s5=w(2)*x(1)+w(4)*x(2)+w(6)*x(3)+p(2);
o5=1/(1+exp(-s5));
s6=o4*w(7)+o5*w(8)+p(3);
o6=1/(1+exp(-s6));
o3=x(3);
o2=x(2);
o1=x(1);
%输出层和隐含层神经元的误差计算如下
e6=o6*(1-o6)*(1-o6);
e5=o5*(1-o5)*e6*w(8);
e4=o4*(1-o4)*e6*w(7);
%网络连接权值和神经元偏置更新如下
w(8)=w(8)+l*o5*e6;
w(7)=w(7)+l*o4*e6;
w(6)=w(6)+l*o3*e5;
w(5)=w(5)+l*o3*e4;
w(4)=w(4)+l*o2*e5;
w(3)=w(3)+l*o2*e4;
w(2)=w(2)+l*o1*e5;
w(1)=w(1)+l*o1*e5;
p(1)=p(1)+l*e4;
p(2)=p(2)+l*e5;
p(3)=p(3)+l*e6;
end
o4
o5
o6
e4
e5
e6
w
p
进行一次迭代的结果如下:
o4 =
0.3318
o5 =
0.5250
o6 =
0.4739
e4 =
-0.0087
e5 =
-0.0065
e6 =
0.1312
w =
0.1941 -0.3059 0.4000 0.1000 -0.5079 0.1941 -0.2608 -0.1380
p =
-0.4079 0.1941 0.2181
将for i=1:1改为for i=1:100
进行100次迭代的结果如下:
o4 =
0.3610
o5 =
0.6202
o6 =
0.9312
e4 =
3.2207e-004
e5 =
8.5355e-004
e6 =
0.0044
w =
0.3309 -0.1691 0.4000 0.1000 -0.5003 0.3309 0.3183 0.8248
p =
-0.4003 0.3309 1.9850
实验分析:
预期分类标号为1;
第1次迭代结果为0.4739,误差较大,为52.61%;
第100次迭代结果为0.9312,和预期非常接近,误差仅为6.98%;
第200次迭代结果为0.9548,误差仅为4.52%;
第1000次迭代结果为0.9821,误差仅为1.79%;
第10000次迭代结果为0.9949,误差仅为0.51%。
上述各迭代时间均不超过1秒,算法的时间复杂度低;
篇幅有限,仅贴出第1次和第100次的运行结果。
实验心得:
BP神经网络在解决本例题中表现优异,准确,迅速,且收敛快速。
2017.5.17
当年的计算智能课作业