摘 要:本文通过分析激励函数在传统BP算法中的作用,在激励函数中引入了可调参数,在力求保持传统BP算法简洁性的基础上,使其参数动态可调,有效的加快了网络学习的收敛速度。
1 问题的提出
传统BP算法最大的问题是网络训练时间过长,甚至会完全不能训练。对此国内外学者进行了大量的研究,研究的内容主要有改进误差函数,添加惯性冲量,批处理学习样本,动态调整学习速率和惯性因子以及基于模拟退火或遗传算法的改进等方面[1-3]。这些改进的算法不仅常常需要对传统BP算法作较大的改动,而且没有对传统BP算法进行实质性的改变。传统BP算法实质上假定各神经元的激励函数为相同的,不可变更的,即网络的信息仅分布存储于W中,仅仅只对连接权值W进行调整。但是生物的学习过程应该是除了各神经元细胞间连接强度的调整外,其本身的输入输出关系也是在变动和调整的[4]。基于这种思想,本文在激励函数中引入了可调参数,在力求保持传统BP算法简洁性的基础上,使其参数动态可调,有效地加快了网络的收敛速度和逼近精度。
2 激励函数对网络性能的影响
2.1 BP网络的工作原理
BP网络是由输入层,若干隐含层和输出层互相连接组成。连接的结构是,前后相邻层的任意两节点均相互连接,非相邻层的节点无任何连接。从输入层开始逐层连接,到输出层连接结束。同层节点间无连接。隐含层的激励函数一般为非线性函数。输出层的激励函数可以是线性的,也可以是非线性的。BP网络的工作过程通常有两个阶段组成。一个阶段是学习期。在这一阶段,各节点的输出保持不变,而网络的学习则是从输出层开始,反向逐层逐个节点计算各连接权值的修改量,以修改各连接权值,直到输入层为止。另一个阶段是工作期。在这一阶段,网络各节点的连接权值不变,网络的计算从输入层开始,逐层逐个节点计算各个节点的输出,直到输出层的各节点计算完毕[4]。
设BP网络非输入层的任意节点??i对于训练样本(XK,YK),输出为OK,网络的输入为XK,期望输出为YK,学习步长为η,有N个训练样本,K为样本序号(K=1,2,…,N),使用平方误差函数
则??BP网络妆权值的学习算法为W=W![]()
2.2 激励函数对网络性能的影响
设BP网络三层节点分别表示为输入节点xj,隐节点yi,输出节点Oi。输入节点与隐节点间的网络权值为wij,隐节点与输出节点的网络权值为wij。则BP模型的计算公式如下:
隐节点神经元的阈值,neti为隐节点神经元的输入总和。??
(2)输出节点的输出为
为输出节点神经元的阈值,neti为输出节点神经元的输入总和。??
(3)输出节点的误差为
为输出节点的期望输出。??
(4)隐层至输出层权值调整为![]()
因为E是多个Ok的函数,且只有一个Ol与wli有关,同时各Ok之间相互独立,由此可得
利用(2)式和(3)式可以将(1)式化简为![]()

同理,因为E是多个Ol函数,又因为针对某一个wij只对应一个yi,且yi与所有的Ol都有关(上式只对l求和)。由此可以得到
利用(7)~(9)式可以将(6)式化简化
从上面的梯度公式可以看出:??
(1)在保证收敛的前提下,由(11)式可知权值调整的幅度越大,则梯度的变化也越大,学习速度也越快。由(1)式可知梯度的变化
与激励函数的导数f′(neti)成正比。由于激励函数的导数在学习过程中大量地被使用,因此对整个网络的学习过程将有非常大的影响。
(2)由于sigmoid型的激励函数都存在饱和区,当神经元的输出落入激励函数的饱和区时,需要对权值作较大的修正才可能尽快使处理单元逃出饱和区[5]。由于在饱和区中,激励函数的导函数值都很小,因此每次学习周期只能对权值作较小修正,输出单元会在一段时间工作在平坦区中,使网络的均方根误差保持不变或变化很小,如图1所示。此时,相当于整个调节过程几乎停顿下来,这就产生了所谓的麻痹现象,从而减慢了网络的收敛速度。基于以上分析,我们应该选择合适的激励函数并且引入一些必要的调整参数,当神经元的输出落入激励函数的饱和区时,使激励函数的导函数值可以随误差的变化而作相应的调整,有效的避免麻痹现象的产生,加快网络的收敛速度。
3 激励函数的改进
3.1 激励函数的选择
首先分析几个常用的激励函数:
(1)logsig对数S型(sigmoid)传递函数,它可以将神经元的输入范围(-∞, ∞)映射到(0,1)的区间上,它是可微函数,其表达式为:y=1/1 e-x????
(2)??tansig双曲正切S型(sigmoid)传递函数,它可以将神经元的输入范围(-∞, ∞)映射到(-1, 1)的区间上,它是可微函数,其表达式为:![]()
(3)线性函数purelin,它也是可微函数,其输出可以是任意值,其表达式为:y=x
对三层??BP网络而言,如果最后一层是sigmoid型神经元,那么整个网络的输出就限制在一个较小的范围内。对logsig传递函数而言,输出范围是(0,1),对tansig传递函数而言,输出范围是(-1, 1)。如果是purelin型神经元,则整个网络的输出可以是任意值。在标准BP算法中,神经元的激励函数通常取logsig函数f(x)=1/1 e-x。比较两个sigmoid型函数,可知tansig函数比logsig函数的输出范围大,且含正负区间。综上对激励函数的分析,针对本文讨论的用于函数逼近的三层BP网络,我们选择purelin函数作为输出层神经元的激励函数,tansig函数作为隐层神经元的激励函数。
3.2 激励函数的改进及其性能分析
本文选取tansig函数作为隐层节点激励函数的基本形式,并且在
的基础上作进一步的改进。改进后的激励函数为
,其中bn,cn为激励函数中的可调参数。参数nn用于改变激励函数的斜率,参数cn的作用使得激励函数沿水平方向左右移动。两个参数的引入使得激励函数对于输入x而言可以自由进行伸缩。下图是参数bn,cn对激励函数导数的影响。
由图可知,参数bn,cn的引入实现了激励函数的动态调整。因为对于不同的参数值bn,cn,激励函数的导数值都有很大的不同,所以可以根据误差的要求利用梯度下降法的基本原理找到最优的参数值bn,cn,从而找到的激励函数最佳的导数值f′(neti)。当神经元的输出接近饱和值时,即f′(neti)→0)由![]()
,即权值的变化接近于零,从而整个网络的调节过程几乎停顿下来,这就产生了所谓的麻痹现象,减慢了网络的收敛速度。此时,必须“软化”激励函数的特性,以减缓其趋于饱和的速度(即使f′(neti)的绝对值增大)。根据梯度下降法由下列两式
可以找到最伟的参数值bn,cn。因为bn和cn对激励函数的导数值f′(neti)有很大的影响(如图(2)(3)所示),所以由式f′(neti)=
可以求得激励函数最佳的导数值。又因为![]()
所以梯度
的变化加快,从而网络的学习速度加快。此时网络的学习将快速脱离误差曲面的平坦区域(对应f′(neti)接近于零处),即有效的避免了麻痹现象的产生,加快了BP算法的收敛速度。
3.3 激励函数参数的学习公式
设隐层节点i的输入为neti,输出为yi,则有yi=f(neti,bi,
,输出层神经元仍采用线性函数。根据梯度下降法的基本原理可以得到了三层BP网络激励函数参数的学习公式

4 仿真实例
采用一个隐层的单输入单输出网络进行函数逼近。隐层节点数为5个,学习速率取0.02。21组单输入矢量和相对应的目标
用本文提出的方法训练网络,经过3939次迭代,得到图5中的逼近曲线,误差为SSE=0.01。作为比较,采用同样的样本,同样的网络结构,经标准BP算法训练大约7000次,才能达到同样的效果,如图4所示。此算例表明,本提出的方法与标准BP算法相比,收敛速度快,精度高。
由于BP神经网络的非线性,所以麻痹现象的产生还与初始值的选取有很大的关系。但是选择一组较理想的初始值较为困难,且缺乏任何理论性的指导。本文提出的改进算法可以在初始值选择不理想的情况下,较好的避免网络学习过程中可能出现的麻痹现象,从而达到较好的训练效果。
5 结论
本文通过分析激励函数在传统BP算法中的作用,在激励函数中加入了可调参数,使其在学习过程中动态可调。改进的算法不仅遵循生物学习过程的特点,而且保持了传统BP算法的简洁性。仿真结果表明,在学习过程中动态调整激励函数可以有效提高网络的逼近精度和收敛速度。又因为采用连续函数作为激励函数的神经网络可以实现任意一个非线性映射[4],所以与单纯增大激励函数导数范围或者构造组合函数作为新的激励函数相比较[7],本文提出的基于sigmoid型动态调整的激励函数不影响网络的收敛性。实际上,BP网络在实际应用中的最大障碍就是学习速度慢,对激励函数的改进可以有效地解决这一问题。如本文提出的基于sigmoid型动态调整的激励函数,也可以选择其它类型的激励函数。又由于改进非线性变换函数的实质可以认为是通过增加变量空间的维数来提高收敛速度[2],所以还可以选择高阶的非线性函数或者采用非单调函数作为激励函数[8]。总之,关于BP网络隐层单元激励函数的研究值得作进一步的探讨。?お?
参考文献
[1]胡耀垓,等.一种改进的神经网络bp算法[J].武汉大学学报,1999,45(1)
[2]申东日,等.Bp网络改进方法概述[J].化工自动化及仪表,2000,27(1):30-32
[3]刘曙光,等.前馈神经网络中的反向传播算法及其改进:进展与展望[J].计算机科学,1996,23(1)
[4]潘涛.BP神经网络模型中活化函数对网络性能影响的研究[J].安徽师大学报,1998,21(3)
[5]王铁,陈进.Bp算法中学习率及形状因子对学习速度的综合影响[J].上海交通大学学报,1997,31(3)
[6]姜天戟,袁曾任.新激励函数下前馈神经网络及其在天气预报中的应用[J].信息与控制,1995,24(1)
[7]王玮,等.非单调的多层神经网络[J].计算机工程,2000,26(4)