4.2 BP学习算法
智能融合第四章第二题,实测正确,代码可运行,将其复制到matlab,直接运行,在执行框内可得到最后调整好的权重参数
最终版程序3
w = rand(15,1);
w30 = 1; w40 = 2; w50 =3;
w31 = 1; w41 = 0; w51 = 3;
w32 = 1; w42 =2; w52 = -3;
w63 = 1; w64 =-1; w65 = 1;
w73 = 0; w74 =1; w75 =1;
eta = 0.1;
for loop = 1:10000
sample = randi([1,4],1,1);
%sample = input('sample=1,2,3,4?');
if sample == 1
x1=1;x2=-1;x3=1;d6=1;d7=1;
end;
Oou0 = 2/(1 + exp(-x1))-1
Oou1 = 2/(1 + exp(-x2))-1;
Oou2 = 2/(1 + exp(-x3))-1;
v3 = w30*Oou0 + w31*Oou1 + w32*Oou2;
v4 = w40*Oou0 + w41*Oou1 + w42*Oou2;
v5 = w50*Oou0 + w51*Oou1 + w52*Oou2;
Oou3 = 2/(1 + exp(-v3))-1;
Oou4 = 2/(1 + exp(-v4))-1;
Oou5 = 2/(1 + exp(-v5))-1;
v6 = w63*Oou3 + w64*Oou4 + w65*Oou5;
v7 = w73*Oou3 + w74*Oou4 + w75*Oou5;
Oou6 = 2/(1 + exp(-v6))-1;
Oou7 = 2/(1 + exp(-v7))-1;
e6 = d6 - Oou6;
e7 = d7 - Oou7;
deltaw63 = 0.5*eta*e6*(1+Oou6)*(1-Oou6)*Oou3;
deltaw64 = 0.5*eta*e6*(1+Oou6)*(1-Oou6)*Oou4;
deltaw65 = 0.5*eta*e6*(1+Oou6)*(1-Oou6)*Oou5;
w63 = w63 + deltaw63;
w64 = w64 + deltaw64;
w65 = w65 + deltaw65;
deltaw73 = 0.5*eta*e7*(1+Oou7)*(1-Oou7)*Oou3;
deltaw74 = 0.5*eta*e7*(1+Oou7)*(1-Oou7)*Oou4;
deltaw75 = 0.5*eta*e7*(1+Oou7)*(1-Oou7)*Oou5;
w73 = w73 + deltaw73;
w74 = w74 + deltaw74;
w75 = w75 + deltaw75;
deltaw30 = 0.25*eta*(e6*(1+Oou6)*(1-Oou6)*w63+e7*(1+Oou7)*(1-Oou7)*w73)*(1+Oou3)*(1-Oou3)*Oou0;
deltaw31 = 0.25*eta*(e6*(1+Oou6)*(1-Oou6)*w63+e7*(1+Oou7)*(1-Oou7)*w73)*(1+Oou3)*(1-Oou3)*Oou1;
deltaw32 = 0.25*eta*(e6*(1+Oou6)*(1-Oou6)*w63+e7*(1+Oou7)*(1-Oou7)*w73)*(1+Oou3)*(1-Oou3)*Oou2;
deltaw40 = 0.25*eta*(e6*(1+Oou6)*(1-Oou6)*w64+e7*(1+Oou7)*(1-Oou7)*w74)*(1+Oou4)*(1-Oou4)*Oou0;
deltaw41 = 0.25*eta*(e6*(1+Oou6)*(1-Oou6)*w64+e7*(1+Oou7)*(1-Oou7)*w74)*(1+Oou4)*(1-Oou4)*Oou1;
deltaw42 = 0.25*eta*(e6*(1+Oou6)*(1-Oou6)*w64+e7*(1+Oou7)*(1-Oou7)*w74)*(1+Oou4)*(1-Oou4)*Oou2;
deltaw50 = 0.25*eta*(e6*(1+Oou6)*(1-Oou6)*w65+e7*(1+Oou7)*(1-Oou7)*w75)*(1+Oou5)*(1-Oou5)*Oou0;
deltaw51 = 0.25*eta*(e6*(1+Oou6)*(1-Oou6)*w65+e7*(1+Oou7)*(1-Oou7)*w75)*(1+Oou5)*(1-Oou5)*Oou1;
deltaw52 = 0.25*eta*(e6*(1+Oou6)*(1-Oou6)*w65+e7*(1+Oou7)*(1-Oou7)*w75)*(1+Oou5)*(1-Oou5)*Oou2;
w30 = w30 + deltaw30;
w31 = w31 + deltaw31;
w32 = w32 + deltaw32;
w40 = w40 + deltaw40;
w41 = w41 + deltaw41;
w42 = w42 + deltaw42;
w50 = w50 + deltaw50;
w51 = w51 + deltaw51;
w52 = w52 + deltaw52;
end;
w =[w63 w64 w65;w73 w74 w75;]
v = [w30 w40 w50;w31 w41 w51;w32 w42 w52;]
Oou6
Oou7