《神经网络导论》实验二 双向联想记忆
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for qbx=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迭代后状态稳定了吗
构成M对矢量 ,给定A可经联想得到对应的标准样本B,当有噪声或残缺时,联想功能可使样本对复原。
如图1所示,与矢量A相应的一层有N个节点,另一层对应矢量B,有P个节点,两层间双向连接。假定B到A的传输为正向,正向的权矩阵为W。
如果输入矢量由上层加入,且相应于网络中B的稳定状态,则经W之作用产生A稳定状态。
% disp(state4)
end
disp('实验步骤6噪声大小对联想能力的影响')
disp('分别对B取反1到3位数验证100次')
times=[100 100 100];%循环次数向量
for qbx123=1:3 %取反1到3位数%分别取出times各项
state4=0; %验证正确与否的状态矩阵,用0和1表示
correct:1 and energy:-98 -158 -158 -158
correct:1 and energy:-98 -158
5、噪声大小对联想能力的影响
分别对A取反1到3位数各验证300次:
the degree of accuracy from A1 to A4:
1bit 2bits 3bits
end
disp(strcat('when the degree of distortion is ',num2str(qbx123),', the corrections of A',num2str(qbxa),': '));
tabulate(state4(qbxa,:))
acout=state4(qbxa,:);
B3_la=hardlims(W'*A3_la);
A3_fo=hardlims(W*B3_la);
end
disp('correct or not : ')
disp(isequal(A3,A3_la)&&isequal(B3,B3_la))
clear B3_fo B3_la A3_fo A3_la
disp('实验步骤4验证网络的抗噪能力')
disp('取A1畸变度为3,观察10次输出,显示能量')
for qbx=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))
2 0 0 -4 2 0 2 0 2 -2
2 0 0 0 2 0 -2 -4 2 2
-2 -4 0 0 2 0 2 0 -2 -2
0 2 2 2 -4 -2 0 2 0 0
-2 0 0 0 -2 0 2 4 -2 -2
0 2 -2 2 0 2 -4 -2 0 4
-2 0 -4 0 2 4 -2 0 -2 2
end
state4(qbxa,qbx)=isequal(A(:,qbxa),A_la)&&isequal(B(:,qbxa),B_la);
end
disp(strcat('when the degree of distortion is ',num2str(qbx123),', the corrections of B',num2str(qbxa),': '));
当任意矢量输入时,网络要经若干次次迭代计算演变至稳态,过程可示意为:
直至A、B为稳态,演变过程结束。
网络学习遵从Hebb规则,若给定M个双极性矢量对:
则正,反向权矩阵为:
如果BAM网络神经元函数值为0,则称为齐次BAM网络,其能量函数为:
三、实验内容及步骤
2、连接权值W=
4 2 2 -2 0 -2 0 -2 4 0
B_fo=hardlims(W'*A_fo);
A_la=hardlims(W*B_fo);
B_la=hardlims(W'*A_la);
A_fo=hardlims(W*B_la);
end
state4(qbxa,qbx)=isequal(A(:,qbxa),A_la)&&isequal(B(:,qbxa),B_la);
A=[ A1 A2 A3 A4 ];B=[ B1 B2 B3 B4 ];W=zeros(15,10);
for s=1:4
W=W+A(:,s)*B(:,s)';
end
W
E=zeros(4,1);
% E= diag(-A'*W*B);
for s=1:4
E(s)=-A(:,s)'*W*B(:,s);
end
end
state3=isequal(A1,A1_la)&&isequal(B1,B1_la);
disp([strcat('correct:',num2str(state3),' and energy:'),num2str(Ezs)]);
end
clear B1_fo B1_la A1_fo A1_la state3 ezs Ezs A1_zs
1.0000 0.9733 0.8400
1.0000 0.9567 0.8067
0.9100 0.7600 0.5633
1.0000 0.8833 0.5767
分别对B取反1到3位数验证100次:
the degree of accuracy from B1 to B4:
1bit 2bits 3bits
correct:0 and energy:-98 -146
correct:1 and energy:-90 -158
correct:1 and energy:-106 -158
correct:1 and energy:-98 -158
correct:1 and energy:-98 -158
correct:1 and energy:-98 -158
disp('实验步骤5噪声大小对联想能力的影响')
disp('分别对A取反1到3位数各验证300次')
times=[300 300 300];%循环次数向量
for qbx123=1:3 %取反1到3位数%分别取出times各项
state4=0; %验证正确与否的状态矩阵,用0和1表示
for qbxa=1:4 %分别取出A的每一列,即A1到A4进行操作
B2_la=hardlims(W'*A2_fo);
A2_la=hardlims(W*B2_la);
B2_fo=hardlims(W'*A2_la);
end
disp('correct or not : ')
disp(isequal(A2,A2_la)&&isequal(B2,B2_la))
clear B2_fo B2_la A2_fo A2_la
while ~(isequal(A_fo,A_la)&&isequal(B_fo,B_la)) %Ai和Bi迭代后状态稳定了吗
A_fo=hardlims(W*B_fo);
B_la=hardlims(W'*A_fo);
A_la=hardlims(W*B_la);
B_fo=hardlims(W'*A_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;Ezs=[Ezs,ezs];
A1_fo=hardlims(W*B1_la);
disp('2 choose A3 to test')
A3_fo=wk.baidu.com3;
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);
E
clear E s
disp('实验步骤3验证网络联想能力')
disp('1 choose B2 to test')
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);
2、如果我们想要“擦除”存储矢量中的某对(Ai,Bi),应如何调整网络?
双向联想记忆网络特性主要体现在权值W上,如果想要“擦除”存储矢量中的某对(Ai,Bi),取:
3、通过总结第5步和第6步的实验结果,得出什么结论?简要解释其中的原因。
随着矢量位取反的位数增多,噪声增大,网络联想正确率剧烈下降,说明网络恢复的记忆力是有限的。这种二进制的存储映射是一对一的,容差性差。
实验2双向联想记忆
一、实验目的
熟悉Kosko型双向联想记忆网络的原理与结构,通过仿真实验掌握具体的实现方法,了解该网络的功能及性能,加深对该类网络的稳定状态和能量函数等概念的理解。
二、实验原理
联想记忆功能分为自联想和异联想,异联想也称为双向联想记忆,简写为BAM。BAM存储器可存储两组矢量,若有如下N维矢量A和P维矢量B:
4 2 2 -2 0 -2 0 -2 4 0
0 -2 2 -2 0 -2 4 2 0 -4
0 -2 2 2 0 -2 0 -2 0 0
-2 -4 0 0 2 0 2 0 -2 -2
2 4 0 0 -2 0 -2 0 2 2
0 2 -2 -2 0 2 0 2 0 0
0 2 -2 2 0 2 -4 -2 0 4
for qbxa=1:4 %分别取出B的每一列,即B1到B4进行操作
for qbx=1:times(qbx123) %循环次数
B_zs= B(:,qbxa).*(1-2*randerr(1,10,qbx123)');%随机位取反
B_fo=B_zs; %输入矢量Ai
B_la=3;A_fo=1;A_la=2;%声明迭代过程矢量
五、实验结论
对于Kosko型其次双向联想记忆网络:
1随着时间的推移,网络在状态空间中总是朝着能量函数减小的方向移动,当网络达到稳定时,能量取得极小值。
2随着网络噪声的增大,网络联想正确率下降,同时说明网络恢复的记忆力是有限的。
六、MATLAB源程序
clear;clc
disp('实验步骤2显示连接权矩阵及能量值');
稳定状态能量值:
3、验证网络的联想能力
对 采用W进行迭代直到稳定求得的 与原 相同。
对 采用W进行迭代直到稳定求得的 与原 相同。
4、验证网络抗噪能力
取 畸变度为3,观察10次输出,显示能量
correct:1 and energy:-82 -158
correct:1 and energy:-90 -158
A_C(qbxa,qbx123)=length(acout(acout==1))/times(qbx123);
end
% disp(strcat('when the degree of distortion is ',num2str(qbx123),', the state matrix are'));
tabulate(state4(qbxa,:))
acout=state4(qbxa,:);
B_C(qbxa,qbx123)=length(acout(acout==1))/times(qbx123);
end
% disp(strcat('when the degree of distortion is ',num2str(qbx123),', the state matrix are'));
% disp(state4)
end
disp('the degree of accuracy from A1 to A4:')
1.0000 0.7000 0.3200
0.8200 0.7200 0.3500
0.9400 0.5500 0.1600
0.7600 0.6400 0.1600
四、实验思考题
1、在实验步骤4中观察网络能量E是如何变化的?根据网络机理说明原因。
从步骤4中可以看出,网络能量E随迭代的次数而减小。这是因为双向联想网络是Hopfield网络的一种,网络总是朝着能量函数E减小的方向运动,且达到稳态时,E取极小值。
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迭代后状态稳定了吗
构成M对矢量 ,给定A可经联想得到对应的标准样本B,当有噪声或残缺时,联想功能可使样本对复原。
如图1所示,与矢量A相应的一层有N个节点,另一层对应矢量B,有P个节点,两层间双向连接。假定B到A的传输为正向,正向的权矩阵为W。
如果输入矢量由上层加入,且相应于网络中B的稳定状态,则经W之作用产生A稳定状态。
% disp(state4)
end
disp('实验步骤6噪声大小对联想能力的影响')
disp('分别对B取反1到3位数验证100次')
times=[100 100 100];%循环次数向量
for qbx123=1:3 %取反1到3位数%分别取出times各项
state4=0; %验证正确与否的状态矩阵,用0和1表示
correct:1 and energy:-98 -158 -158 -158
correct:1 and energy:-98 -158
5、噪声大小对联想能力的影响
分别对A取反1到3位数各验证300次:
the degree of accuracy from A1 to A4:
1bit 2bits 3bits
end
disp(strcat('when the degree of distortion is ',num2str(qbx123),', the corrections of A',num2str(qbxa),': '));
tabulate(state4(qbxa,:))
acout=state4(qbxa,:);
B3_la=hardlims(W'*A3_la);
A3_fo=hardlims(W*B3_la);
end
disp('correct or not : ')
disp(isequal(A3,A3_la)&&isequal(B3,B3_la))
clear B3_fo B3_la A3_fo A3_la
disp('实验步骤4验证网络的抗噪能力')
disp('取A1畸变度为3,观察10次输出,显示能量')
for qbx=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))
2 0 0 -4 2 0 2 0 2 -2
2 0 0 0 2 0 -2 -4 2 2
-2 -4 0 0 2 0 2 0 -2 -2
0 2 2 2 -4 -2 0 2 0 0
-2 0 0 0 -2 0 2 4 -2 -2
0 2 -2 2 0 2 -4 -2 0 4
-2 0 -4 0 2 4 -2 0 -2 2
end
state4(qbxa,qbx)=isequal(A(:,qbxa),A_la)&&isequal(B(:,qbxa),B_la);
end
disp(strcat('when the degree of distortion is ',num2str(qbx123),', the corrections of B',num2str(qbxa),': '));
当任意矢量输入时,网络要经若干次次迭代计算演变至稳态,过程可示意为:
直至A、B为稳态,演变过程结束。
网络学习遵从Hebb规则,若给定M个双极性矢量对:
则正,反向权矩阵为:
如果BAM网络神经元函数值为0,则称为齐次BAM网络,其能量函数为:
三、实验内容及步骤
2、连接权值W=
4 2 2 -2 0 -2 0 -2 4 0
B_fo=hardlims(W'*A_fo);
A_la=hardlims(W*B_fo);
B_la=hardlims(W'*A_la);
A_fo=hardlims(W*B_la);
end
state4(qbxa,qbx)=isequal(A(:,qbxa),A_la)&&isequal(B(:,qbxa),B_la);
A=[ A1 A2 A3 A4 ];B=[ B1 B2 B3 B4 ];W=zeros(15,10);
for s=1:4
W=W+A(:,s)*B(:,s)';
end
W
E=zeros(4,1);
% E= diag(-A'*W*B);
for s=1:4
E(s)=-A(:,s)'*W*B(:,s);
end
end
state3=isequal(A1,A1_la)&&isequal(B1,B1_la);
disp([strcat('correct:',num2str(state3),' and energy:'),num2str(Ezs)]);
end
clear B1_fo B1_la A1_fo A1_la state3 ezs Ezs A1_zs
1.0000 0.9733 0.8400
1.0000 0.9567 0.8067
0.9100 0.7600 0.5633
1.0000 0.8833 0.5767
分别对B取反1到3位数验证100次:
the degree of accuracy from B1 to B4:
1bit 2bits 3bits
correct:0 and energy:-98 -146
correct:1 and energy:-90 -158
correct:1 and energy:-106 -158
correct:1 and energy:-98 -158
correct:1 and energy:-98 -158
correct:1 and energy:-98 -158
disp('实验步骤5噪声大小对联想能力的影响')
disp('分别对A取反1到3位数各验证300次')
times=[300 300 300];%循环次数向量
for qbx123=1:3 %取反1到3位数%分别取出times各项
state4=0; %验证正确与否的状态矩阵,用0和1表示
for qbxa=1:4 %分别取出A的每一列,即A1到A4进行操作
B2_la=hardlims(W'*A2_fo);
A2_la=hardlims(W*B2_la);
B2_fo=hardlims(W'*A2_la);
end
disp('correct or not : ')
disp(isequal(A2,A2_la)&&isequal(B2,B2_la))
clear B2_fo B2_la A2_fo A2_la
while ~(isequal(A_fo,A_la)&&isequal(B_fo,B_la)) %Ai和Bi迭代后状态稳定了吗
A_fo=hardlims(W*B_fo);
B_la=hardlims(W'*A_fo);
A_la=hardlims(W*B_la);
B_fo=hardlims(W'*A_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;Ezs=[Ezs,ezs];
A1_fo=hardlims(W*B1_la);
disp('2 choose A3 to test')
A3_fo=wk.baidu.com3;
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);
E
clear E s
disp('实验步骤3验证网络联想能力')
disp('1 choose B2 to test')
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);
2、如果我们想要“擦除”存储矢量中的某对(Ai,Bi),应如何调整网络?
双向联想记忆网络特性主要体现在权值W上,如果想要“擦除”存储矢量中的某对(Ai,Bi),取:
3、通过总结第5步和第6步的实验结果,得出什么结论?简要解释其中的原因。
随着矢量位取反的位数增多,噪声增大,网络联想正确率剧烈下降,说明网络恢复的记忆力是有限的。这种二进制的存储映射是一对一的,容差性差。
实验2双向联想记忆
一、实验目的
熟悉Kosko型双向联想记忆网络的原理与结构,通过仿真实验掌握具体的实现方法,了解该网络的功能及性能,加深对该类网络的稳定状态和能量函数等概念的理解。
二、实验原理
联想记忆功能分为自联想和异联想,异联想也称为双向联想记忆,简写为BAM。BAM存储器可存储两组矢量,若有如下N维矢量A和P维矢量B:
4 2 2 -2 0 -2 0 -2 4 0
0 -2 2 -2 0 -2 4 2 0 -4
0 -2 2 2 0 -2 0 -2 0 0
-2 -4 0 0 2 0 2 0 -2 -2
2 4 0 0 -2 0 -2 0 2 2
0 2 -2 -2 0 2 0 2 0 0
0 2 -2 2 0 2 -4 -2 0 4
for qbxa=1:4 %分别取出B的每一列,即B1到B4进行操作
for qbx=1:times(qbx123) %循环次数
B_zs= B(:,qbxa).*(1-2*randerr(1,10,qbx123)');%随机位取反
B_fo=B_zs; %输入矢量Ai
B_la=3;A_fo=1;A_la=2;%声明迭代过程矢量
五、实验结论
对于Kosko型其次双向联想记忆网络:
1随着时间的推移,网络在状态空间中总是朝着能量函数减小的方向移动,当网络达到稳定时,能量取得极小值。
2随着网络噪声的增大,网络联想正确率下降,同时说明网络恢复的记忆力是有限的。
六、MATLAB源程序
clear;clc
disp('实验步骤2显示连接权矩阵及能量值');
稳定状态能量值:
3、验证网络的联想能力
对 采用W进行迭代直到稳定求得的 与原 相同。
对 采用W进行迭代直到稳定求得的 与原 相同。
4、验证网络抗噪能力
取 畸变度为3,观察10次输出,显示能量
correct:1 and energy:-82 -158
correct:1 and energy:-90 -158
A_C(qbxa,qbx123)=length(acout(acout==1))/times(qbx123);
end
% disp(strcat('when the degree of distortion is ',num2str(qbx123),', the state matrix are'));
tabulate(state4(qbxa,:))
acout=state4(qbxa,:);
B_C(qbxa,qbx123)=length(acout(acout==1))/times(qbx123);
end
% disp(strcat('when the degree of distortion is ',num2str(qbx123),', the state matrix are'));
% disp(state4)
end
disp('the degree of accuracy from A1 to A4:')
1.0000 0.7000 0.3200
0.8200 0.7200 0.3500
0.9400 0.5500 0.1600
0.7600 0.6400 0.1600
四、实验思考题
1、在实验步骤4中观察网络能量E是如何变化的?根据网络机理说明原因。
从步骤4中可以看出,网络能量E随迭代的次数而减小。这是因为双向联想网络是Hopfield网络的一种,网络总是朝着能量函数E减小的方向运动,且达到稳态时,E取极小值。