神经网络BP算法改进及其性能分析
2017-11-02陈智军李洋莹
陈智军++李洋莹
摘要:传统的神经网络BP算法具有强大的自学习、自适应及非线性映射能力,但算法具有收敛缓慢、易陷入局部极优等缺点。针对传统BP算法的不足提出改进方法,并用于解决异或问题和字符识别问题。实验表明,改进算法能提高网络学习速度、减小网络误差,具有更好的收敛性和鲁棒性,各方面都明显优于传统BP算法。
关键词:神经网络;BP算法;学习速率
DOIDOI:10.11907/rjdk.171726
中图分类号:TP312文献标识码:A文章编号:16727800(2017)010003903
0引言
人工神经网络是由大量处理单元互联组成的非线性、自适应信息处理系统,它是在现代神经科学研究成果的基础上提出的,通過模拟大脑神经网络处理、记忆信息的方式进行信息处理。截至目前,已有大量的训练算法和网络模型[17]被提出,其中BP神经网络应用最为广泛。BP神经网络的核心是“误差反向传播”学习算法。BP算法系统地解决了网络中连接权值的学习问题,使BP网络成为目前应用最广泛的网络模型[8]。BP算法的基本思想是:学习过程由正向传播和反向传播组成。在正向传播中,样本从输入层输入,然后经过隐层处理后传播到输出层。如果输出与预期结果不一致,学习过程转为反向传播;在反向传播中,误差通过隐层被反馈到输入层,成为网络连接权值修改的基础。网络根据误差调整各层的连接权值以减小误差。这两个传播过程是权值调整的周期循环过程,即网络的学习过程。然而,传统的BP算法存在缺点:收敛速度慢,容易收敛到局部最优而不是全局最优解,这极大地阻碍了神经网络的进一步应用。本文根据网络学习过程分析这些问题产生的原因,并提出改进方法。改进后的算法可以提高学习速度,减小网络误差,并具有更好的收敛性和鲁棒性。
1BP神经网络
1.1BP神经网络结构
BP神经网络模型[9]是目前应用最广泛的神经网络模型,它属于多层网络,包括输入层、隐含层和输出层。相邻层中的所有神经元都连接,而同一层的神经元之间没有连接。神经元之间的连接权值可以通过学习过程调整。输入信号从输入层神经元,依次通过各隐含层神经元,最后传递到输出层神经元。
1.2BP算法
BP算法步骤如下:
(1)初始化权值。
(2)提供学习样本,输入Xi=x1,x2,,…,xm(i=1,…,L,表示学习样本的数量;m表示输入神经元的个数);对应的期望输出为Di=d1,d2,…,dn(n表示输出神经元的个数)。
(3)计算实际输出Yi=y1,y2,…,yn。
(4)计算误差E=1L∑Lp=1Ep;Ep=∑ni=1(di-yi)2。
(5)调整权重Δwij=-ηEwij,η表示学习速率。
(6)如果网络误差足够小或迭代步数溢出,停止算法;否则转到步骤(2)。
2BP算法缺点及改进
2.1BP算法缺点
BP算法优势明显,但在实际中有以下缺点[8,10]:
(1)收敛速度太慢。误差减小太慢使得权值调整的时间太长,迭代步数太多。由于梯度逐渐变为0,越接近局部最优,收敛速度越慢。为了保证算法的收敛性,学习速率不能过大,否则会出现振荡。
(2)算法往往收敛到局部最优。BP算法调整权值的基础是误差梯度下降,而局部最优的梯度和全局最优的梯度均为0,因此算法不能将局部最优与全局最优区分开。
(3)隐层数和隐层神经元的数目往往取决于经验而非理论指导。因此,网络往往有很大冗余,这导致学习时间增加。
2.2BP算法改进
BP算法的突出问题是算法收敛速度太慢。为了提高收敛性能,传统方法是在学习过程中添加动量项,即:
Δw(k+1)=-ηEw(k)+αΔw(k)(1)
在式(1)中,α表示动量项,η表示学习速率。
仿真实验表明,该方法对提高收敛速度有一定效果,但还不够好,主要问题是学习速率的选择比较困难。从BP算法公式可以看出,学习速率决定了收敛速度。一般而言,学习速率越大,收敛速度越快。然而,如果学习速率过大,就会出现振荡现象。如果学习速率保持不变,在误差表面的平坦区域因为梯度小,收敛将非常缓慢。而在误差表面曲率大的区域,因为梯度大,将会在局部最优附近发生振荡。
从上述分析可以看出,无论在平坦区域还是陡峭区域,如果学习速率能自适应变化,收敛速度和收敛性能都会得到提高。文中本次迭代的误差将与上一次迭代的误差进行比较。如果误差减小,意味着结果在逼近最优,学习速率应增加;如果误差加大,且超过一定的百分比,则意味着结果在偏离最优,最近一次的调整将被中止,并且学习速率将被降低。公式如下:
η(t+1)=(1+α)η(t)Et+1 在式(2)中,α和ξ都是正小数。 除了自适应学习率的方法,本文同时还采用了以下几项改进方法: (1)累积误差校正。传统的BP算法在每次输入后对权值进行修正,而累积误差校正积累所有样本的误差。如果有n个样本,输入后将有n个误差。这n个误差将被累积,并作为反向传播调整权值的基础。与传统BP算法相比,权值调整的频率明显降低(每个学习过程减少n-1次调整),因此,收敛速度相应增加。 (2)训练样本重组。传统的BP算法中,如果在每个训练步骤时样本顺序不变,则在上一步训练中误差较大的样本在本步中仍会有较大误差,这也是传统BP算法收敛速度慢的另一个原因。在改进算法中,样本的顺序将被重组,以避免这种问题。 (3)隐含层数量选择。神经网络的许多特点是由于隐含层的存在。然而,如何选择隐含层的数量不得知。原则上,任何问题都可以由三层BP网络解决,因此,为了简化网络结构和提高速度,本文提出三层网络结构。
(4)隐含神经元数量选择。BP网络的函数逼近能力与隐含神经元数量有很大关系。如果隐含神经元数量太小,网络不能很好地训练,则精度不会很高。随着隐含神经元数量的增加,网络性能会得到改善,但同时收敛速度和鲁棒性会降低。在实践中,一个好的结果只能根据经验通过大量的实验获得。经验公式如下:
N=n+m(3)
式中,N表示隐层神经元的数目,n表示输入单元的个数,m表示输出单元的个数。
3实验分析
3.1异或问题
根据异或问题的特点,输入层和隐含层的神经元个数为2,输出层神经元数为1。传统BP算法和改进BP算法的学习结果对比如表1、表2所示。
从表1、表2可以看出,改进BP算法性能明显优于传统BP算法,它能以更少的迭代步骤获得更小的误差。
3.2字符识别问题
将改进的BP算法应用于字符识别问题,从另一方面验证其性能。6个字符:A、B、C、D、E、F用5×7点阵表示作为实验对象,如图1所示。
图1字符点阵
图1中的每个字符点阵用一个数组表示,数组中“1”表示阴影点,“0”表示空白点。例如,字符“A”的点阵表示为数组{0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1 } 。
網络有35个输入单元(每个单元对应点阵中的1个点)、7个隐含神经元和6个输出单元(每个单元对应1个字符)。
传统BP算法和改进BP算法在字符识别问题中的比较如表3所示。
从表3可以看出,改进BP算法的输出比传统BP算法更接近期望输出“1”,并且与传统BP算法相比,改进BP算法能以较少的步骤获得较小的误差。这些都表明,改进BP算法性能明显优于传统BP算法。
此外,为了更充分地比较传统BP算法和改进BP算法,将噪声加入输入数据。加入噪声后,0~0.2都可以代表“0”,0.8~1都可以代表“1”。学习结果对比如表4所示。
从表4可以看出,当噪声加入后,改进BP算法仍然明显优于传统BP算法。将表3、表4相比较可以看出,当噪声加入后,传统BP算法的迭代步骤和误差显著增加,而改进BP算法的迭代步骤和误差变化很小。这表明改进BP算法比传统BP算法具有更好的鲁棒性,也更适合在实践中应用。
4结语
综上所述,本文提出的改进BP 算法在各方面均优于传统BP算法。从XOR问题和字符识别问题中可以看出,改进BP 算法具有3方面的优势:①可以明显提高学习速度;②可以明显减少网络误差;③具有更好的鲁棒性。未来如果能在隐层数和隐层神经元数量的选择上取得突破,BP神经网络将有着更为广阔的应用前景。
参考文献:
[1]邱天宇,申富饶,赵金熙.自组织增量学习神经网络综述[J].软件学报,2016,27(9):22302247.
[2]刘智斌,曾晓勤,刘惠义,等.基于BP神经网络的双层启发式强化学习方法[J].计算机研究与发展,2015,52(3):579587.
[3]徐昕,贺汉根.神经网络增强学习的梯度算法研究[J].计算机学报,2003,26(2):227233.
[4]胡伍生,迪达尔,王昭斌.神经网络BP改进算法及其性能分析[J].现代测绘,2016,39(6):14.
[5]丁硕,常晓恒,巫庆辉,等.数值优化改进的BP神经网络逼近性能对比研究[J].山东科学,2014,27(1):6891.
[6]李康顺,李凯,张文生.一种基于改进BP神经网络的PCA人脸识别算法[J].计算机应用与软件,2014,31(1):158161.
[7]关学忠,张璐.基于改进的BP神经网络车牌识别的研究[J].自动化技术与应用,2015,34(7):6668.
[8]邓万宇,郑庆华,陈琳,等.神经网络极速学习方法研究[J].计算机学报,2010,33(2):279286.
[9]李道伦,卢德唐,孔祥言,等.基于BP神经网络的隐式曲面构造方法[J].计算机研究与发展,2007,44(3):467472.
[10]王磊,王汝凉,曲洪峰,等.BP神经网络算法改进及应用[J].软件导刊,2016,15(5):3840.
责任编辑(责任编辑:孙娟)endprint