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