BP神经网络的研究及应用
2015-02-19河南师范大学新联学院程聪河南师范大学新联学院阮莹开封市儿童医院李舸
河南师范大学新联学院 程聪河南师范大学新联学院 阮莹开封市儿童医院 李舸
BP神经网络的研究及应用
河南师范大学新联学院程聪1河南师范大学新联学院阮莹2开封市儿童医院李舸3
摘要:人工神经网络的应用领域非常广泛,其中大部分的人工神经网络模型采用BP网络,它也是前馈网络的核心部分,体现了人工神经网络最精华的部分。通过对BP算法的研究,提出了利用它来实现对我国的三大产业数据的预测方案。并在MATLAB仿真中取得了很好的效果。
关键词:BP神经网络;MATLAB仿真
中图分类号:TP183
文献标识码:A
文章编号:1671-864X(2015)03-0181-02
一、BP神经网络概述
BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP一般为多层神经网络,其模型拓扑结构一般包括输入层(input)、隐层(hide layer)和输出层(output layer)。如图1所示:
二、BP网络的学习算法
(一)最速下降BP算法(steepest descent backpropagation,SDBP)
如图2所示的BP神经网络,设k为迭代次数,则每一次权值和阈值的修正案下式进行:
式中:w(t)为第k次迭代各层之间的连接权向量或阈值向量。x(k)=为第k次迭代的神经网络输出误差对个权值或阈值的梯度向量。负号代表梯度的反方向,即梯度的最速下降方向。α为学习速率,在训练时事一常数。在MATLAB神经网络工具箱中,其默认值为0.01,可以通过改变训练参数进行设置。EK为第k次迭代的网络输出的总误差性能函数,在MATLAB神经网络工具箱中,BP网络误差性能函数的默认值为均误差MSE(mean square error)∶
根据(2.2)式,可以求出第k次迭代的总误差曲面的梯度x(k)=,分别代入式(2.1)中,就可以逐次修正其权值和阈值,并使总的误差向减小的方向变化,最终求出所要求的误差性能。
(二)冲量BP算法(momentum backpropagation,MOBP)
因为反向传播算法的应用广泛,所以已经开发出了很多反向传播算法的变体。其中最常见得事在梯度下降算法的基础上修改公式(2.1)的权值更新法则,即引入冲量因子η,并且0≤η<1的常数。更新后的公式为:
标准BP算法实质上是一种简单的最速下降静态寻优方法,在修正W(K)时,只按照第K步的负梯度方向进行修正,而没有考虑到以前积累的经验,即以前时刻的梯度方向,从而常常使学习过程发生振荡,收敛缓慢。动量法权值调整算法的具体做法是:将上一次权值调整量的一部分迭加到按本次误差计算所得的权值调整量上,作为本次的实际权值调整量,即公式(2.3)所示:η是冲量系数,通常0≤η<1;α为学习率,范围在0.001~1之间。这种方法所加的冲量因子实际上相当于阻尼项,它减小了学习过程中的振荡趋势,来改善收敛性。冲量法降低了网络对误差曲面局部细节的敏感性,有效的抑制了网络陷入局部极小值。
(三)学习率可变的BP算法(variable learnling rate backpropagation, VLBP)
标准BP算法收敛速度缓慢的一个重要原因是学习率选择不当,学习率选得太小,收敛慢;反之,则有可能修正的过头,导致振荡甚至发散。因此可以采用图3所示的自适应方法调整学习率。
自适应调整学习率的梯度下降算法,在训练的过程中,力求使算法稳定,而同时又使学习的不长尽量地大,学习率则是根据局部误差曲面作出相应的调整。学习率则是通过乘上一个相应的增量因子来调整学习率的大小。即公式(2.5)所示:
其中:Kinc为使步长增加的增量因子,Kdec为使步长减小的增量因子;α为学习率。
三、建立BP神经网络预测模型
BP预测模型的设计主要有输入层、隐含层、输出层及各层的个数和层与层之间的传输函数。
(一)网络层数
BP有一个输入层和一个输出层,但可以包含多个隐含层。但理论的上已证明,在不限制隐含层节点的情况下,只有一个隐含层的BP就可以实现任意非线性映射。
(二)输入层和输出层的节点数
输入层是BP的第一层,它的节点数由输入的信号的维数决定,这里输入层的个数为3;输出层的节点数取决于BP的具体应用有关,这里输出节点为1。
(三)隐含层的节点数
隐含层节点数的选择往往是根据前人设计所得的经验和自己的进行的实验来确定的。根据前人经验,可以参考以下公式设计:
其中:n为隐含层节点数;m为输入节点数;t为输出节点数;a为1~10之间的常数。根据本文要预测的数据及输入和输出节点的个数,则取隐含层个数为10。
(四)传输函数
BP神经网络中的传输函数通常采用S(sigmoid)型函数:
如果BP神经网络的最后一层是Sigmoid函数,那么整个网络的输出就会限制在0~1之间的连续;而如果选的是Pureline函数,那么整个网络输出可以取任意值。因此函数选取分别为sigmoid和pureline函数。
四、BP神经网络预测的MATLAB仿真实验
(一)样本数据的预处理
本文的样本数据来源于中国历年国内生产总值统计表,为了让样本数据在同一数量级上,首先对BP输入和输出数据进行预处理:将原样本数据乘上0.0001,同时将样本数据分为训练样本集和测试样本集,1991~1999年我国的三大产业的各总值的处理结果作为训练样本集,即1991~1998年训练样本作为训练输入;1999年训练样本数据作为输出训练输出;1992~2000年我国的三大产业的各总值的处理结果作为测试样本集,即1992~1999年的测试样本作为测试输入,2000年测试样本数据作为测试输出。
(二)确定传输函数
根据本文的数据,如第3节所述,本文选取S函数(tansig)和线性函数(purelin)。
(三)设定BP的最大学习迭代次数为5000次。
(四)设定BP的学习精度为0.001;BP的学习率为0.1。
(五)创建BP结构如图4所示;训练BP的结果图5所示:
正如图5所示的数据与本文所示设计的网络模型相符,且如图5所示当BP神经网络学习迭代到99次时,就达到了学习精度0.000997788,其学习速度比较快。
(六)测试BP神经网络
通过MATLAB对测试样本数据进行仿真,与实际的2000年我国三大产业的各生产总值比较(见表1),说明BP神经网络预测模型是可行的。
表1 2000年我国三大产业的各生产总值
五、总结
总之,在人工神经网络的实际应用中,BP神经网络广泛应用于函数逼近、模式识别/分类、数据压缩等。通过本文可以体现出MATLAB语言在编程的高效、简洁和灵活。虽然BP在预测方面有很多的优点,但其还有一定的局限性,还需要进一步的改进。
参考文献:
[1]周开利,康耀红.神经网络模型及其MATLAB仿真程序设计[M].北京∶清华大学出版社,2005.7
[2]张德丰等.MATLAB神经网络应用设计[M].北京∶机械工业出版社,2009.1
[3](美)米歇尔(Mitchell,T.M.)著;曾华军等译.北京∶机械工业出版社,2003.1
[4]岂兴明等编著.MATLAB7.0程序设计快速入门[M].北京∶人民邮电出版社,2009.7
[5]李正学.神经网络理论及其在股市短期预测中的应用[D].长春∶吉林大学,2004
1.程聪(1981--)河南省开封市人毕业于河南财经政法大学计算机应用技术专业数字图像处理方向
2.阮莹河南师范大学新联学院毕业于河南科技大学计算机应用技术专业
3.李舸开封市儿童医院毕业于河南大学护理学院儿童护理智能技术专业
作者简介: