基于BP神经网络的英文字母识别11页

上传人:文库****9 文档编号:173995897 上传时间:2021-03-15 格式:DOC 页数:11 大小:303.50KB
返回 下载 相关 举报
基于BP神经网络的英文字母识别11页_第1页
第1页 / 共11页
基于BP神经网络的英文字母识别11页_第2页
第2页 / 共11页
基于BP神经网络的英文字母识别11页_第3页
第3页 / 共11页
基于BP神经网络的英文字母识别11页_第4页
第4页 / 共11页
基于BP神经网络的英文字母识别11页_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《基于BP神经网络的英文字母识别11页》由会员分享,可在线阅读,更多相关《基于BP神经网络的英文字母识别11页(11页珍藏版)》请在金锄头文库上搜索。

1、基于BP神经网络的英文字母识别摘要:本报告主要介绍了利用BP神经网络进行英文字母的识别,并在模式识别的过程中考虑了噪声干扰的存在,能够使得网络具有一定的容错能力,用MATLAB模拟实现英文字母的识别结果。关键词:BP神经网络,模式识别,噪声干扰,MATLAB1、 模式识别与BP神经网络1.1模式识别与神经网络的特点1.1.1 模式识别的基本原理模式识别系统的结构如图1所示,下面对各部分进行简要说明。图1 模式识别系统的构成(1)信息获取:为了使计算机能够对各种现象进行分类识别,要用计算机可以运算的符号来表示所研究的对象。通常输入对象的信息有二维图像、一维波形、物理参量和逻辑值三种类型。通过测量

2、采样和量化,可以用矩阵或向量表示二维图像或一维波形。这就是数据获取的过程。(2)预处理:去噪声,提取有用信息,并对输入测量仪器或其它因素所造成的退化现象进行复原(3)特征值提取与选择:由图像或波形所获得的数据量是相当大的。例如,一个文字图像可以有几千个数据,一个卫星遥感图像的数据量就更大。为了有效的实现分类识别,就要对原始数据进行变换,得到最能反映分类本质的特征1。1.1.2 神经网络的特点(1) 它具有自组织和自学习能力,能够直接输入数据并进行学习。(2) 神经网络具有推广能力。(3) 网络是非线性的,即它可以找到系统输入变量之间复杂的相互作用。1.2 BP神经网络1.2.1 BP网络简介2

3、0世纪80年代中期,学者Rumelhart、McClelland和他们的同事提出了多层前馈网络MFNN(Mutltilayer Feedforward Neural Networks)的反向传播学习算法,简称BP网络(Back Propagation Network)学习算法2。BP 神经网络是一种神经网络学习算法。其由输入层、中间层、输出层组成的阶层型神经网络,中间层可扩展为多层。相邻层之间各神经元进行全连接,而每层各神经元之间无连接,网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,各神经元获得网络的输入响应产生连接权值(Weight)。然后按减小希望输出与实际输出误差的方向,从

4、输出层经各中间层逐层修正各连接权,回到输入层。此过程反复交替进行,直至网络的全局误差趋向给定的极小值,即完成学习的过程。BP网络主要作用于以下几个方面:(1)函数逼近:用输入矢量和相应的输出矢量训练一个网络来逼近一个函数;(2)模式识别:用一个特定的输出矢量将它与输入矢量联系起来;(3)分类:把输入矢量以所定义的合适的方式进行分类;(4)数据压缩:减少输出矢量的维数以便于数据传输或存储。1.2.2 BP网络模型BP网络是一种单向传播的多层前向网络,每一层节点的输出只影响下一层节点的输出,其网络结构如图2所示,其中X和Y分别为网络输入、输出向量,每个节点表示一个神经元。网络是由输入层、隐层和输出

5、层节点构成,隐层节点可为一层或多层,同层节点没有任何耦合,前层节点到后层节点通过权连接。输入信号从输入层节点依次传过各隐层节点到达输出层节点。图2 BP神经网络模型1.2.3 BP网络算法思想BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。正向传播时,输入样本从输入层传入。经各层逐层处理后,传向输出层。若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播阶段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传、并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。这种信号正向传播与误差反向传播的各层权值调

6、整过程,是周而复始的进行的。权值不断调整的过程,也就是网络的学习训练过程。此过程一直进行到网络输出的误差减少到可接受的程度,或进行到预先设定的学习次数为止。2、 字母识别问题的描述模式识别应用的领域非常广泛,其中字母识别是常研究的一个课题。而对英文字母的识别方法也很多,由于条件不同解决的方法也不同,这里讨论利用BP神经网络对26个英文字母的识别。在对字母进行识别之前,首先必须将字母进行预处理3,即将待识别的26个字母中的每一个字母都通过的方格形式进行数字化处理,其有数据的位置设为1,其他位置设为0。如图2给出了字母A、B和C的数字化过程,然后用一个135的向量表示。例如图3中字母A的数字化处理

7、结果所得对应的向量为:LetterA=00100010100101010001111111000110001图3 数字化字母由此可得每个字母由35个元素组成一个向量。由26个标准字母组成的输入向量被定义为一个输入向量矩阵alphabet,即神经网络的样本输入为一个3526的矩阵。其中alphabet=letterA,letterB,lettereC,letterZ。网络样本输出需要一个对26个输入字母进行区分输出向量,对于任意一个输入字母,网络输出在字母对应的顺序位置上的值为1,其余为0,即网络输出矩阵为对角线上为1的2626的单位阵,定义为target=eye(26)。3、 网络设计 进行神

8、经网络设计的首要任务就是网络结构的确定,一般情况下,网络结构的设计包括:输入输出神经元个数、隐含层个数、隐含层中神经元数目以及每层传递函数来确定。 (1)输入层神经元个数 输入层神经元个数根据待识别字符所提取的网格像素特征的维数大小确定。在本文中,要识别的字母是5*7布尔量的网格,因此输入向量的元素应该是35个。 不含噪声的输入向量的元素值应该是0或1,26个不同的0、1组合代表不含噪声的英语字母AZ,如不含噪的字母A,其输入向量值为0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1,可用矩阵形式来示例字母

9、A的布尔量网格。 (2)输出层神经元个数 如果神经网络用作分类器,其类别数为m个,那么输出一般也就取m个神经元。本设计是对26个英文字母进行识别,故输出层应该为26个神经元。(3)隐含层个数神经网络的许多特性正是由于隐含层的存在才具备,然而,具体取多少隐含层合适却没有确定的规律可循,不同的应用对象,与其相适应的网络结构差别很大。理论上已经证明:具有偏差和至少一个S型隐含层加上一个线性输出层的网络,能够逼近任何有理函数,也即含有一个隐含层的三层BP网络即可完成非线性函数的逼近。由于BP网络的功能实际上是通过网络输入到网络输出的计算来完成的,所以多于一个隐含层的BP网络虽然具有更快的训练速度,但在

10、实际中需要较多的计算时间;另一方面,训练速度也可以通过增加隐含层神经元数来达到。因此,可采用具有一个隐含层的三层BP神经网络。 (4)隐含层中神经元数目在实际设计中,确定隐含层神经元个数的办法是:对于给定的输入输出模式,通过反复调试和对不同神经元数进行训练对比得到合适的值。下面为隐含层神经元个数选择的经验公式: 式中,h_num为隐藏层神经元个数,i_num为输入层神经元个数,o_num为输出层神经元个数。由此公式可得本系统的隐含层神经元个数h_num应为31个。 (5)每层传递函数不同的神经网络其传递函数则不一样,BP神经网络采用logsig函数作为传递函数,该函数不仅具有光滑、可微、非线性

11、和饱和等特性,而且其导函数也很容易用本身来表达,简化了计算。其算法是: 4、 实验设计与验证 4.1实验设计4.1.1 生成网络使用函数newff创建一个两层网络,具体程序为:alphabet,targets=prprob;R,Q = size(alphabet);S2,Q = size(targets);P=alphabet;S1 = 10;%隐层节点数net = newff(minmax(alphabet),S1 S2,logsig logsig,traingdx);net.LW2,1 = net.LW2,1*0.01;net.b2 = net.b2*0.01;T=targets;4.1.

12、2 网络训练为了使产生的网络对输入向量有一定的容错能力,最好的办法是使用理想的信号(无噪声)和带有噪声的信号对网络进行训练。使用不同信号的训练都是通过BP网络来实现的。因此,可首先进行无噪声网络训练,再进行有噪声字母网络训练,最后再次进行无噪声网络训练4,具体程序如下:%无噪声字符网络的训练net.performFcn = sse; net.trainParam.goal = 0.1; net.trainParam.show = 20; net.trainParam.epochs = 5000; net.trainParam.mc = 0.95; P = alphabet;T = target

13、s;net,tr = train(net,P,T);%具有噪声字符网络的训练netn=net; net.trainParam.goal = 0.6; net.trainParam.epochs = 300; T=targets targets targets targets; for pass=1:10P=alphabet+randn(R,Q)*0.1,alphabet+randn(R,Q)*0.2,alphabet+randn(R,Q)*0.1,alphabet+randn(R,Q)*0.2;netn,tr = train(netn,P,T);end%再次无噪声网络训练netn.trainP

14、aram.goal = 0.1; netn.trainParam.show = 5; net.trainParam.epochs = 500; P = alphabet;T = targets;netn,tr = train(netn,P,T);4.1.3 系统性能测试为了测试系统的可靠性,本文用了加入不同级别的噪声的字母样本作为输入,来观察用理想样本和加噪样本训练出来的网络的性能,并绘制出误识率曲线,如图4所示。图4 误差识别曲线图4中虚线代表用无噪声训练网络的出错率,实线代表有噪声训练网络的出错率。从图4可以看出,在均值为00.1之间的噪声环境下,两个网络都能够准确地进行识别。当所加的噪声

15、均值超过0.1时,待识别字符在噪声作用下不再接近于理想字符,无噪声训练网络的出错率急剧上升,此时有噪声训练网络的性能较优。系统性能测试程序详见程序清单。4.2 实验验证对上面设计的系统进行实验仿真验证,如对字母A、B、W进行识别,识别结果如图5所示,左侧为含噪声字母右侧为成功识别的字母,程序详见程序清单。图5 字母A、B、W识别结果为更好地识别26个英文字母,测试时用加入比例为20%的噪声的26个字母AZ作为输入,并绘制出含有噪声与成功识别的字母,程序详见如下:noise_percent=0.2;for k=1:26 noisyChar=alphabet(:,k)+randn(35,1)*noise_percent; subplot(6,9,k+floor(k/9.5)*9); plotchar(noisyChar); de_noisyChar=sim

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号