论文部分内容阅读
摘要 BP网络是现在应用最广泛的神经网络。但经典的网络训练算法往往采用的误差函数比较单一,使得网络训练速度比较慢,针对这种情况,提出一种新的误差函数,并综合考虑,优化算法,提高了网络的训练速度。用Matlab进行仿真,通过分析比较,证明了新算法的优越性。
关键词 BP神经网络 误差函数 训练速度 算法
中图分类号TP183 文献标识码A
Optimization algorithm of BP neural network error function
ZHANG Miao(Air Force Engineering University Engineering College,Shanxi Xi’an 710038,China)
LEI Hong-li (Xi'an running water main corporation Nanjiao water works,Xi’an 710054,China)
Abstract BP network is the most pop neural network at present. However,separate error function is often applied in the traditional algorithm of network training,which reduces the training velocity of the network. In this case,a new error function is brought forward. Two functions are considered and the algorithm is optimized,which increase the training velocity. Matlab is used to simulate the new algorithm. And the new algorithm is proved to be advanced from the simulation.
Key words BP neural network; Error function; Training velocity;Algorithm
人工神经网络作为一种非线性建模和模式识别方法,具有良好的非线性品质、极高的识别精度、灵活而有效的学习方式、完全分布式的存储结构和模型结构的层次性,已广泛地应用于模式识别、语音识别、智能控制、信号处理、生物工程、非线性优化领域,并显示出它的巨大潜力[1]。误差反向传播(Error Back Propagation—BP)算法(1986年由以Rumelhart和McCelland为首的科研小组提出)使得神经网络获得了巨大的生机。但经典的BP算法因为误差函数选取比较单一,使得网络的训练速度比较慢。本文在经典BP的误差函数的基础上提出了一种新的误差函数,从而提高网络的训练速度。
一、BP神经网络模型
BP网络是目前应用最广泛的神经网络之一,是一种正向求解、反向传播并达到修改网络层次之间连接权值的网络模型。BP算法的具体思想是:对一个输入样本,从输入层经隐含层逐层正向计算,得到输出层的输出。然后,让它与期望样本比较,如有偏差,则把输出层单元的误差向输入层逆向传播,由此调整连接权值与阈值,从而使网络输出值逼近期望输出,通常使之达到误差均方值取最小为止[5]。
典型的BP网络是3层前馈网络,即输入层、隐含层和输出层,其中每层的结点与上下层的结点间都有联系,而同层结点之间不存在联系。其基本的网络结构如图1所示[2]。
其中xj为第j个输入,yi为第i个输出,ωij为所有与第i个神经元相连的权值。
BP神经网络的工作过程通常由二个阶段组成。第一阶段是学习期,在这阶段中的网络,通过给定的已知数据和已知的目标,调节各层间的权值,调节公式如下:
式中η为学习率,E(n)为第n次迭代期望值与实际输出的均方误差,依次迭代,直到实际输出与期望输出间的误差满足某一设定误差值。
第二阶段是工作期,在这阶段网络各结点的连接权值及变换函数均不变,利用训练好的网络对输人数据进行正向计算,最后输出识别结果。
二、误差函数的优化算法
(一)经典误差函数算法
假设BP神经网络结构如图1所示,有N个输入层神经元,M个输出层神经元,P个隐层神经元。选定一个非线性光滑活化函数f1=f2=f:R1→R1,并按照稍候给定的规则确定权值矩阵W={Wmp}1≤m≤M,1≤p≤P和V={Vpn}1≤p≤
是隐层单元对第m个输出单元的线性输入。
权值W和V的确定(学习过程)应使误差函数E(W,V)达到极小,我们采用常用的方法即梯度下降法,取得当前权值
(二)改进误差函数算法
由权值变量的计算可知,选取误差函数时需要考虑到以下两点:首先,函数须满足可微或是局部可微,其次,函数要在Oj=yj处取得极小。根据这两个要求,结合神经元节点函数即非线性光滑函数的特点,我们定义一个新的误差函数:
我们假定f1(x)=f2(x)=f(x)的饱和值为±1(对于常用的S型函数f(x)= 和f(x)=tanh(x)均满足此条件)。
采用常用的方法即梯度下降法,取得当前权值Wmp和Vpn的改变量为:
(三)误差函数优化算法
如果我们取改进的S型函数[3]:f(x)=tanh(βx)(17)
f′(x) =β(1-f2(x))(18)
利用改进的误差函数在计算权值变量时,对应的式子(14)应为:
此式与式(8)相比较可以看出,(8)式中的导数项f′(H ) 变成了常数项β,而这一改变克服了权值修正公式(7)的如下缺点:当实际输出y 极端错误时(例如:y 由式(18),f′(H )接近于零,从而使本应作较大改变的当前权值W只得到极小的改变。这样直接影响了网络训练时的收敛速度。而如果我们采用改进的误差函数则不存在这些问题,可以明显地提高训练速度,达到训练效果。
但是改进后的误差函数也有其不足之处,首先,此误差函数存在局部不可微(如当目标输出向量中的元素O =1时,误差函数在此点不可微,使得训练无法进行)。其次,在非局部极限时,对当前权值的改变不够灵活,得到的曲线不够光滑。
我们综合两种误差函数的特点,在误差判断时我们采用平方型误差函数,而在计算当前权值改变量时,我们把两者结合起来,这样我们可以得到相应于(8)式的公式:
然后再利用上面的算法来计算权值的改变量,进行网络的训练。
三、仿真
根据BP网络算法的原理,我们应用Matlab6.5进行仿真比较[6]。
(一)设置BP神经网络。
1.取定一组训练样本
其中I样本输入向量,O为目标输出。
2.建立一个三层的网络,输入层、隐层、输出层的神经元数目分别为:2、3、1。其中网络隐层神经元数目的选取参阅了文献[4]。
3.选取网络权值的初值。在Matlab中,用rand产生随机权值矩阵,作为初值。
其中in_num=2;mdl_num=3;out_num=1;分别代表网络的输入层、隐层、输出层的神经元数目。
4.设定训练误差E=0.001,学习率η=0.01,非线性光滑函数f(x)的β=0.1。
(二)采用平方型误差函数对样本进行训练[7],得出仿真结果如图2。
(三)采用改进优化的误差函数对样本进行训练,得出仿真结果如图3。
(四)分析比较
对同一样本在同一BP网络中采用不同的误差函数得到的训练结果进行分析可以看出,当我们把训练误差E设定在相同值的情况下,采用平方型误差函数的算法,需要151次训练才能达到指定误差要求(通过Matlab仿真得到的输出可以直接读出)。而采用改进的误差函数算法,只需要77次训练就能达到误差
E=0.001的要求(通过Matlab仿真得到的输出可以直接读出)。
四、结论
作者在文章中对BP神经网络中的经典的误差函数进行了改进,提出一种新的误差函数,并综合了两种误差函数的特点,对神经网络的算法进行了局部优化。通过分析比较两种情况下的结果可以看出,在不影响训练误差精度的情况下,采用改进的误差函数的算法的网络的训练速度明显比采用经典平方型误差函数的算法快。
参考文献
[1]刘丙杰,胡昌华,马瑞萍.一种新的神经网络重新学习算法[J].系统工程与电子技术,2005,27(1):131-133.
[2]唐志芳,时海涛,鲁华祥,王守觉.基于BP神经网络的系统电源管理算法[J].计算机工程,2006,32(4):214-216.
[3]王金峰,罗省贤.BP神经网络的改进及其在初至波拾取中的应用[J].物探化探计算技术,2006,28(1):14-17.
[4]吴微.神经网络计算[M].北京:高等教育出版社,2003.
[5]焦李成.神经网络系统理论[M].西安:西安电子科技大学出版社,1990.
[6]许东,吴铮.基于MATLAB 6.X的系统分析与设计—神经网络[M].西安:西安电子科技大学出版社,2002.
[7]曹戈,赵阳.MATLAB实用教程[M].北京:电子工业出版社,2004.
注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
关键词 BP神经网络 误差函数 训练速度 算法
中图分类号TP183 文献标识码A
Optimization algorithm of BP neural network error function
ZHANG Miao(Air Force Engineering University Engineering College,Shanxi Xi’an 710038,China)
LEI Hong-li (Xi'an running water main corporation Nanjiao water works,Xi’an 710054,China)
Abstract BP network is the most pop neural network at present. However,separate error function is often applied in the traditional algorithm of network training,which reduces the training velocity of the network. In this case,a new error function is brought forward. Two functions are considered and the algorithm is optimized,which increase the training velocity. Matlab is used to simulate the new algorithm. And the new algorithm is proved to be advanced from the simulation.
Key words BP neural network; Error function; Training velocity;Algorithm
人工神经网络作为一种非线性建模和模式识别方法,具有良好的非线性品质、极高的识别精度、灵活而有效的学习方式、完全分布式的存储结构和模型结构的层次性,已广泛地应用于模式识别、语音识别、智能控制、信号处理、生物工程、非线性优化领域,并显示出它的巨大潜力[1]。误差反向传播(Error Back Propagation—BP)算法(1986年由以Rumelhart和McCelland为首的科研小组提出)使得神经网络获得了巨大的生机。但经典的BP算法因为误差函数选取比较单一,使得网络的训练速度比较慢。本文在经典BP的误差函数的基础上提出了一种新的误差函数,从而提高网络的训练速度。
一、BP神经网络模型
BP网络是目前应用最广泛的神经网络之一,是一种正向求解、反向传播并达到修改网络层次之间连接权值的网络模型。BP算法的具体思想是:对一个输入样本,从输入层经隐含层逐层正向计算,得到输出层的输出。然后,让它与期望样本比较,如有偏差,则把输出层单元的误差向输入层逆向传播,由此调整连接权值与阈值,从而使网络输出值逼近期望输出,通常使之达到误差均方值取最小为止[5]。
典型的BP网络是3层前馈网络,即输入层、隐含层和输出层,其中每层的结点与上下层的结点间都有联系,而同层结点之间不存在联系。其基本的网络结构如图1所示[2]。
其中xj为第j个输入,yi为第i个输出,ωij为所有与第i个神经元相连的权值。
BP神经网络的工作过程通常由二个阶段组成。第一阶段是学习期,在这阶段中的网络,通过给定的已知数据和已知的目标,调节各层间的权值,调节公式如下:
式中η为学习率,E(n)为第n次迭代期望值与实际输出的均方误差,依次迭代,直到实际输出与期望输出间的误差满足某一设定误差值。
第二阶段是工作期,在这阶段网络各结点的连接权值及变换函数均不变,利用训练好的网络对输人数据进行正向计算,最后输出识别结果。
二、误差函数的优化算法
(一)经典误差函数算法
假设BP神经网络结构如图1所示,有N个输入层神经元,M个输出层神经元,P个隐层神经元。选定一个非线性光滑活化函数f1=f2=f:R1→R1,并按照稍候给定的规则确定权值矩阵W={Wmp}1≤m≤M,1≤p≤P和V={Vpn}1≤p≤
是隐层单元对第m个输出单元的线性输入。
权值W和V的确定(学习过程)应使误差函数E(W,V)达到极小,我们采用常用的方法即梯度下降法,取得当前权值
(二)改进误差函数算法
由权值变量的计算可知,选取误差函数时需要考虑到以下两点:首先,函数须满足可微或是局部可微,其次,函数要在Oj=yj处取得极小。根据这两个要求,结合神经元节点函数即非线性光滑函数的特点,我们定义一个新的误差函数:
我们假定f1(x)=f2(x)=f(x)的饱和值为±1(对于常用的S型函数f(x)= 和f(x)=tanh(x)均满足此条件)。
采用常用的方法即梯度下降法,取得当前权值Wmp和Vpn的改变量为:
(三)误差函数优化算法
如果我们取改进的S型函数[3]:f(x)=tanh(βx)(17)
f′(x) =β(1-f2(x))(18)
利用改进的误差函数在计算权值变量时,对应的式子(14)应为:
此式与式(8)相比较可以看出,(8)式中的导数项f′(H ) 变成了常数项β,而这一改变克服了权值修正公式(7)的如下缺点:当实际输出y 极端错误时(例如:y 由式(18),f′(H )接近于零,从而使本应作较大改变的当前权值W只得到极小的改变。这样直接影响了网络训练时的收敛速度。而如果我们采用改进的误差函数则不存在这些问题,可以明显地提高训练速度,达到训练效果。
但是改进后的误差函数也有其不足之处,首先,此误差函数存在局部不可微(如当目标输出向量中的元素O =1时,误差函数在此点不可微,使得训练无法进行)。其次,在非局部极限时,对当前权值的改变不够灵活,得到的曲线不够光滑。
我们综合两种误差函数的特点,在误差判断时我们采用平方型误差函数,而在计算当前权值改变量时,我们把两者结合起来,这样我们可以得到相应于(8)式的公式:
然后再利用上面的算法来计算权值的改变量,进行网络的训练。
三、仿真
根据BP网络算法的原理,我们应用Matlab6.5进行仿真比较[6]。
(一)设置BP神经网络。
1.取定一组训练样本
其中I样本输入向量,O为目标输出。
2.建立一个三层的网络,输入层、隐层、输出层的神经元数目分别为:2、3、1。其中网络隐层神经元数目的选取参阅了文献[4]。
3.选取网络权值的初值。在Matlab中,用rand产生随机权值矩阵,作为初值。
其中in_num=2;mdl_num=3;out_num=1;分别代表网络的输入层、隐层、输出层的神经元数目。
4.设定训练误差E=0.001,学习率η=0.01,非线性光滑函数f(x)的β=0.1。
(二)采用平方型误差函数对样本进行训练[7],得出仿真结果如图2。
(三)采用改进优化的误差函数对样本进行训练,得出仿真结果如图3。
(四)分析比较
对同一样本在同一BP网络中采用不同的误差函数得到的训练结果进行分析可以看出,当我们把训练误差E设定在相同值的情况下,采用平方型误差函数的算法,需要151次训练才能达到指定误差要求(通过Matlab仿真得到的输出可以直接读出)。而采用改进的误差函数算法,只需要77次训练就能达到误差
E=0.001的要求(通过Matlab仿真得到的输出可以直接读出)。
四、结论
作者在文章中对BP神经网络中的经典的误差函数进行了改进,提出一种新的误差函数,并综合了两种误差函数的特点,对神经网络的算法进行了局部优化。通过分析比较两种情况下的结果可以看出,在不影响训练误差精度的情况下,采用改进的误差函数的算法的网络的训练速度明显比采用经典平方型误差函数的算法快。
参考文献
[1]刘丙杰,胡昌华,马瑞萍.一种新的神经网络重新学习算法[J].系统工程与电子技术,2005,27(1):131-133.
[2]唐志芳,时海涛,鲁华祥,王守觉.基于BP神经网络的系统电源管理算法[J].计算机工程,2006,32(4):214-216.
[3]王金峰,罗省贤.BP神经网络的改进及其在初至波拾取中的应用[J].物探化探计算技术,2006,28(1):14-17.
[4]吴微.神经网络计算[M].北京:高等教育出版社,2003.
[5]焦李成.神经网络系统理论[M].西安:西安电子科技大学出版社,1990.
[6]许东,吴铮.基于MATLAB 6.X的系统分析与设计—神经网络[M].西安:西安电子科技大学出版社,2002.
[7]曹戈,赵阳.MATLAB实用教程[M].北京:电子工业出版社,2004.
注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”