1、基于 matlab 和神经网络的数字识别摘 要:针对 10 个数字的识别问题,本文利用 BP 神经网络进行了实验,取得了较好的识别结果。同时应用了 matlab 的图形技术,增强了网络训练、识别的直观性。为学习 matlab 和神经网络提供了一个生动的例子。关键词:matlab BP 神经网络 数字识别 一、问题的阐述及理解设计一个 BP 神经网络,使它能够识别 10 个数字。这意味着每当给训练过的网络一个表示是数字的输入时,网络能够在输出端正确地认出该数字。首先将每个数字进行数字化处理,以构造输入样本。本实验对每个数字采用了57 的矩阵来构造输入样本,如数字 1 可表示为:number1=
2、0 0 1 0 00 0 1 0 00 0 1 0 00 0 1 0 00 0 1 0 00 0 1 0 00 0 1 0 ;另一方面,因为目标矢量是希望在每个数字输入是在 10 个数字中它所排顺序的位置上为 1,而在其他位置上的输出为 0。为此,目标矩阵为对角线上为 1 的 1010 的单位阵。同时考虑的是所设计的网络应当具有抗干扰能力,即设计出的网络能够具有在由一定不规范的输入情况下辨识出正确的数字输入的能力。二、神经网络设计(1)网络结构。所设计的神经网络需要具有 35 个输入节点和 10 输出神经元,采用输入在(0,1)范围的对数 S 型激活函数两层 logsig/logsig 网络。
3、隐含层凭经验取 10 个神经元。为了使网络具有抗干扰能力,在网络训练后,再将其输出经过一层竞争网络函数 compet.m 的处理,使网络只是在最接近输入值的输出位置为 1,在其他位置输出为 0。(2)初始化number,targets=numberiden;%获得 35*11 的数字输入矩阵nntwarn off;P=number;%数字输入矩阵T=targets;%目标矢量R Q=size(number);S1=10;%隐含层个数S Q=size(targets);W1,B1=nwlog(S1,R);W2,B2=rands(S,S1);(3)网络训练。为训练一个网络,使其本身具有抗噪声能力,
4、我们需要训练一个具有“理想加噪声”输入矢量的识别网络。我们用十组“理想加随机噪声”的输入矢量来训练神经网络,每一次训练后的权矢量作为下一组输入矢量训练的初始值。为了保证网络同时具有对理想输入和有噪声输入同时分类的能力,训练具有噪声的输入矢量是通过在对两组无噪声矢量训练的同时,加上两对带有随机噪声的输入矢量来实现的。网络训练完后,为保证网络能够准确无误地识别出理想的数字,我们再用理想的无噪声输入矢量对网络在训练一次。将最终的训练结果存入一个数据文件,作为下一步网络识别用的权矢量。其网络训练功能由函数 idenresult.m 实现。(4)网络识别。将训练好的权矢量取出,作为网络识别应用的权矢量。
5、在数字 010 之间任意输入一个数字矢量,用对数 S 型激活函数两层logsig/logsig 网络对输入矢量进行识别。 为增强网络的抗干扰能力,网络在使用时,其后再加上一个竞争网络,以使网络对任一个数字的输出只有一个位置为 1,其余位置为 0。其网络识别功能由函数 idenfun.m 实现。三、图形用户界面的设计为了增强数字识别的直观效果,我们应用了 matlab 的图形技术来设计直观的图形用户界面。Matlab 是由 MathWorks 公司于 1984 年推出的一套数值计算软件,分为总包和若干个工具箱等,可以实现数值分析、自动控制、信号处理、图象处理等若干个领域的计算和图形显示功能。它有
6、几大优点:(1)简单易学;(2)代码短小高效;(3)计算功能十分强大;(4)强大的图形表达功能。我们在这里主要显示了它图形显示功能,该软件不仅可以绘制一般的二维、三维图形,如线图、条形图、饼图、散点图、直方图等,还可以绘制工程性较强的特殊图形,如二维、三维等值线图,三维表面图、假彩色图等,此外还可以生成快照和进行动画制作。我们应用 3 个坐标系来分别显示原始数字,带噪声数字和识别结果。同时使用了滑动条来直观显示噪声的大小对识别结果的影响。此外,为了方便用户对网络训练的理解,我们设计了网络训练按钮来直观显示网络训练过程。其界面如图 1 所示。图 1 图形用户界面的设计四、实验结果应用此网络识别函
7、数对数字进行识别实验,其中数字 8 在各种噪声水平下的实验结果如图 2-5 所示。图 2 噪声水平为 0 时的数字 8 的实验结果图 3 噪声水平为 0.1 时的数字 8 的实验结果图 4 噪声水平为 0.2 时的数字 8 的实验结果图 5 噪声水平为 0.3 时的数字 8 的实验结果通过大量的重复实验,我们得出如下结论,在噪声水平为 00.3 之间时,网络能正确识别,当噪声超过此范围后,网络的识别率降低。五、结束语通过此实验,我们可以对 BP 神经网络有直观形象的理解,同时对 matlab丰富的图形技术也有了清楚的认识,能为进一步的学习打下良好的基础。参考文献1苏金明,阮沈勇,matlab6.1 实用指南(上册),电子工业出版社,20022胡守人,余少波等,神经网络导论,国防科大出版社 1993