《神经网络导论》实验二-双向联想记忆 (1)Word下载.docx
《《神经网络导论》实验二-双向联想记忆 (1)Word下载.docx》由会员分享,可在线阅读,更多相关《《神经网络导论》实验二-双向联想记忆 (1)Word下载.docx(6页珍藏版)》请在冰点文库上搜索。
EA,B=-12ATWB-12BTWTA=-ATWB
三、实验内容及步骤
2、连接权值W=
422-20-20-240
200-420202-2
200020-2-422
-2-4002020-2-2
0222-4-20200
-2000-2024-2-2
02-2202-4-204
-20-4024-20-22
0-22-20-2420-4
0-2220-20-200
2400-20-2022
02-2-2020200
稳定状态能量值:
E=-158-142-158-146
3、验证网络的联想能力
对B2采用W进行迭代直到稳定求得的A‘2与原A2相同。
对A3采用W进行迭代直到稳定求得的B‘3与原B3相同。
4、验证网络抗噪能力
取A1畸变度为3,观察10次输出,显示能量
correct:
1andenergy:
-82-158
-90-158
0andenergy:
-98-146
-106-158
-98-158
-98-158-158-158
5、噪声大小对联想能力的影响
分别对A取反1到3位数各验证300次:
thedegreeofaccuracyfromA1toA4:
1bit2bits3bits
1.00000.97330.8400
1.00000.95670.8067
0.91000.76000.5633
1.00000.88330.5767
分别对B取反1到3位数验证100次:
thedegreeofaccuracyfromB1toB4:
1.00000.70000.3200
0.82000.72000.3500
0.94000.55000.1600
0.76000.64000.1600
四、实验思考题
1、在实验步骤4中观察网络能量E是如何变化的?
根据网络机理说明原因。
从步骤4中可以看出,网络能量E随迭代的次数而减小。
这是因为双向联想网络是Hopfield网络的一种,网络总是朝着能量函数E减小的方向运动,且达到稳态时,E取极小值。
2、如果我们想要“擦除”存储矢量中的某对(Ai,Bi),应如何调整网络?
双向联想记忆网络特性主要体现在权值W上,如果想要“擦除”存储矢量中的某对(Ai,Bi),取:
W'
=W-Ai∙BiT
3、通过总结第5步和第6步的实验结果,得出什么结论?
简要解释其中的原因。
随着矢量位取反的位数增多,噪声增大,网络联想正确率剧烈下降,说明网络恢复的记忆力是有限的。
这种二进制的存储映射是一对一的,容差性差。
五、实验结论
对于Kosko型其次双向联想记忆网络:
1随着时间的推移,网络在状态空间中总是朝着能量函数减小的方向移动,当网络达到稳定时,能量取得极小值。
2随着网络噪声的增大,网络联想正确率下降,同时说明网络恢复的记忆力是有限的。
六、MATLAB源程序
clear;
clc
disp('
实验步骤2显示连接权矩阵及能量值'
);
A=[A1A2A3A4];
B=[B1B2B3B4];
W=zeros(15,10);
fors=1:
4
W=W+A(:
s)*B(:
s)'
;
end
W
E=zeros(4,1);
%E=diag(-A'
*W*B);
E(s)=-A(:
*W*B(:
s);
E
clearEs
实验步骤3验证网络联想能力'
)
1chooseB2totest'
B2_fo=B2;
B2_la=1;
A2_fo=2;
A2_la=3;
while~isequal(A2_fo,A2_la)||~isequal(B2_fo,B2_la)
A2_fo=hardlims(W*B2_fo);
B2_la=hardlims(W'
*A2_fo);
A2_la=hardlims(W*B2_la);
B2_fo=hardlims(W'
*A2_la);
correctornot:
'
disp(isequal(A2,A2_la)&
&
isequal(B2,B2_la))
clearB2_foB2_laA2_foA2_la
2chooseA3totest'
A3_fo=A3;
A3_la=1;
B3_fo=2;
B3_la=3;
while~(isequal(A3_fo,A3_la)&
isequal(B3_fo,B3_la))
B3_fo=hardlims(W'
*A3_fo);
A3_la=hardlims(W*B3_fo);
B3_la=hardlims(W'
*A3_la);
A3_fo=hardlims(W*B3_la);
disp(isequal(A3,A3_la)&
isequal(B3,B3_la))
clearB3_foB3_laA3_foA3_la
实验步骤4验证网络的抗噪能力'
取A1畸变度为3,观察10次输出,显示能量'
forqbx=1:
10
A1_zs=A1.*(1-2*randerr(1,15,3)'
A1_fo=A1_zs;
Ezs=[];
A1_la=1;
B1_fo=2;
B1_la=3;
while~(isequal(A1_fo,A1_la)&
isequal(B1_fo,B1_la))
B1_fo=hardlims(W'
*A1_fo);
ezs=-A1_fo'
*W*B1_fo;
Ezs=[Ezs,ezs];
A1_la=hardlims(W*B1_fo);
B1_la=hardlims(W'
*A1_la);
ezs=-A1_la'
*W*B1_la;
A1_fo=hardlims(W*B1_la);
state3=isequal(A1,A1_la)&
isequal(B1,B1_la);
disp([strcat('
'
num2str(state3),'
andenergy:
),num2str(Ezs)]);
clearB1_foB1_laA1_foA1_lastate3ezsEzsA1_zs
实验步骤5噪声大小对联想能力的影响'
分别对A取反1到3位数各验证300次'
times=[300300300];
%循环次数向量
forqbx123=1:
3%取反1到3位数%分别取出times各项
state4=0;
%验证正确与否的状态矩阵,用0和1表示
forqbxa=1:
4%分别取出A的每一列,即A1到A4进行操作
forqbx=1:
times(qbx123)%循环次数
A_zs=A(:
qbxa).*(1-2*randerr(1,15,qbx123)'
%随机位取反
A_fo=A_zs;
%输入矢量Ai
A_la=3;
B_fo=1;
B_la=2;
%声明迭代过程矢量
while~(isequal(A_fo,A_la)&
isequal(B_fo,B_la))%Ai和Bi迭代后状态稳定了吗
B_fo=hardlims(W'
*A_fo);
A_la=hardlims(W*B_fo);
B_la=hardlims(W'
*A_la);
A_fo=hardlims(W*B_la);
state4(qbxa,qbx)=isequal(A(:
qbxa),A_la)&
isequal(B(:
qbxa),B_la);
end
disp(strcat('
whenthedegreeofdistortionis'
num2str(qbx123),'
thecorrectionsofA'
num2str(qbxa),'
:
));
tabulate(state4(qbxa,:
))
acout=state4(qbxa,:
A_C(qbxa,qbx123)=length(acout(acout==1))/times(qbx123);
end
%disp(strcat('
thestatematrixare'
%disp(state4)
实验步骤6噪声大小对联想能力的影响'
分别对B取反1到3位数验证100次'
times=[100100100];
4%分别取出B的每一列,即B1到B4进行操作
B_zs=B(:
qbxa).*(1-2*randerr(1,10,qbx123)'
B_fo=B_zs;
B_la=3;
A_fo=1;
A_la=2;
A_fo=hardlims(W*B_fo);
A_la=hardlims(W*B_la);
thecorrectionsofB'
B_C(qbxa,qbx123)=length(acout(acout==1))/times(qbx123);
1bit2bits3bits'
disp(A_C)
disp(B_C)