预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于离散Hopfield神经网络的数字识别实现 学院:电子与控制工程学院 姓名: 学号: 2016.4 基于离散Hopfield神经网络的数字识别实现 一离散Hopfield神经网络概述 Hopfield网络作为一种全连接型的神经网络,曾经为人工神经网络的发展开辟了新的研究途径。它利用与阶层性神经网络不同的结构特征和学习方法,模拟生物神经网络的记忆机理,获得了令人满意的结果。这一网络及学习算法最初是由美国物理学家J.JHopfield于1982年首先提出的,故称为Hopfield神经网络[1]。 Hopfield最早提出的网络是二值神经网络,神经元的输出值只取1或-1,所以,也称离散Hopfield神经网络(DHNN,DiscreteHopfieldNeuralNetwork)。在离散Hopfield网络中,所采用的神经元是二值神经元,因此,所输出的离散值1和-1分别表示神经元处于激活和抑制状态[2]。 DHNN是一种单层、输出为二值的反馈网络。假设有一个由三个神经元组成的离散Hopfield神经网络,其结构如图1所示。 图1离散Hopfield神经网络结构 在图1中,第0层仅仅作为网络的输入,它不是实际神经元,所以无计算功能;第1层是神经元,执行对输入信息与权系数的乘积求累加和,并经非线性函数f处理后产生输出信息。f是一个简单的阈值函数,如果神经元的输出信息大于阈值θ,那么,神经元的输出取值为1;小于阈值θ,则神经元的输出取值为-1。 对于二值神经元,它的计算公式如下: 式中,xj为外部输入,并且有 一个DHNN的网络状态是输出神经元信息的集合。对于一个输出层是n个神经元的网络,其t时刻的状态为一个n维变量: 因为可以取值为1或-1,故n维向量Y(t)有种状态,即网络有种状态。我们考虑DHNN的一般节点状态。用yj(t)表示第j个神经元,即节点j在时刻t的状态,则节点的下一个时刻(t+1)的状态可以求得: 如果在i-j时等于0,说明一个神经元的输出并不会反馈到其输入,这时,DHNN称为无自反馈的网络。如果wij在i=j时不等于0,说明一个神经元的输出会反馈到其输入端,这时,DHNN为有自反馈的网络。 二基于Hopfield神经网络的数字识别 根据Hopfield神经网络相关知识,下面设计一个具有联想记忆功能的离散型Hopfield神经网络,要求该网络可以正确识别1、2这两个个数字,并且当数字被一定的噪声干扰后,仍具有较好的识别效果。 2.1设计思路 假设网络由1、2共2个稳态构成,每个稳态用10*10的矩阵表示。该矩阵可直观地描述阿拉伯数字,即把矩阵规分成10*10个单元,有数字轨迹的单元用1表示,空白部分用-1表示,如图2所示。网络对这2个稳态即2个数字(点阵)具有联想记忆的功能,当有带噪声的数字点阵输入到该网络时,网络的输出便可以得到最接近的目标向量(即2个稳态),从而达到正确识别的效果。 图2数字1和2的点阵 2.2设计步骤 按照上述思路,设计Hopfield网络需要经过以下几个步骤,如图3所示。 图3Hopfield网络设计流程图 2.3matlab实现 利用MATLAB提供的函数,可以按照Hopfield网络设计流程图将设计步骤一一在MATLAB环境下实现。 2.3.1输入输出设计 如图2所示,有数字的部分用1表示,空白部分用-1表示,即可得到1、2的点阵。将数字点阵以图形的形式呈现出来,如图4所示。 图4数字点阵1、2的实现结果 利用这两个数字点阵构成训练样本T: T=[array_one;array_two]'; 2.3.2网络建立 利用newhop()函数可以方便地创建一个离散型Hopfield神经网络: net=newhop(T); 2.3.3产生噪声的数字点阵 常见的模拟产生带噪声数字的方法有两种:固定噪声法和随机噪声法。固定噪声法指的是人工修改的方法改变数字点阵某些位置值,从而模拟产生带噪声的数字点阵。如果希望产生不同的带噪声的数字矩阵,需要人工做多次的修改,这无疑是比较麻烦的。 随机噪声产生法是利用产生随机数的方法来确定需要修改的点阵位置,进而对数字点阵进行修改。由于数字点阵中的值只有1和-1两种,所以这里的修改就是将1换成-1,-1换成1。 2.3.4网络仿真 利用sim()函数可对神经网络进行仿真。 3实验结果 将带噪声的数字点阵输入已创建好的Hopfield网络,便可对带噪声的数字点阵进行识别,识别结果仍为数字点阵形式。实验结果如图5所示 图5数字识别结果 实验程序如下: %%Hopfield神经网络数字识别 clearall clc loaddata1array_one loaddata2array_two T=[array_one;array_t