资源描述
实验三 Hopfield 网络学习算法的简单应用
1.不同印刷版本数字8的识别
一. 实验目的
1. 加深对Hopfield 网络学习算法的理解
2. 通过实验了解Hopfield学习算法的工作原理
3. 通过上机实验掌握具体的实现方法
二. 实验原理
Hopfield 网络
Hopfield 网络是一种具有全互联结构的递归神经网络,其具有反馈机制的非线性动力学系统,反映了生物神经系统结构的复杂性。
该网络一般分为离散型(DHNN)和连续型(CHNN)两种,其标准的网络能量函数可以表示为:.式中:是神经元i和神经元j的连接权值;是神经元i的输入阈值;和分别是神经元i和神经元j的输出值。
在满足一定条件下,能量函数的能量在网络运行过程中不断减小,最后趋于稳定的平衡状态。Hopfield 网络自提出以来,已成功应用于多个方面。
网络的定义
一个 n 阶的 Hopfield 网络是一个五元组:
其中:
1)GF:规定 DHN(n) 拓扑结构的扩展模糊图:
其中,N(GF) = {Ni(qi)½1£i£n} 是非空神经元集合,每一个神经元 Ni 附有阈值 qi;E(GF) = {eij½1£i,j£n} 是边的集合,eij 是 Ni®Nj 的边; A(GF) = (wij)n´n 是联系矩阵,wij 是 Ni®Nj 的联系效率。
2)IF Í N(GF):输入域。
3)OF Í N(GF):输出域。
4)WA:工作算法,令 oi(t) Î {-1,1} 为 Ni 在 t 时刻的状态,o(t) =(o1(t),o2(t),…,on(t))T 为 N(GF)在 t 时刻的状态向量 (t=0,1,2,…),则:
其中,oI Î {-1,1}nI ´1 (nI £n) 和 oO Î {-1,1}nO ´1 (nO £n) 分别为 IF 和 OF 的状态向量。
5) OA:自组织算法
对 Hopfield 网络而言,一般情况下,IF = OF = N(GF),即: oI = oO = o。实际上,给定神经元的阈值和神经元之间的联系效率即可唯一地确定一个Hopfield 网络,给定神经元的阈值和神经元之间的联系效率即可唯一地确定一个Hopfield 网络。
因此,一个 n 阶的 Hopfield 网络可简记为:。
其中:
1) W = A(GF) :DHN(n) 联系矩阵。2) Q =(q1,q2,…,qn)T:DHN(n) 阈值向量
N阶DHN 拓扑结构
工作算法
Hopfield 网络的工作模式:
设 N 为 n 阶 Hopfield 网络 DHN(n) 每一时刻需要调整其状态的神经元的数量,则按 N 的数量:
a. 串行模式 (Serial Mode):N = 1
b. 并行模式 (Parallel Mode): N≥2.(部分并行模式和全并行模式)
按每一时刻选择 DHN(n) 需要调整其状态的神经元的方式的不同,又可分为:
c. 确定模式 (Deterministic Mode)
d. 随机模式 (Random Mode)
对于 Hopfield 网络的工作算法 WA:
如果在给定的离散时刻 tÎ{0,1,2,…},NSk (kÎ {1,2,…,m} 的选择则是随机地,则 WA 为随机工作模式,否则,为确定性工作模式。
如果 "kÎ {1,2,…,m},|Ik| = 1,即每一个集合 NSk (kÎ {1,2,…,m} 中只有一个神经元,则 WA 为串行模式;如果 m=1,则 WA 为全并行模式;如果 $kÎ {1,2,…,m},1<|Ik|<m,则 WA 为部分并行模式。
Hopfield 网络记忆或学习
Hopfield 网络的运行过程是将初始状态转移至稳定状态的过程。Hopfield 网络由初始状态运行至稳定状态的过程可以被理解为神经系统的联想记忆过程。稳定状态就是 Hopfield 网络记忆的内容。
外积法 (Outer Product Method) 是 Hopfield 网络综合设计方法之一。该方法源于 Hebb 学习律。
Hebb 学习律:设有一个 n 维的 Hopfield 网络DHN(n),对任意 i,jÎ{1,2,…,n},若 DHN(n) 的状态值 oi 和 oj 符号相同,即 DHN(n) 的神经元 Ni 和 Nj 同时处于兴奋或抑制,则它们的联系效率 wij 应该得以加强,反之, wij 应该减弱。
外积法 (1):
向量形式为:。
外积法 (2):
相应的向量形式为:
三. 实验内容
以数字 8 为例,选择 N 个不同印刷字体的 8,编码后对其进行正交化,然后将其作为范例集合 Exemplar = {O(s)|s=1,2,…,N} 中的范例。
a. 编码: O(9) = (-1, -1, -1,-1,-1,1,1,…)T
b. 构造 Hopfield 网络:目标是识别 8
c. 验证范例的可识别性以及考察非范例的含噪声模式的可识别性
本次实验共准备了7种不同印刷体的8,并对他们进行了逐一编码,令1代表白,-1代表黑。
从而得到整合后的目标向量,并对他们设计相应的hopfield神经网络。
接下来依次读入待测试的印刷体8以及含噪声的印刷体8,如下:
利用之前设计好的神经网络对其进行仿真,得到结果如下所示:
通过上图我们可以看到,仿真结果1为对测试样本的识别,可以很好地呈现出数字8.仿真结果2为对含噪样本的识别,,大体上可以看到8的形状,相对于原图,去除了一些噪点。Hopfield网络可以很好地对范例进行识别,对含噪图可以进行大体上的识别。
四. 附录
clear;
clc;
% 读入数字图片,为个人用画图板制作的图片
x = imread('08.bmp');
d=size(x);
%彩色转灰度图
if length(d)==3
I = rgb2gray(x);
else
I=x;
end
I0 = featureC(I);
I00 = I0';
x = imread('18.bmp');
d=size(x);
%彩色转灰度图
if length(d)==3
I = rgb2gray(x);
else
I=x;
end
I1 = featureC(I);
I11 = I1';
x = imread('28.bmp');
d=size(x);
%彩色转灰度图
if length(d)==3
I = rgb2gray(x);
else
I=x;
end
I2 = featureC(I);
I22 = I2';
x = imread('38.bmp');
d=size(x);
%彩色转灰度图
if length(d)==3
I = rgb2gray(x);
else
I=x;
end
I3 = featureC(I);
I33 = I3';
x = imread('48.bmp');
d=size(x);
%彩色转灰度图
if length(d)==3
I = rgb2gray(x);
else
I=x;
end
I4 = featureC(I);
I44 = I4';
x = imread('58.bmp');
d=size(x);
%彩色转灰度图
if length(d)==3
I = rgb2gray(x);
else
I=x;
end
I5 = featureC(I);
I55 = I5';
x = imread('68.bmp');
d=size(x);
%彩色转灰度图
if length(d)==3
I = rgb2gray(x);
else
I=x;
end
I6 = featureC(I);
I66 = I6';
%总的目标向量
T=[I00 I11 I22 I33 I44 I55 I66];
%设计hopfield网络
net=newhop(T);
%定义测试样本
x = imread('test8.bmp');
d=size(x);
%彩色转灰度图
if length(d)==3
I = rgb2gray(x);
else
I=x;
end
Itest = featureC(I);
Itest1 =Itest';
x = imread('test188.bmp');
d=size(x);
%彩色转灰度图
if length(d)==3
I = rgb2gray(x);
else
I=x;
end
Itest = featureC(I);
Itest2 =Itest';
%网络仿真
for i=1:16
T=[I00(:,i) I11(:,i) I22(:,i) I33(:,i) I55(:,i) I66(:,i)];
net=newhop(T); %设计hopfield网络
y1(:,i)=sim(net,1,[],Itest1(:,i));
end
for i=1:8
for j=1:16
if y1(i,j)<=0
y1(i,j)=-1;
else
y1(i,j)=1;
end
end
end
for i=1:16
T=[I00(:,i) I11(:,i) I22(:,i) I33(:,i) I55(:,i) I66(:,i)];
net=newhop(T); %设计hopfield网络
y2(:,i)=sim(net,1,[],Itest2(:,i));
end
for i=1:8
for j=1:16
if y2(i,j)<=0
y2(i,j)=-1;
else
y2(i,j)=1;
end
end
end
subplot(3,4,1);
figt(I00);
%figure,imshow(I0);
title('待试图片08')
subplot(3,4,2);
figt(I11);
%figure,imshow(I1);
title('待试图片18')
subplot(3,4,3);
figt(I22);
%figure,imshow(I2);
title('待试图片28')
subplot(3,4,4);
figt(I33);
%figure,imshow(I3);
title('待试图片38')
subplot(3,4,5);
figt(I44);
%figure,imshow(I4);
title('待试图片48')
subplot(3,4,6);
figt(I55);
%figure,imshow(I5);
title('待试图片58')
subplot(3,4,7);
figt(I66);
%figure,imshow(I6);
title('待试图片68')
subplot(3,4,8);
figt(Itest1);
%figure,imshow(Itest); %绘制测试样本二值化图像
title('测试样本')
subplot(3,4,9);
%figure,imshow(y); %绘出仿真输出二值化图像
figt(y1); %绘出仿真输出二值化图像
title('仿真结果1')
subplot(3,4,10);
figt(Itest2);
%figure,imshow(Itest); %绘制测试样本二值化图像
title('含有噪声的样本')
subplot(3,4,11);
%figure,imshow(y); %绘出仿真输出二值化图像
figt(y2); %绘出仿真输出二值化图像
title('仿真结果2')
function figt(t)
hold on
axis square %以当前坐标轴范围为基础,将坐标轴区域调整为方格形
for j=1:16
for i=1:8
if t((j-1)*8+i)<0
fill([i i+1 i+1 i],[17-j 17-j 18-j 18-j],'k')
else
fill([i i+1 i+1 i],[17-j 17-j 18-j 18-j],'w')
end
end
end
hold off
function I = featureC( x )
%将图片数据转化为1,-1矩阵
略
9
展开阅读全文