基于BP网络学习算法的英文字符识别
双击自动滚屏
作者:于海平 余红珍 【字体:】
基于BP网络学习算法的英文字符识别
于海平 余红珍
(武汉科技大学城市学院 湖北 武汉 430083)
摘 要:介绍了BP神经网络的基本原理,指出了BP算法收敛速度慢、易陷入局部及小值等缺陷,在标准BP算法的基础上引入了几种优化BP算法的方法。针对模式识别应用领域,通过实例,运用Matlab编程对各种较好的网络学习算法的性能进行比较,给出了一个三层BP网络识别含噪声的字母的实例。实验结果表明,改进的BP算法有效地提高了BP算法的收敛速度。
关键词:模式识别;学习算法;BP神经网络
中图分类号:TP183 文献标识码:A
神经网络是由大量简单神经元连接而成的复杂网络,它是在现代生物学研究人脑组织结构的基础上提出的用来模拟人类大脑神经思维活动的一种模型结构,具有高度的并行结构和非线性映射能力。目前,人工神经网络已经在自动控制、故障诊断与检测、模式识别和分类等领域得到越来越广泛的应用。人工神经网络的模型现在有数十种,包括基于误差反向传播算法的多层前馈网络,即BP网络、Hopfield网络、ART网络和Kohonen网络等,其中BP网络因其结构简单、易于实现,是目前研究最多、应用最广的一种神经网络。BP网络由输入层、输出层及隐含层组成,每层由若干个神经元组成,输入信号由输入层传递到隐节点,经过传递函数后,再把隐节点的输出信号传播到输出层节点,经过处理后给出输出结果。其中网络中每一层神经元的状态只影响下一层神经元的状态。笔者运用改进的BP算法,构建了一个三层的BP网络用来识别26个英文字母,取得了较好的效果。
1 BP算法及其改进
1.1 BP算法
BP神经网络算法也称为误差反向传播算法(Error Back-Propagation Algorithm),是一类有指导学习算法,用于BP网的权值和阈值学习。BP神经网络的学习过程分为信息的正向传播过程和误差的反向传播过程两个阶段。外部输入的信号经输入层、隐含层的神经元逐层处理向前传播到输出层给出结果。如果在输出层得不到期望输出,则转入逆向传播过程,将实际值与网络输出之间的误差沿原来联结的通路返回,通过修改各层神经元的权值,使误差减少,然后再转入正向传播过程,反复迭代,直到误差小于给定的值为止。图1是一个三层网络的结构图。
标准BP算法描述如下:
(1)初始化:设定学习率μ,允许误差ε,最大迭代次数,置循环步数i=0。
(2)正向计算:将第P个样本(Xp={xp1,…xpN})顺序输入到网络中,按下式分别计算实际输出:
O1pk(i)=f(■w1nk(i)xpn)
O2pm(i)=f(■w2km(i)O1pk(i))
其中激活函数采用S型sigmoid函数。
(3)计算均方误差:E=■■(tpm-O2pm)2,若E≤ε,则停止迭代,否则执行下一步。
(4)反向计算:计算权值的改变量并更改权值。
△w1nk(i+1)=μ■δpk(i)xpn
△w2km(i+1)=μ■δpk(i)O1pk(i)
w1nk(i+1)=w1nk(i)+△w1nk(i+1)
w2km(i+1)=w2km(i)+△w2ikm(i+1)
(5)置i=i+1,返回(2)。BP算法是目前应用最广泛的神经网络学习算法,但是在使用过程中也存在一些不足之处,主要表现在:收敛速度慢、易陷入局部极小点、泛化能力差、隐节点数和初始值的选取缺乏理论指导、未考虑样本选择对系统学习的影响。
1.2 BP算法的改进
1.2.1 附加动量项法
针对收敛速度比缓慢这一缺陷,Rumelhart等人建议在权值调整式中加入动量项,也就是在反向传播的基础上,在每个权重的变化上加上一项正比于前一次权重变化量的值,并以此来产生新的权值的变化,公式如下:
△w(i+1)=α*△w(i)+μ*α*■
其中α为动量因子,一般取0~1之间的数值,加入动量项可以有效地加速收敛速度,避免震荡,从而有效地避免收敛的不稳定。
1.2.2 学习率可变法
在训练的过程当中,该算法使学习的步长尽量大,学习率则根据局部误差曲面进行相应的调整。当误差以减小的方式趋于目标时,学习率增加,进而步长增加,而当误差增加超过事先设定的值时,该算法使学习率减少,从而步长减小。同时舍去前一次修正的过程。
1.2.3 导数提升法
基于标准的BP算法各层权值的调整都与S函数的导数有关,而S函数趋于0或1时,导数将趋于0,BP网络将丧失调节的能力,易陷入一个平坦的局部极小区域。所以,导数易趋于0是导致BP算法收敛极慢的重要因素,如果对S函数进行如下调整:
f′(α)=f(α)+ωa
调整参数?覣是某一正数,一般取0.05~1之间,过小或者过大都不能起到相应的效果。
1.2.4 遗传算法(GA)对BP算法的优化-混合GA-BP算法
GA基于自然选择和自然遗传这种生物进化机制的搜索方法,GA求解过程本质是随机寻优过程,不存在局部收敛问题。将遗传算法与BP网络结合,不仅能发挥神经网络的泛化映射能力,而且可以克服BP算法易陷入局部极值问题,使网络具有较快的收敛速度,从而可以提高学习的能力。
此外,人们还提出了许多其它措施以加快BP算法的收敛速度。一方面,学习过程实际是一个最优化问题,用瞬时梯度修正权值相当于爬山法,如果用共轭梯度法或牛顿法,虽然计算复杂些,但可以改善收敛过程;另一方面,可以把监督学习过程看作是一个线性自适应滤波器,采用最小二乘法(RLS)或者扩展的卡尔曼滤波算法(EKA)也可以改进收敛过程。
2 仿真试验
根据以上介绍的BP算法及各种改进方法,采用Matlab编程用来实现字符的识别。本实例采用自适应学习率动量梯度下降反向传播算法对网络进行训练,将26个英文字母以位图的形式存入,即本系统采用7×5的英文字母“0、1”数字编码。以下是具体的步骤:
(1)载入训练样本。本例是以“a”到“z”及“A”到“Z”为样本集。
(2)建立网络对象。函数newff是建立一个可训练的前向神经网络函数,详细定义如下:newff(PR,[S1 S2 …SN],{TF1 TF2…TFN},BTF,BLF,PF),其中:第一个参数是一个R*2的矩阵用来定义R个输入向量的最大值和最小值;第二个参数是用来表示每层神经元个数的数组;第三个参数是包含每层用到的转移函数名称的数组;最后一个参数是用到的训练函数的名称(本例使用traingdx函数)。
(3)训练神经网络。
(4)测试神经网络。
(5)绘制网络误差曲线。
本例的网络输入个数即为字符特征矢量的维数35,输出神经元的个数即为字符模式矢量的维数26,隐层神经元的个数取值为10,隐层和输出层神经元的传递函数均取logsig函数,网络训练函数取traingdx(本例仅以字母A为例说明)。其中网络训练曲线见图2,网络误识率曲线见图3,含噪声的字母A的位图以及相应的仿真结果分别见图4、图5。
3 结语
笔者通过研究标准的BP神经网络基本算法,提出了几种改进方案,并将改进的BP算法应用于含有噪声的字母的识别,该算法简单易行,识别效果良好。由于本文采用5*7的英文字母二值编码,所以对应复杂字体还无法识别,这还有待于作进一步的研究。
参考文献
1 范磊,张运陶,程正军. 基于Matlab的改进BP神经网络及其应用[J]. 西华师范大学学报(自然科学版),2005(1)
2 高隽. 人工神经网络原理及仿真实例[M].北京:机械工业出版社, 2005
3 王小平,曹立明. 遗传算法——理论·应用与软件实现[M].西安:西安交通大学出版社,2002
4 许东,吴铮. 基于MATLAB6.x的系统分析与设计——神经网络[M]. 西安:西安电子科技大学出版社, 2003
(责任编辑 何 丽)
English Character Recognition Based on BP Network Learning Algorithm
Abstract: This paper introduces the fundamental of BP neural network, then some defects such as slow convergence rate and easy to get into local minimum in BP algorithm are pointed out, finally, in view of these limitations, several methods are led to optimize BP algorithm. Aiming at pattern recognition application, with Matlab programming tool, this paper studies the training performance of these learning algorithms through comparison. On this basis, this paper offers kinds of programming recognition of using BP network to recognize the noisy English character. Experiment results show that these improved methods increase efficiently the convergence performance of BP algorithm.
Key words: pattern recognition, learning algorithm, BP neural network
发布时间:2010-7-16 11:10:14 点击:282 次