基于BP神经网络和FUZZY集的模式识别算法及其MATLAB实现

更新时间:2023-07-19 01:11:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第 34卷增刊 2

中南工业大学学报(自然科学版)J . C ENT . SO UT H UNI V. T ECH NOL.

2003年 7月

基于 BP神经网络和「ZZ集的模式 U Y识别算法及其 MatLab实现蒋良孝,蔡之华.刘钊

(中国地质大学计算机科学与技术系,湖北武汉 430074)摘要:提出了一种基于BP神经网络和 Fuzzy集的模式识别算法, MatLab系统环境下实现了并在这种算法.实践证明,运用该算法进行模式识别的准确率非常高, MatLab编程简捷明了,使用具有很强的实用性和较大的应用前景.关键词:模式识别; BP神经网络; Fuzzy集; MatLab中图分类号;TP301. 6

模式即对某一事物或其他一些感兴趣项目的定量或结构上的描述,它可以用一个标准激励或用取自标准激励和它们相互关系的属性组成的矢量来表示,一组具有公共特性的模式可以看作一个模式类.通过机器进行模式识别的主要问题就是如何采用更好的计算机处理技术自动地、人尽可能少介人把模式分到各自的类中.更广泛地说,模式识别就是将测量结果、激励或输人模式分配到有意义的类别中.目前,可以用于模式识别的算法很多,但大多数算法都存在分类准确率低的缺陷.为了提高模式识别的准确率,本文作者提出了一种基于 BP神经网络和 Fuzzy集的模式识别算法,实践证明,运用该算法进行模式识别的准确率非常高.此外,本文遗弃了 C

经网络由3层构成:输入层、隐含层和输出层,各层之间实行全互连接方式. BP神经网络的学习算法又叫误差逆传播算法.其基本思想是:向后传播通过迭代处理一组训练样本,将每个样本的网络预测与实际知道的类标号比较,进行学习.对于每个训练样本,修改连接权和阑值,使得网络预测和实际类之间的均方误差最小。这种修改“向后”传播,即由输出层,经由每个隐含层,直到第 1个隐含层.尽管不能保证,但一般地,权都最终收敛,从而结束学习过程.当然,权值收敛并非唯一结束学习的条件,如迭代的次数超过了预先设定的最大迭代次数或者实际误差已经达到了目标误差的水准,均是结束学习的条件.详细的误差逆传播

和 C++等传统的高级编程语言,而是采用功能强大的 MatLab语言编程,使程序简捷明了,达到了事半功倍的效果.

算法见文献〔 . 1] 1.2 Fuzzy集及其距离最近原则设 U是论域,所谓 U上的“ uzzy集’, F 'A是指对

任意的XE U, x常以某个程度p如E[0, 1] )属于

1算法介绍1. 1 BP神经网络及其误差逆传播算法神经网络具有对噪声数据的高承受能力,对未经训练的数据分类模式的能力,并行处理能力以及非线性映射的能力等

特性.也正是这些特性推动了神经网络在模式识别中方面的应用. BP神经网络是目前应用最广、实现途径最直观、运算机制最容易理解、研究最深人的一种神经网络一个典型的 BP神收稿日期: 2003- 03- 24

A, x E A或x任而非 A.给定论域 U中若干标准模式A,,AZ, -,A.,其

中A,,AZ, -,A.:都是U的子集,再给出某具体对象A,要求判定 A应属于哪一类模式,这就是所谓的模式识别.若给定的标准模式是 U上的 Fuzzy子集,就称为 Fuzzy模式识别.若要求识别的对象 A也是U上的 Fuzzy子集,则常用“择近原则”中的“距离最近原则”来进行模式识别.现陈述如下:

设U共口,A,,AZ, * *,A,,A; E PC F (U), *是已

甚金项目:湖北省自然科学基金资助项目( 2001ABB006);湖北省科技攻关计划项目(2002AA101C07) .

154

中南工业大学学报 (自然科学版)

第 34卷增刊 2

知的标准模式. A E P是待判对象.现给定阑值又选 .定p上的距离p,若p(A,Ak)二min{p(A,A, ),p(A,

元,那么网络可识别的模式类别最多可为 2”种一般情况下,网络只含一个隐含层.因为,尽管增加层数可以降低误差、提高精度,但同时使网络结构复杂化,从而增加了网络权值的训练时间;而且增加隐含层中神经元的数目不但可以提高误差的精度,还可

AZ,...,杯 ) A,Am ), A,Ak)< A则判A属于 )且可,第 k类;若杯 A,Ak)> A则拒,绝判别(说明依据上述方式,不能判别 A应属的类别) .

1. 3 M atLab及其 BP神经网络工具箱函数MatLab( Matrix Laboratory )是由美国 Math

以使其训练效果比增加层数更易观察和调整.至于隐含层中神经元的数目要视具体情况且通过对比训练来确定.

Works公司推出的多功能数学应用软件,它集数值分析、矩阵计算、信号处理和图形显示于一体,构成了一个方便的界面友好的用户环境.该系统的基本数据结构是矩阵,在生成矩阵对象时,不需要对维数进行明确的说明.尤其是 MatLab具有很强的功能扩展能力,与它的主系统一起,可以配备包括神经网络等在内的各种工具箱,以完成一些特定的任务.运

2. 2 BP网络的初始化及训练参数的设定网络的初始化主要是对连接权值和神经元阑值的初始化.由于系统是非线性的,初始值的选取对于学习是否能够达到局部最小,是否能够收敛以及训练时间的长短有很大影响.初始值太大,会使权值的

用 MatLab编写的程序简捷明了,具有很强的实用性和较大的应用前景. MatLab的 BP神经网络工具箱包含了进行 BP神经网络分析和设计的许多函数.其中,本文用到的主要工具箱函数有:

调节过程几乎停止.因此,初始值一

般取(一1,+ 1)之间的随机数.训练参数的设定包括神经元激活函数、更新显示间隔次数、最大迭代次数、目标误差以及学习速率的设定.其中,学习速率决定了每次循环训练中所产生的权值变化量.学习速率太大可能导致系统不稳定;学习速率太小又会导致训练时间过

( 1)神经元激活函数: tansig ( ) .它是一双曲正切 sigmoid函数,用于将神经元上范围为 ( - 0o,+0 )的输人值映射到区间( - 1,十1)上.由于它是处处可微的,所以它很适合于利用 BP算法训练神经网络.

长,收敛速度太慢.所以,一般在区间(0. 01, 0. 8)上取值.目标误差应当通过对比训练来确定一个合适值.因为,较小的目标误差是要靠增加隐含层中的神经元数,以拖延训练时间来获得的. 2. 3 BP网络的训练与仿真在进行网络训练之前,首先要将原始数据转化为适合于神经网络方法处理的格式.对于连续模式分量的情况,要先将其离散化;对于已经是离散值的情况还要选取合适的编码方案,这一点对于模式类来说尤其重要.训练成功后的网络就具备了对模式识别的能力,再将待识别的模式矢量作为网络的输

(2)网络初始化函数:initff ( ) .用于初始化设计好的网络的权值和神经元的I J值. C

(3)网络训练函数: trainbp( ).用于训练初始化后的 BP神经网络.

(4)网络仿真函数: simuff( ).用于计算输人模式的网络输出. (5)误差绘制函数: plot err ( ) .用于绘制网络训练的均方误差随时间变化的曲线.

人,网络的输出就是用来识别输人模式的模式类别

2算法的基本思想与步骤使用该算法来进行模式识别的过程主要包括以下 4个步骤. 2. 1 BP网络的构建根输人模式矢量的分量个中神经元的个;根网络输出层中神经元的个

值,这个过程也称为网络仿真.

2 . 4 Fuzzy模式识别上面得到的网络输出值并非是前面编码阶段为模式类别所编码的精确值.因此,引进了模糊集和距离最近原则.把标准的模式类别编码值和网络输出确定网络输入层目确定

的模式类别值都看作为模糊

,再运用 Fuzzy模式

待识别模式的类别

识别中的距离最近原则来识别模式的类别.在这里,要首先取定一个合适的判别0值, .9因为I值太大可 1 .

,设输出层有,个神经:

2003年 7月

蒋良孝,基于 BP神经网络和 Fuzzy集的模式识别算法及其 MatLab实现等:

1 55

能会出现误判;太小又可能会导致漏判,合适的判别闹值通常由经验或反复试探得到.

表中的条件属性的组合视为模式矢量,决策属性视为模式的类别.那么上述配镜问题实质就是一种模式识别问题.表 1配镜决策表

3

演示实例完整的 MabLab

程序代码

p=[ 1 1 2 3 1 1 2 2 3 1 1 1 1 2 2 2 3 3 3 3;1 2 1 1 1 2 1 2 2 1 1 2 2 1 1 2 1 1 2 2; 2 2 2 2 1 1 1 1 1 1 2 1 2 1 2 2 1 1 2 2;

2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 2 1 2 1 2]; t=[ 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1; 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1];

pm[ 13; 12;12; 12];p;=[2;2;2;2]; ex= numl= 4;num2= 2;f= 'tansig';judge= 0. 1;

tp=仁 2000 0,06 0,041; 25[w1,,w2,= initff(pmax, numl, num2, bl b2] f,f);

[ w1,, b2, tr]= trainbp(wl,, w2, bl w2, te, bl f,b2,, p,, tp); f t out= simuff( pi, wl,,f,w2,,f) bl b2 ploterr ( tr )to

disl= sgrt ( ( out ( 1)一0) ' 2+ (out ( 2)一D -2); dis2= sgrt ( ( out ( 1)一1) ' 2+ ( out ( 2)一0) ' 2); dis3= sgrt ( ( out ( 1)一1)' 2+ (out ( 2)一1) ' 2);if ( d is l<“dis2) dis= d is l;

由于条件属性的个数为 4(即模式矢量有 4个分量),所以网络输人层有 4个神经元.又由于有 3个决策类,所以在网络输出层只需 2个神经元就可判

别出模式类别,其编码方案为( 0和 1分别表示两个 (神经元的输出值):O1代表一类镜片; 10代表二类镜片; 11代表三类镜片.考虑网络的复杂性,本文设计的网络只含一个隐含层,且由 4个神经元构成.具体的网络结构如图 1所示.运用本文提出的算法,直接调用 MatLab的 BP神经网络工具箱中的函数,将表 1中的数据对图 1所示的网络进行了训练和测试.结果表明,网络在迭代 2143次后,均方误差就可达到

else dis= dis2;en d

if ( dis<= dis3) min= disel s e m in= d is 3en d

if(min> judge) glass= 0 elseif( in=“dish glass= 1 m elseif( min== dis2) glass= 2 else glass= 3en d

预先设定的 0. 06.再用距离最近原则将模式进行 Fuzzy识别,识别的准确率竟达到了 100%.图 2给出了实验中完整的 MatLab程序运行结果.

输出层

本文以配眼镜人适合配哪一类镜片的问题为例来说明此算法.配镜的决策是根据配镜人的情况,即条件属性值来确定的.表 1所示是某医院的一张配镜决策记录表(数据取自文献[ 4] ) .其中,各条件属性值的含义如下:a(年龄): 1代表年轻; 2代表中年; 3代表老年. b(眼镜): 1代表近视镜;2代表远视镜,。 (散光): 1代表不是; 2代表是. d (产生眼泪情况): 1代表减少; 2代表一般.决策属性 e(镜片的类型): 1代表一类镜片; 2代表二类镜片; 3代表三类镜片.将

隐含层

输入层

图 1 BP神经网络的结构

15 6o

中南工业大学学报(自然科学版)

第 34卷增刊 2

参考文献:板件密荆裘n U厂1勺 . 1 J』

范明等译.数据挖掘一概念与技术【北京:机械工业出版 M].社, 2001.

r 0勺 L口J

徐勇等译.神经网络模式识别及其实现〔北京:电子工业出 M].版社, 1999.

广0 l s e L口J

闻新等. MATLAB神

经网络应用设计【 .北京:科学出版社, M]20 00 .

500

1 0 00

1 50 0

2 0 00广J门 L债J

迭代次数图2程序运行结果

杨炳儒.知识工程与知识发现[ M] .北京:冶金工业出版社,2 0 0 0.

l s e亡门 L」」

彭祖赠.模糊数学及其应用[ M] .武汉:武汉大学出版社, 2002.

Algorithm of pa tte rn re cognit io n b a s e d o n B P ne u ra l ne tw o rk a nd fuzzy se t a nd its imple me nt w ith Ma tLa bJIANG Liang-xiao, CAI Zhi-hua, LIU Zhao(Department of Computer Science and Technology, China University of Geosciences, Wuhan 430074, China)

Abstract: An algorithm of pattern recognition based on BP neural network and fuzzy set was set forward, and it was implemented with MatLab. Practice proves that the veracity of pattern recognition using this algorithm is very high and programming with MatLab is very brief. Key words:pattern recognition; BP neural network; fuzzy set; MatLab

本文来源:https://www.bwwdw.com/article/7yg1.html

Top