BP神经网络学习效率研究
2018-04-25李卉孙伟
李卉 孙伟
摘要:为了对BP神经网络学习效率进行研究,利用一个特定的半球面方程案例,对隐层单元数、传递函数、测试集样本点数这三个变量对BP网络学习效率影响程度进行分析。通过3次实验,实验一只改变一个变量、实验二同时改变两个变量,实验三同时改变三个变量来比较实验的运行时间,实验误差,记录实验结果,并进行了实验分析,得出BP神经网络学习效率最佳时的参数取值。结果表明当隐层单元数为8、传递函数为tansig、测试集样本点数为16时,BP神经网络学习效率最佳。
Abstract: In order to study the learning efficiency of BP neural network, a specific case of hemispherical equation was used to analyze the impact of three variables, ie, the number of hidden layer units, the transfer function and the number of test sample points on the learning efficiency of BP network. After three experiments, one variable was changed in experiment one, two variables were changed in experiment two and three variables were changed in experiment three at the same time to compare the running time and experimental error of the experiment. The experimental results were recorded and analyzed experimentally to get BP The parameter value of the neural network to learn the best efficiency. The results show that BP neural network has the best learning efficiency when the number of hidden layer units is 8, the transfer function is tansig, and the number of test samples is 16.
關键词: BP神经网络;球面;效率分析
Key words: BP neural network;sphere;efficiency analysis
中图分类号:TP301.6 文献标识码:A 文章编号:1006-4311(2018)12-0183-04
0 引言
人工神经网络是一个数学模型,它通过模拟真实的人脑神经网络来进行信息处理。人工神经网络具有以下四个基本特征:非线性、非局限性、非常定性和非凸性[1]。相比于其他数学模型,它的优点在于:①具有自学功能。例如只需要将所有识别的对象及结果输入进去,通过自学习功能,则会具备识别该类对象的能力。②具有联想储存功能。③能够快速地寻找到最优解[2]。
BP神经网络是人工神经网络的一种比较典型的学习算法,是一种多层前向神经网络,神经网络的神经元采用的传递函数可以实现输入与输出间的任意非线性映射,在模式识别、风险评价、自适应控制等方面有着最为广泛的应用[3]。而效率问题是BP神经网络的一个重要的问题,基于此,本文对BP神经网络学习效率影响因素研究具有一定的意义。
1 BP神经网络原理
BP算法作为人工神经网络的一种比较典型的学习算法由一个输入层、多个隐含层和一个输出层组成。各层由若干个神经元(节点)构成。每一个节点的输出值由输入值、作用函数和阈值决定[4]。BP网络的学习过程包括信息正向传播和误差反向传播两个过程,在正向传播过程中,输入信息从输入层经隐含层传到输出层经作用函数运算后得到输出值与期望值比较,若有误差则误差反向传播,沿原先的连接通路返回,通过逐层修改各层神经元的权值减少误差[5]。如此循环直到输出的结果符合精度要求为止。
BP网络的存储信息主要体现在两个方面,一是网络的体系结构,即网络输入层-隐含层和输出层节点的个数,二是相邻层节点之间的连接权值。影响网络结构的主要参数是隐含层的节点个数、学习率和系统误差。输入层和输出层节点个数由系统应用决定(一般来说是确定的)而隐含层节点个数由用户凭经验决定,个数过少将影响到网络的有效性,过多会大幅度增加网络训练的时间。学习率通常在0.01-0.9之间。一般来说,学习率越小,训练次数越多。但学习率过大,会影响网络结构的稳定性。
通过BP定理可知,只要用一个三层BP神经网络就可在任意希望的精度上实现任意的连续函数。Funahashi进一步对每层神经元函数的选取进行研究后指出,在三层网络中,只要对隐层采用非线性递增映射函数。输入输出层采用线性映射函数,就可以用该网络对任意连续函数 Y=H(X)进行逼近。
本文利用 Matlab的神经网络工具箱进行系统仿真,通过改变系统的隐层单元数、传递函数和测试集样本点数,分别比较系统在不同变量发生改变后在实现函数逼近性能方面的差异 。
2 BP神经网络模型建立步骤
①确定BP神经网络各层节点的个数并设定好权值和阈值的初始值。②将样本和对应的结果输入进去,利用网络进行学习。③将所输入样本对应的期望输出值计算出来并与实际输出值对比。④计算两者之间的差值,并求出误差。⑤根据步骤4得出的误差来更新连接权值。⑥求误差函数判断是否收敛到给定的学习精度以内。
3 实例仿真和结果
本文利用BP神经网络逼近球面方程:
z=,(0?燮x?燮10,0?燮y?燮10)
构造一个三层BP神经网络,分析不同变量的效率问题。隐层到输出层传递函数选用 “purelin”,其中变量分为以下三个:①隐层单元个数5-8;②输入层到隐层传递函数选用“logsig”,“tansig”;③产生测试样本集坐标点数:5-30。
由于X的范围为0-10,Y的范围为0-10,则将X和Y等分成10等分,产生11*11的网格,共121个点,即为模型的训练集。
由于测试集为变量,所以本文随机选取了3个测试集,第一个测试集有9个点,其产生程序为x1=1:4:10;y1=1:4:10;[X,Y]=meshgrid(x1,y1);第二个测试集有16个点,其产生程序为x1=1:3:10;y1=1:3:10;[X,Y]=meshgrid(x1,y1);第三个测试集有25个点,测试集产生程序为x1=1:2:10;y1=1:2:10;[X,Y]=meshgrid(x1,y1)。
3.1 matlab实验代码
表1为实验过程的实验代码,分为了6段代码。
3.2 实验一:改变一个变量
变量共有三个即隐层单元数、输入层到输出层的传递函数和测试集的坐标点数。为了找出各变量变化对实验结果的影响,先进行实验一,每次只改变一个变量,固定另外两个变量,分别记录下Matlab软件下实验的运行时间,实验误差,并在Matlab软件中计算出模型的训练误差和测试误差。其中实验一设立对照组,其变量选取为隐层单元数为5、传递函数为tansig、测试样本点数为16个点。为了尽量消除软件的随机误差,本文每次改变变量都会先将程序运行20次左右,然后记录连续5次的实验结果,并取平均值,實验结果如表2所示。
由表2可以看出,当改变测试集点数时,测试集为9个点时,平均测试误差为0.67%,平均运行时间为7.8秒,平均模型误差为0.67%;当测试集为16个点时,平均测试误差为0.52%,平均运行时间为9.6秒,平均模型误差为0.45%;当测试集为25个点时,平均测试误差为0.59%,平均运行时间为9.2秒,平均模型误差为0.62%.从这些结果可以看出,测试集为16个点时其测试误差和模型误差最小,运行时间稍有提升,三个测试集的实验误差都很小达到了0.01。故从改变测试集的角度来看,16点的效果最好,25点次之,9个点最差。故实验一的实验以测试集为25点、隐层单元数为5、传递函数为tansig作为对照组。
与对照组相比,当隐层单元数由5分别变化为6、7、8时,平均测试误差从0.52%依次变化为0.30%、0.23%、0.20%,平均运行时间从9.6秒依次变化为8.8、9.4、7,模型误差从0.45%依次变化为0.30%、0.28%、0.21%,可以看出测试误差和模型误差随着隐层单元数的增加呈递减,运行时间小有波动,8层时效果达到最好。且平均实验误差很小不超过0.01。因此,增加隐层单元数可以提高模型的精度。
与对照组相比,当输入层到隐含层的传递函数由tansig变化为logsig时,平均测试误差从0.52%变化为0.53%,平均运行时间从9.6秒依次变化为9.8,模型误差从0.45%依次变化为0.62%,可以看出测试误差和模型误差稍有升高,运行时间稍微增加,平均实验误差很小不超过0.01。所以传递函数tansig的效果要稍微比logsig好。
综上所述,当改变单个变量时,选择的隐层单元数越多模型效果越好,测试集为16点最好、输入层到传递层函数tansig较好。因此,可以猜想按实验一的结论向对模型有利的方向改变改变任意2个变量时,模型会得以改进,这将在实验二得以证明。还可以猜想向对模型有利的方向改变三个变量时模型会达到最优,这将在实验三得以证明。
3.3 实验二:改变两个变量
实验二的目的是为了找出同时改变哪两个变量对模型改进的效果最好。因为由实验一得出的结论,改变单个变量时,隐层单元数为5、传递函数为logsig、测试集样本点为9时效果最不好,因此实验二以隐层单元数5、传递函数logsig、测试样本点数9为对照组,有3个变量,改变两个变量的排列组合共为3,则共有3个实验组。实验操作与结果记录与实验一相同,实验结果如表3所示。
由表3可以看出,与对照组相比,改变隐层单元数和传递函数时(即隐层单元由5变为8、传递函数由logsig变为tansig)、改变隐层单元数和测试集(即隐层单元由5变为8、测试集点数由9变为16)和改变传递函数和测试集(即传递函数由logsig变为tansig、测试集点数由9点变为16点)平均测试误差从0.70%分别变化为0.24%、0.29%、0.66%,平均运行时间从9秒依次变化为6、7、8.8,模型误差从0.71%依次变化为0.21%、0.22%、0.54%,平均实验误差很小不超过0.01。可以看出改变改变隐层单元数和传递函数时模型的平均测试误差和平均模型训练误差达到最低、时间也是最少,改进效果最好,效果此好时改变隐层单元数和测试集、最后是改变传递函数和测试集。
3.4 实验三:改变三个变量
实验室三的目的在实验一和实验二得出的结论基础上找出最佳BP神经网络逼近球面方程的变量取值,并验证实验一的猜想。实验结果如表4所示。由表4可以看出,当隐层单元数变为8、传递函数变为tansig、测试集样本点数为16时,测试误差为0.20%、训练误差为0.21%达到了该研究报告的最低点,平均运行时间为7s相对来说较短,实验误差不超过0.01。因此,可以总结出,这是模型建立的最佳变量取值,这也验证了实验一的猜想。