1、基于 Hopfield 神经网络的数字识别原理简介:Hopfield 网络是有反馈的全互联型网络,其形式如图 2 所示,N 为神经元的数目,V表示神经元的输入向量,U 表示输出向量, W 为神经元之间的权值。离散 Hopfield 网络中每个神经元的输出只能取“1”或“-1”两种状态,各神经元的状态可用向量 V 表示:V=v1, v2 , vn。网络中各神经元彼此互相连接,即每个神经元将自己的输出通过连接权传给其它神经元,同时每个神经元接受其它神经元传来的信息。图 2 有反馈的全互联型网络Hopfield 网络的稳定性是由能量函数来描述的,即对网络的每个状态发生变化时,能量函数 E 随网络状态
2、变化而严格单调递减,这样 Hopfield 模型的稳定与能量函数 E 在状态空间的局部极小点将一一对应。设有 N 个神经元构成的 Hopfield 网络,其中第 i 个和第 j 个神经元节点状态分别记为vi 和 vj;w 是神经元 i 和 j 的连接权, 为神经元 i 的阈值。节点的能量可表示为:Ei=-( )viinijjvw则整个 Hopfield 网络整体能量函数定义为:E=- inijiniji v112设有 N 个神经元构成的 Hopfield 神经网络,第 i 个神经元在 t 时刻所接收的来自其它N-1 个神经元输入信号的总和记为 ui(t ) ,t+1 时刻第 i 个神经元的输出
3、值 vi(t+1)是符号函数作用于 ui(t)的某个阈值 时,该神经元将触发成兴奋状态。据此可知 Hopfield 网络的运行规则为:(1) 在网络中随机地选择一个神经元;(2) 求所选神经元 i(1 i N)的输入总和ui(t)= ;iinijjvw(3) 根据 ui(t)的值大小,更新神经元的状态if (u i(t)) 0then vi( t+1)=1else vi(t+1 )=0;(4) 神经元 i 以外的神经元 j 的状态不变化;(5) 转向(1) ,直到网络达到稳定。Hopfield 网络作为记忆的学习时,稳定状态是给定的,通过网络的学习求适合的权矩阵 W(对称阵) ,学习完成后以计
4、算的方式进行联想。对给定的 M 个模式,Hopfield 网络可按 Hebb 规则来进行学习。Mkjiij jiv1),(,0按上述规则求出权矩阵后,可认为网络已经将这 M 个模式存入到网络的连接权中。问题描述:设计一个 Hopfield 网络,使其具有联想记忆功能,能正确识别阿拉伯数字,当数字被噪声污染后仍可以正确地识别。程序流程:先设计好标准的数字点阵(本文采用 10*10 矩阵表示) ,根据这些标准的数字点阵创建并训练网络,使网络达到稳定状态,用带噪声的数字测试训练的网络。噪声有两种形式:一种是固定噪声;另一种是随机噪声,本文对两种噪声都做讨论。设计数字点阵(0-9 )创建 Hopfie
5、ld 网络产生带噪声的数字点阵数字识别测试结果分析程序:%数字 0-9 的标准点阵zero=load(zero.txt);one=load(one.txt);two=load(two.txt);three=load(three.txt);four=load(four.txt);five=load(five.txt);six=load(six.txt);seven=load(seven.txt);eight=load(eight.txt);nine=load(nine.txt);%训练样本(目标向量)T=zero(:),one(:),two(:),three(:),four(:),five(:)
6、,six(:),seven(:),eight(:),nine(:);%输出数字 0-9figurefor ii=0:9,subplot(2,5,ii+1);imshow(reshape(T(:,ii+1),10,10);title( 当前数字: num2str(ii)end%数字带噪声数字点阵(固定法)noise_matrix=load(noise_matrix.txt);%数字带噪声数字点阵(随机法)%noise_matrix=zero;%for i=1:100% a=rand;% if a0.1% noise_matrix(i)=-zero(i);%end%endfiguresubplot
7、(2,3,1)imshow(noise_matrix);title(带噪声的样本);%关于 hopfield 网络的创建和仿真,参数形式参见 Matlab 的帮助net=newhop(T);%创建 hopfield 网络,根据标准样本开始训练学习No22=sim(net,1,5,noise_matrix(:);%仿真 5 次,只有一个样本 noise_matrixfor ii=1:5subplot(2,3,1+ii)imshow(reshape(No22ii,10,10);title(第 num2str(ii) 仿真结果)end实验结果:标准数字点阵仿仿仿仿仿 0 仿仿仿仿仿 1 仿仿仿仿仿
8、2 仿仿仿仿仿 3 仿仿仿仿仿 4仿仿仿仿仿 5 仿仿仿仿仿 6 仿仿仿仿仿 7 仿仿仿仿仿 8 仿仿仿仿仿 9随机噪声的数字识别:(以带随机噪声的 0 为例)仿仿仿仿仿仿 仿 1仿仿仿仿 仿 2仿仿仿仿仿 3仿仿仿仿 仿 4仿仿仿仿 仿 5仿仿仿仿固定噪声的数字识别:(以被污染的 2 为例)仿仿仿仿仿仿 仿 1仿仿仿仿 仿 2仿仿仿仿仿 3仿仿仿仿 仿 4仿仿仿仿 仿 5仿仿仿仿结果分析:本文对被污染的数字 0-9 都进行了实验,无论是带随机噪声还是固定噪声,训练过的Hopfield 网络在仿真 3 次后都能被识别出来。由于用来训练网络的各个样本并不是严格地正交,不符合 Hopfield 网络联想记忆的条件,当数字在噪声的污染下失真很严重时,Hopfield 网络识别会出现偏差。改进方法:当输入的训练样本不满足相互正交的条件时,可以在网络训练时,通过修改连接权值,使网络达到稳定状态,这样的话,Hopfield 网络可以训练样本不是相互正交时也可以达到稳定状态,训练后的网络可以很好地识别带噪声的数字。