《神经网络导论》实验二-双向联想记忆.docx
《《神经网络导论》实验二-双向联想记忆.docx》由会员分享,可在线阅读,更多相关《《神经网络导论》实验二-双向联想记忆.docx(8页珍藏版)》请在冰豆网上搜索。
![《神经网络导论》实验二-双向联想记忆.docx](https://file1.bdocx.com/fileroot1/2022-10/3/d012db8b-a901-4661-9d27-b9486c8924c5/d012db8b-a901-4661-9d27-b9486c8924c51.gif)
《神经网络导论》实验二
双向联想记忆
专业班级硕2081
学号3112313038
姓名李海玥
完成时间2013年1月
《神经网络导论》试验二
双向联想记忆
李海玥
2013年1月
一、实验目的
熟悉Kosko型双向联想记忆网络的原理与结构,通过仿真实验掌握具体的实现方法,了解该网络的功能及性能,加深对该类网络的稳定状态和能量函数等概念的理解。
二、实验原理
联想记忆功能分为自联想和异联想,异联想也称为双向联想记忆,简写为BAM。
BAM存储器可存储两组矢量,若有如下N维矢量A和P维矢量B:
A=[a0,a1,⋯aN-1]T∈{-1,1}N
B=[b0,b1,⋯bP-1]T∈{-1,1}P
构成M对矢量As,Bs,s=0,1,⋯,M-1,给定A可经联想得到对应的标准样本B,当有噪声或残缺时,联想功能可使样本对复原。
如图1所示,与矢量A相应的一层有N个节点,另一层对应矢量B,有P个节点,两层间双向连接。
假定B到A的传输为正向,正向的权矩阵为W。
如果输入矢量由上层加入,且相应于网络中B的稳定状态,则经W之作用产生A稳定状态。
图1:
双向联想记忆网络
当任意矢量输入时,网络要经若干次次迭代计算演变至稳态,过程可示意为:
WBt→At+1
WTAt+1→Bt+2
WBt+2→At+3
⋯
直至A、B为稳态,演变过程结束。
网络学习遵从Hebb规则,若给定M个双极性矢量对:
A0,B0,A1,B1,⋯,(AM-1,BM-1)
则正,反向权矩阵为:
W=s=0M-1As,BsT
WT=s=0M-1Bs,AsT
如果BAM网络神经元函数值为0,则称为齐次BAM网络,其能量函数为:
EA,B=-12ATWB-12BTWTA=-ATWB
若神经元的非线性函数为f,则描述齐次BAM动态特性的差分方程为:
²正向联想(B⟹A)
ait+1=f[j=1Pwijbjt]
²反向联想(A⇒B)
bjt+2=f[j=1Pwijai(t+1)]
三、实验内容及步骤
1、选择齐次Kosko型BAM网络编制程序实现联想记忆。
设神经元非线性函数f为硬限幅函数,即f(x)=san(x);当x=0时,神经元的输出维持不变。
2、根据Hebb规则算出网络的连接权矩阵并记录;算出四对矢量所对应的稳定状态的能量值。
²连接权值W=
4 2 2 -2 0 -2 0 -2 4 0
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
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
²稳定状态能量值:
E=[-158-142-158-146]
3、验证网络的联想能力
经过Matlab编程验证,经过以上计算出的权值W和对称硬限幅函数的非线性作用,选择标准样本Ai进行迭代,观察上下两层的状态是否为(Ai,Bi)。
同样任选Bi输入观察稳定后的结果。
经过前面计算出的权值W和符号函数非线性作用,进行一次迭代,联想成功没有偏差。
即
Ai=sgnW*Bi,i=1,2,3,4
Bi=sgnWT*Ai,i=1,2,3,4
4、验证网络抗噪能力
以标准矢量A1随机两位取反形成畸变矢量
A1’=[1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1]T,
带入网络中迭代至稳定。
得到结果
A’1=A1,B’1=B1
过程经过两次迭代期间能量变化为:
E0=-118,E1=-142,E2=-158
5、噪声大小对联想能力的影响
统计4个矢量分别在1~3位上取反时的联想正确率。
对于每种情况取2000次运算得到平均性能。
表1噪声对网络联想力的影响
标准矢量
取反位数
迭代次数平均值
联想正确率
A1
1
2.0000
100%
2
2.0000
98.97%
3
2.0975
95.58%
A2
1
2.0000
100%
2
2.0160
98.49%
3
2.1765
91.68%
A3
1
1.9200
99.52%
2
1.9905
98.51%
3
2.0636
95.21%
A4
1
2.0000
100%
2
2.0130
99.61%
3
2.0975
89.71%
6、正反向联想抗噪能力
统计4个B矢量分别在1~3位取反时的联想正确率,记录结果并与第5步结果比较。
表2反向联想抗噪能力
标准矢量
取反位数
迭代次数平均值
联想正确率
B1
1
2.0000
100%
2
2.2160
91.75%
3
2.3360
77.03%
B2
1
1.8705
97.80%
2
2.0685
94.52%
3
2.3395
80.03%
B3
1
1.9020
99.02%
2
2.0270
91.43%
3
2.2030
74.40%
B4
1
1.7955
97.95%
2
2.0165
92.17%
3
2.1815
76.89%
四、实验思考题
1、在实验步骤4中观察网络能量E是如何变化的?
根据网络机理说明原因。
从步骤4中可以看出,网络能量E随着跌代的次数而减小。
这是因为双向联想网络是Hopfield网络的一种,所以也具有Hopfield网络特性。
而对于标准Hopfield网络,其能量函数E对时间的导数为负值,
dEdt=-iCidVidt2dfi-1VidVi≤0
也就是说网络总是朝着能量函数E减小的方向运动,且达到稳态时,E取极小值。
2、如果我们想要“擦除”存储矢量中的某对(Ai,Bi),应如何调整网络?
双向联想记忆网络特性主要体现在权值W上,如果想要“擦除”存储矢量中的某对(Ai,Bi),只需要对权值进行调整:
W'=s=0,s≠iM-1As,BsT
或者更新权值为:
W'=W-Ai∙BiT
3、通过总结第5步和第6步的实验结果,能得出什么结论?
简要解释其中的原因。
²随着矢量位取反的位数增多,即噪声的增大,网络达到稳态所需迭代次数增加。
²随着网络噪声的增大,网络联想正确率下降,说明网络恢复的记忆力是有限的。
²网络对各组矢量的联想记忆力是有限的,如果对其中一组矢量的记忆力增强,则另一组必定减弱。
²对不同样本组记忆力大体相同,差异不大。
五、实验结论
双向联想记忆网络是一种特殊的Hopfield神经网络,具有信息记忆和信息记忆的功能。
Hopfield神经网络的特点是每个神经元的输出要反馈给除自身以外的其他所有神经元。
那么设网络上共有L个神经预案,使得W成为一个L×L的矩阵,我们将L个神经元分成N、P两组。
如果每组内任一个神经元的输出都反馈给另一组的神经元输入,而不反馈给本组神经元输入端,这样可以将不反馈的部分的权值视为0。
所以Kosko型BAM网络就可以视为一种特殊的Hopfield网络。
对于双向联想记忆网络,它具有Hopfield网络所具有的一般特性,在实验中可以看到,随着时间的推移,网络在状态空间中总是朝着能量函数减小的方向移动,当网络达到稳定时,能量取得极小值。
随着网络噪声的增大,网络达到稳态所需迭代次数增加,网络联想正确率下降,同时说明网络恢复的记忆力是有限的。
Matlab主要源代码
1、Hebb规则
A(:
1)=[1-11-11-11-11-11-11-11];
A(:
2)=[11-1-111-1-111-1-111-1];
A(:
3)=[111-1-1-1111-1-1-1111];
A(:
4)=[1111-1-1-1-11111-1-1-1];
B(:
1)=[1111-1-1-1-111];
B(:
2)=[111-1-1-1111-1];
B(:
3)=[11-1-111-1-111];
B(:
4)=[1-11-11-11-11-1];
w(1:
15,1:
10)=0;e(1:
4)=0;
fori=1:
4
w=w+A(:
i)*B(:
i)';
end
forj=1:
4
e(j)=-(A(:
j))'*w*B(:
j);
end
A1=A(:
1);B1=B(:
1);
temp(15,1)=0;TimeNum=0;
%isequal判断数组容量是否相等;
%hardlims对称硬限幅功能传输函数;
%%验证网络联想能力;
whileisequal(A1,temp)
temp=A1;
A1=hardlims(w*B1);
B1=hardlims(w*A1);
TimeNum=TimeNum+1;
End
2、网络迭代算法
%A1任两位取反
A1=A(:
1).*(1-2*randerr(1,15,2)');e(1:
k)=0;
temp(15,1)=0;k=0;
ifA1~=A(:
1)
temp=A1(0);
B1(k+1)=hardlims(w'*A1(k));
k=k+1;
A1(k+1)=hardlims(w*B1(k));
end
forj=1:
k
e(j)=-(A(:
j))'*w*B(:
j);
end
ChangeNum=length(find(A1~=A(:
1)))
disp('timesofinteration');disp(k);
disp('E');disp(e);
disp('changenumber');disp(ChangeNum);
disp('ratioofcorrectness');disp(1-ChangeNum/length(A1));
3、算法同2,重复2000次取平均值。