张俊虎,刘赟玥,王玲玲,袁栋梁
(青岛科技大学 信息科学技术学院,山东 青岛 266061)
目前确定神经网络[1]隐含层节点数的方法主要有试凑法[2]、经验公式法[3]、以及引入超平面、动态全参数自调整[4]、区间增长法[5]。试凑法对于同一样本集分别设置不同隐含层节点数进行网络训练,选取误差值最小时对应的节点数值作为最终结果。此种计算方式没有科学的判断,只能盲目的凭借经验计算,这不仅会导致计算量的增大。特别的,对于存在较多节点的网络结构,最终的计算效率也会降低;经验公式法的提出没有建立在相关理论基础的前提下,只能从以往的项目经验得出对应的计算公式,以此获取隐含层节点数可能存在的区间范围,经网络训练选择误差达到最小值时对应的节点数。所以这种方法只针对特定的数据集取值效果较为显著,不具备算法的通用性;而动态全参数调整是通过一个事先给定先验知识的网络,动态调节另一个BP神经网络中隐含层节点数。该算法的复杂性甚至超过BP神经网络算法本身,消耗过大。增长法的计算方式首先通过经验公式获得隐含层节点数的取值范围,从最小单元数开始训练网络,不断增加隐含层节点数,选取训练误差和收敛速度性能达到最优值对应的隐含层节点数。此种算法的缺陷在于,没有一种确切的方法解决何时停止增长的问题。
常见的约简算法有:主成分分析法[6]、奇异值分解法[7]、以及基于粗糙集的属性约简[8]。其中,主成分分析法的实现思想是:将不同属性上的数据信息借助线性变化集中到互相独立的主成分上,满足新的变量两两不相关从而达到剔除冗余属性的目的。但最终得到的约简集可能仍存在冗余属性;奇异值分解法通过将一个复杂的矩阵分解成若干相互独立的矩阵,提取代数特征。经奇异值分解压缩后,会造成删除的部分属性中存在有用的信息。基于粗糙集的属性约简算法[9]在不借助先验知识并保持决策和分类能力不变的前提下,剔除数据决策表中关联度较弱的属性。相较于前两种约简算法,它的优势体现在:计算量小,获得最简属性集并能够保证结果的准确性。
因此,本工作提出了一种基于属性核特征选择与隐含层节点数动态确定的BP神经网络模型。利用了粗糙集理论的思想,以属性核为算法起点,通过计算属性的重要度,迭代特征选择的标准,获取最小属性集合从而实现对BP 神经网络输入项的约简。同时,引入二分分割算法以逐步缩短范围区间对比误差大小的形式,快速确定隐含层节点数。而GM(1,1)是一种常见的产量预测模型,通过分析各因素之间的相异程度,生成规律性的数据,建立对应微分方程。但忽略了各因素之间的联系,导致误差偏大。为验证改进后的算法性能,以水产养殖中对虾产量为例对其进行预测。实验分析表明,改进后的算法不仅解决了BP 神经网络训练中出现的过拟合现象,而且提高了模型的预测精度。
BP神经网络能够在无需事先获取映射关系方程式的前提下,实现M-N 维的映射关系转换。BP神经网络为三层结构模式,由输入层、隐含层、输出层组成,如图1所示。BP神经网络的学习分为正向传播与反向传播两个过程。正向传播中,输入的数据经过输入层逐层向后正向传递。在传递过程中每一层的目标神经元产生计算结果,并在S型激活函数的作用下产生响应。经激活函数激活后的神经元正向传递,在传递函数的推动下达到网络结构中的隐含层和输出层,分别生成隐含层输出和输出层输出[10-11]。反向传播是通过计算输出层与预测值之间的误差,逐步调整权值以及各项参数取值大小,最终使得误差在预期结果之内。
图1 BP神经网络结构图Fig.1 BP neural network structure diagram
具备非线性映射能力的BP 神经网络,随着人们对其的深入研究与应用,BP神经网络的性能受到诸多因素的影响。如,隐含层节点个数的取值、学习率以及初始神经元输入个数等。本研究拟在解决BP神经网络中存在的过拟合现象以及网络耗时长的问题。故对隐含层节点数的确定以及初始神经元的个数选取做了改进。
AC-H-BPNN 模型具备BP神经网络强有力的非线性映射能力的同时,克服了传统BP 神经网络自身容易陷入过拟合的问题。通过属性核特征选择将输入项进行降维处理,精准的数据输入能够在一定程度上提高网络训练的效率,具体流程图如图2所示。其中数据线性归一化的计算方式为
其中,xf为归一化后的值,xmin为集合中的最小值,xmax为集合中的最大值。具体算法步骤见图2。
图2 AC-H-BPNN模型的流程图Fig.2 AC-BPNN model flow chart
传统的约简算法对输入项的约简难以获得最小约简集,且结果仍存在冗余项。本研究的约简算法建立在粗糙集理论的基础上,在不借助先验知识的情况下,依靠数据本身对其进行推理分析,挖掘出数据之间的隐含知识,揭示事物的潜在价值和规律[12]。
定义1:在知识表达系统S=<U,A,V,f>中,对每个属性子集,定义一个不可分辨关系[13],
其中:属性值集V=∪a∈AVa(Va表示属性a 的值域),f:U×V→A 是一个信息函数,它指的是U 中每一个对象x 的属性值,即∀x∈U,∀a∈A,f(x,a)∈Va。对象x 关于IND(B)的等价类,在不产生混淆的情况下,用B 代替IND(B),记[x]B=[x]IND(B)。全体等价类集合即为U/IND(B)=U/B。
定义2:在知识表达系统S=〈U,A,V,f〉中,对于每个子集的不可区分关系B,X 的B 下近似可以定义为
定义3:在知识表达系统S=〈U,A,V,f〉中,若P,Q⊆A,则Q 的P 正域可以定义为
属性重要度的计算方式如下:
具体算法步骤见图3。
图3 属性约简算法流程图Fig.3 Flow chart of attribute reduction algorithm
运用二分分割算法实现对隐含层节点数的确定。二分分割算法借鉴了数学中折半查找的思想:在确定的区间范围内,通过区间内的两个端点逐渐向零点逼近,得到零点近似值的方法。利用经验公式计算得出隐含层节点数可能存在的、最大概率上的区间范围。再根据二分分割算法缩短取值范围,比较两区间端点值的输出均方误差大小,选择最优隐含层节点数。均方误差的计算公式如下:
公式中In 为预测值,Out为真实值。二分分割算法见图4。
图4 二分分割算法流程图Fig.4 Two-division algorithm flow chart
为验证本AC-H-BPNN 模型,选择中国渔业统计年鉴作为数据源。以山东对虾产量为例,经过调研,明确了水产养殖产量的大小受:养殖面积、育苗量、劳动力数量、生产渔船数量、技术推广人员数量、损失量、灾害损失量等因素影响。水产养殖数据样本如表1所示。
表1 山东海水养殖对虾产量数据样本Table 1 Sample data of Shandong marine aquaculture shrimp production
对于BP神经网络来说,当输入的数据过多时,不利于网络的训练与学习,从而导致收敛速度的下降。因此,在网络训练之前,需要根据目标能力对属性进行精准约简,选取适合的属性输入,确定BP神经网络的最优属性集合。条件属性C={a1,a2,a3,a4,a5,a6,a7}(分别代表了养殖面积、育苗量、劳动力、生产渔船量、技术推广人员、损失产量、灾害损失),决策属性D 为年产量。依据算法步骤选择重要度较大的属性构成属性核CORED(C),属性度值为零的属性予以剔除。例如,对于数据决策表中的a3和a5,有:POS(C-{a3})(D)=POS(C-{a5})(D)=U。于是得出,。表示属性a3与属性a5对于数据决策表来说,去掉该属性对于正域大小变化影响不大,即该属性的对于整体的数据决策表重要程度较弱。重复这一过程,直到剩余集合中所有属性的重要度值均为零,得到最终约简集合。约简后的最小属性子集为{a1,a2,a4,a6}。
经过分析和网络训练选取最佳的参数。动量因子λ 取值为0.87,学习率取值为0.6。本研究ACH-BPNN模型中隐含层数为1。根据经验公式,计算隐含层节点个数的可能取值范围在区间[3,10]内,再结合二分分割算法计算得出隐含层节点数。不同隐含层节点数对应的网络性能数据表如表2所示。
表2 不同隐含层节点数神经网络性能的对比Table 2 Performance comparison of neural networks with different number of hidden layers
由表2可知,当隐含层节点个数为6时,此时神经网络的总体性能达到最优。故选定本工作BP神经网络模型的隐含层节点个数为6。BP 神经网络模型的拓扑结构为4-6-1。
为验证本AC-H-BPNN 模型对于对虾产量的预测效果,实验采用表1中的52组样本数据训练,选取了4组样本数据作为预测模型的数据验证。并与优化前的传统BP神经网络算法以及水产养殖产量预测常用的GM(1,1)算法模型进行对比[14]。表3为不同模型对于对虾产量预测的结果对比。
表3 不同模型的拟合能力对比Table 3 Comparison of prediction results of various algorithms
为了更好的评估本模型对对虾产量的预测与其他预测模型的预测性能,预测方法和预测结果的可靠性通过均方根误差指标进行评价。均方根误差结果越小,代表模型预测的精度越高,模型的预测性能较好。其中Sj代表预测值,Tj代表实际值。其中均方根误差计算公式为
由于最初的模型设计初衷是为了解决BP神经网络容易产生过拟合与训练时间过长的问题,所以这里加入了模型误差对比与网络平均耗时对比,如表4所示。以验证优化后的BP神经网络模型是否能够克服上述问题。对于同一组样本进行训练并计算误差随网络训练次数的变化,图5显示的为优化前与优化后的BP神经网络误差随训练次数的曲线变化。
图5 BP神经网络优化前后的误差对比图Fig.5 Error comparison chart before and after BP neural network optimization
根据表3、表4可知,传统BP神经网络算法对于产量预测容易出现过拟合现象。这是由于在网络训练使用梯度下降法调整误差和权重量。例如在2004年的对虾产量预测结果与其他算法模型存在较大的差距,很大程度上便是由于此种原因造成的。GM(1,1)预测模型的产量预测结果出现了偏激状况。分别在2004年与2011年的对虾产量预测结果出现偏低和过高。这种情况的发生与关联因素的分析计算方式有一定的关联。GM(1,1)模型通过分析各因素之间的相异程度,生成规律性的数据,建立对应微分方程。但水产养殖中的对虾数据具有非线性相关的特性,这就使得最终的预测结果不稳定,预测精度较差。对于本AC-H-BPNN 预测模型,经过二分分割算法的应用,科学设定了隐含层节点数,在一定程度上降低了网络训练的时间。与传统BP神经网络对比,由于神经元输入的个数减少一半,除去了冗余的数据点,减少了过拟合现象的出现。故此,本工作所建立的模型在预测精度和平均耗时上均优于传统BP神经网络的预测效果。
表4 不同预测模型的性能比较Table 4 Performance comparison of different prediction models
另外,与GM(1,1)预测模型对比,本工作ACH-BPNN 模型在平均耗时中高于GM(1,1)模型,但通过对比表3真实值与预测值之间的关系。不难看出,GM(1,1)的预测能力存在不稳定性,也就是说,其预测精度较低,容易产生偏差。综合实验结果可知,AC-H-BPNN 模型能够在较短的时间内获取较高的预测精度。
本研究引入属性核特征选择约简算法优化BP神经网络,利用粗糙集理论的特性,在不需要先验知识的前提下,判别各影响因素的重要程度,去除与数据表关联度较小的属性。同时,将二分分割算法与经验公式相结合,确定隐含层节点数,减少过拟合现象的产生。改进后的BP神经网络预测模型不仅保留了非线性泛化特点,还提高了模型的预测精度。为水产养殖产量预测提供新方法,具备一定的实用性。下一步的工作将继续完善该算法,确定更加完善的隐含层节点取值范围以及权值误差的修正量。并将该方法应用在更多的实际数据集中,以发现可能存在的问题。