您的当前位置:首页正文

0基于MATLAB软件的罗马数字模式识别

2021-05-18 来源:客趣旅游网
第24卷第9期   2007年9月  计算机应用与软件

ComputerApplicationsandSoftwareVol124No.9

Sep.2007

基于MATLAB软件的罗马数字模式识别

袁慧梅 宋 宇

(首都师范大学信息工程学院 北京100037)

摘 要  提出了利用神经网络的分类功能,并借助于MATLAB软件的神经网络工具箱,采用具有自适应学习速率和附加动量因

子的BP型神经网络,实现罗马数字模式识别的新方法。该方法同样适用于其它符号的模式识别。关键词  MATLAB 神经网络 模式识别

TOREALIZETHEROMANNUMBER

RECOGNITIONBASEDONTHEMATLABSOFTWARE

YuanHuimei SongYu

(CollegeofInformationEngineering,CapitalNormalUniversity,Beijing100037,China)Abstract  AccordingtotheclassificationfunctionofANNandtheANNtoolboxofMATLAB,basedontheBPmodelwhichhastheadap2tinglearningrateandtheadditionalmomentumfactor,anewmethodispresentedtorecognizetheRomannumber.Themethodcanalsobeusedtorecognizeothersymbols.

Keywords  MATLAB ANN Patternrecognition

01000100000

0 引 言

MATLAB软件包含了被称为Toolbox的各类应用问题的求

10000010000]

解工具。神经网络工具箱正是在MATLAB环境下所开发出来

的许多工具箱之一。设计者则可以根据自己的需要去调用工具箱中有关神经网络的设计与训练的程序,使自己能够从烦琐的编程中解脱出来,集中精力去思考和解决问题。

人工神经网络(ANN)是理论化的人脑神经网络的模型,是模仿大脑神经网络结构和功能而建立起来的一种信息处理系统。神经网络的一个最主要的功能就是分类,这个功能有助于机器的模式识别。

本文就是利用神经网络的分类功能,并借助于MATLAB软件的神经网络工具箱,采用具有自适应学习速率和附加动量因子的BP型神经网络,从而实现罗马数字的模式识别。

每个罗马数字都可以用1137=77个元素组成一个列矩阵,输入样本矩阵则由分别表示10个罗马数字的列矩阵,组成一个10377的矩阵。将10个罗马数字送入变量Number中,作为神经网络的输入样本矩阵:

Number=[r1,r2,r3,r4,r5,r6,r7,r8,r9,r10]

1.2 输出样本的设计

输出样本设计成对角线上为1的10310的单位阵,这样每输入一个罗马数字,在它所排顺序的位置上输出为1,其它位置上为0。它可以用MATLAB命令来实现:

Targets=eye(10)

1.3 网络结构的设计

由以上分析可知,所设计的神经网络需要具有1137=77个(输入样本的元素个数)输入神经元和10个(所辨识的罗马数字的个数)输出神经元。而BP网络的设计,主要是网络的隐含层数和隐含层中神经元个数的设计。

理论上已证明:具有偏差和至少一个S型隐含层加上一个线形输出层的网络,能够逼近任何函数。本文采取具有一个隐含层的BP网络。

对于隐含层神经元个数的选取,合理的办法是:在能解决问题的前提下,再加1到2个以加快误差下降速度。本文经过多次调试,隐含层神经元数最终取15。

在MATLAB工具箱中可以采用函数nwlog.m或nwtan.m来

1 网络的设计

1.1 输入样本的设计

将每个罗马数字(I,II,III,IV…IX,X)进行数字化处理,转

换成神经网络能够处理的输入和输出数据,从而构造输入样本。本文是采用1137矩阵的布尔值表示每个罗马数字的。例如:

数字\"X(10)\"

r10=[10000010000

01000100000001010000000001000000000101000000

收稿日期:2005-07-01。袁慧梅,副教授,主研领域:智能控制和自动测试技术等。

  144   

计算机应用与软件2007年

初始化第一隐含层权值WI和B1,后面层的初始值仍然采用随机取数。以上对输入和输出的处理,以及网络结构的初始化都写入一个文件befor2.m中,以便后面程序的编写时调用。

为了使网络具有抗干扰能力,在网络的使用时,将其输出再经过一层竞争网络函数compet.m的处理,使网络的输出只在最接近输入值的位置上输出为1,保证在其它位置上为0。

带噪声网络训练过程中误差平方和、学习速率随学习步骤而变化的记录如图2所示。

2 网络训练

为了训练一个网络,使其本身就具有抗干扰能力,即网络能处理因不规范输入(如手写)所造成的噪声,最好的办法是训练一个具有“理想加噪声”输入矢量的识别网络。其中,将干扰噪声进行数字化处理后即变成具有平均值在一定范围内变化的随机值。

例如,具有平均值为0.4的随机噪声的数字\"II\":[R,Q]=size(r2);

r2_s=r2+randn(R,Q)30.4=1.267-0.0311.3550.9230.2090.194-0.0020.8890.5101.745-0.2090.0410.0870.1041.485-0.1090.946-0.508-0.6650.429-0.284 0.995-0.0010.9000.158-0.105-0.138-0.3760.530-0.4080.8390.069-0.0460.0280.1261.1990.5110.7800.104-0.0050.7080.1300.5520.2481.507-0.3580.0540.214-0.286本文中神经网络的训练采用的是具有自适应学习速率和附加动量因子的BP法。

图2 带噪声训练记录(误差平方和、学习速率———学习步骤)

2.3 再一次无噪声训练上述神经网络训练后,神经网络有可能辨识出带有噪声的

数字,但是这却是以牺牲理想无噪声输入辨识的正确性作为代价的,换句话说此时网络可能出现对理想无噪声输入辨识错误的可能性。为此,应将网络以训练后的权矢量作为初始权值,对无噪声输入再进行训练,以此来保证网络对理想输入和输出的正确性。

再次无噪声训练网络训练过程中误差平方和、学习速率随学习步骤而变化的记录如图3所示。

2.1 无噪声训练

首先需要训练一个具有较低误差平方和的具有理想输入的网络,以便后面作比较用。

无噪声网络训练过程中误差平方和、学习速率随学习步骤而变化的记录如图1所示。

图3 再次无噪声训练记录(误差平方和、

图1 无噪声训练记录(误差平方和、

学习速率———学习步骤)

学习速率———学习步骤)

2.2 带噪声训练

为了获得一个对噪声不敏感的网络,用10组“理想加随机

噪声”的输入矢量训练神经网络。每一次训练后的权矢量作为下一组输入矢量训练的初始值。每1组“理想加随机噪声”的输入矢量由2组理想输入矢量Number加上2组带有噪声的输入矢量组成,目标矢量为4组期望矢量Targets,噪声矢量为平均值为0.1~0.4的随机噪声。这迫使网络学习适当地对含有噪声的数字进行正确的辨识。

3 系统的性能测试

用神经网络进行模式识别的可靠性,可以通过使用上百个具有随机噪声的输入矢量来测试网络而获得。现在对所设计的神经网络输入任意数字并加上具有平均值从0.1~0.4的噪声,由此随机产生100个输入矢量,通过网络识别后输出。测试结束后,绘制了辨识的出错百分比,如图4所示。其中,点画线代

(下转第183页)

 

第9期   

尤澜涛等:一种快速网络拓扑发现算法的设计与实现 183

一步取得路由器中ARP表,即取得路由器的MIB库的ipNet2

ToMediaTable,从中分析出与该路由器相连的子网拓扑信息,由于ARP的缓存机制,得到的拓扑信息不够准确。因此,我们使用PING,进一步查看ARP中存在的主机是否存活,以此得到精确的子网拓扑信息。使用该方法,减少了往网络中发送ICMP探测数据报的数量,从而减小了对目标网络的影响。第二步,进一步确定网络设备的类型。由于MIB库是统一管理的,每个公司产品的MIB标识是唯一的,我们只要取得MIB库中的system下sysObjectID项的内容,通过对照,不但可以知道该网络设备的类型,而且还可以知道是哪家公司的产品。如果是交换机,我们继续重复上面两个步骤,直到发现子网中的所有拓扑信息。

精确的网络拓扑信息。

同时该算法结合使用了SNMP、ARP和PING,使得该算法可以得到与路由器相连的子网拓扑信息,改变了单独使用OSPF议只能得到主干网络拓扑结构缺陷。

4 结束语

OSPF作为一个链路状态协议,由于其分区域,且收敛速度

3 实验结果

为了测试本文算法的有效性,我们在实验室搭建了一个小

型的OSPF路由自治系统,自治系统一共有6台路由器,按照OSPF协议对网络类型的分类,分成二个区域:区域1和区域0,其中路由器1,路由器2,路由器3与路由器(1,2)相连的接口属于区域0;路由器(4~6),路由器3与路由器4相连的接口属于区域1。由于网络比较小,我们将采集实体和拓扑服务器部署在同一台Iinux服务器上。

快,特别适合于大型网络。本系统利用了OSPF的特性,设计了一个基于OSPF+SNMP+ARP+PING的网络拓扑发现算法,具有快速,高效的特点,而且对目标网络产生的影响几乎是可以忽略不计的,目前该算法已经应用于实际的网管系统中,并取得了不错的效果。

参 考 文 献

[1]熊坤,寇晓蕤,范元书,罗军勇.网络拓扑发现算法定性分析[J].

计算机工程与应用,2004,40(14).[2]王志刚,王汝传,王绍棣,张登银.网络拓扑发现算法的研究[J].

通信学报,2004,25(8).[3]刘亚莉,孙亚民.基于SNMP的网络拓扑结构自动发现研究[J].微

型机与应用,2004,23(4).

[4]徐建锋,邓永平,丁圣勇.基于OSPF服务器的网络拓扑发现[J].

计算机应用,2004,24(8).

[5]ShaiknA,GoyalM.AnOSPFTopologyServer:DesignandEvaluation

[J].IEEEJournalonSelectedAreasinCommunications,2002,20(4):7462755.

(上接第144页)

表带噪声的网络的测试,实线代表无噪声的理想网络的测试。

图2 本文采用的OSPF服务器部署结构图

采用OSPF+SNMP+ARP+PING的方法取得主干网络拓

扑结构仅仅花费了12秒。当前在网管系统中使用的网络拓扑发现算法是采用SNMP+ARP+PING的方法,与我们算法的主要区别在于取得主干网络拓扑信息时使用不同的协议。相比较而言,本算法有如下优点:

(1)收敛速度 基于SNNP的网络拓扑搜索必须访问所有的路由器以及相应的每个路由器的路由表,即算法复杂度最小为O(R3D)≈O(R2)(假设每个路由器InRouteEntry的数目是D,可访问的总路由器数为R)。当被管理的路由器总数很大时,程序运行时间会更长。而基于OSPF的网络拓扑发现算法,跟OSPF的收敛速度有关,由于是采用分布式的采集方式,所以,当路由器增多时,采集的速度几乎不受影响。对于大型网络,我们算法的速度优势将体现的淋漓尽致。

(2)网路负载 基于SNMP网络拓扑搜索需要向目标网络发送大量的探测报文,将占用目标网络的大量带宽,而使用OS2PF,由于采集实体另外接入目标网络,且被动地接受链路状态广播,同时不发送自己链路状态广播,因此对目标网络的影响几乎是可以忽略不计。

(3)拓扑精度 基于SNMP网络拓扑搜索使用UDP来发送报文,容易丢失报文,取得的拓扑信息不准确,同时由于对目标网络带来大量的负载,只能隔一定时间如5分钟,重新轮巡一次,在这期间的网络拓扑变化将无从得知。而使用OSPF,实时监听链路状态广播,分析并得出网络拓扑,因此可以实时的得到

图4 辨识出错百分比

4 结 论

从图4中可以看出,两个网络都有一定的抗干扰能力,当噪

声平均值在0~0.18之间时,两个网络都能实现几乎100%的辨识;当噪声平均值在0.18~0.3之间时,两个网络的出错率都小于2%;而当噪声平均值在0.3~0.4之间,理想网络明显比带噪声网络的出错率要高出很多,在平均噪声为0.4的情况下,带噪声网络的出错率为3%,而理想网络的结果却达到6%。

由测试结果可知,本文设计的带噪声网络,能够解决具有一定范围噪声干扰的罗马数字模式识别。

版社,1997.

考文献

[1]楼顺天,等.MATLAB程序设计语言.西安:西安电子科技大学出[2]从爽,等.面向MATLAB工具箱的神经网络理论与应用.中国科学

技术大学出版社,1998.

因篇幅问题不能全部显示,请点此查看更多更全内容