一种基于演化神经网络的预测算法,本文主要内容关键词为:神经网络论文,算法论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
中图分类号:TP183 文献标识码:A
引言
传统的时间预测方法,比如Box-Jenkins方法、回归分析方法、ARMA模型等,一般假定所研究的时间序列是由线性过程产生的。但事实上,现实世界中的系统经常是非线性的。虽然近年来发展起了几种非线性时间序列预测模型,如双线性模型、门限自回归模型(TAR)、自回归条件异方差(ARCH)模型等,但这些模型都需要在对数据的内在规律知道不多的情况下对序列间关系进行假定。
神经网络在预测领域中的应用最早可以追溯至1964年,Hu[1]在他的论文中应用自适应线性网络进行天气预报。由于采用神经网络方法,可以在不了解输入或输出变量间关系的前提下完成非线性建模[2],因此在预测领域中得到了广泛的应用[3~6]。
一、演化神经网络
在神经网络预测方法中,涉及到的主要问题包括以下方面:(1)网络结构的确定,包括输入结点数、隐层结点数、输出结点数,以及隐含层和输出层的传递函数;(2)训练样本的选择:在网络结构确定后,如何有效利用已有数据中的有用信息,得到较好的预测精度,训练样本的选择具有重要作用;(3)训练集、实证集、检验集的划分:对于已得到的历史数据,除了一部分用于对网络进行训练以外,至少还需要一部分用于检验训练的效果,即所谓的检验集;如果数据量允许,还需划分一部分作为实证集,防止出现训练过度问题。
为了实现网络结构的确定,文献[7]提出了神经网络自构形学习算法,但使用较多的方法是将遗传算法与神经网络结合起来,利用遗传算法确定网络的结构及一些重要参数[8]。遗传算法是一种抽象的生物进化、自然选择和遗传机制的优化算法,该方法通过随机融合代表可行解的代码串中较合理的“生存”因素,优化码串中的子串,最终达到优化的目的。用遗传算法优化神经网络,可以使得神经网络具有自进化、自适应能力,从而构造出进化的神经网络,或称为演化神经网络。
二、基于演化神经网络的预测算法设计
神经网络的演化主要包括三个方面:
(1)连接权的进化
神经网络连接权的整体分布包含着神经网络系统的全部知识,传统的权值获取方法都是采用某个确定的权值变化规则,在训练中逐步调整,最终得到一个较好的权值分布,BP网络的学习过程正是如此。这种算法有可能因陷入局域极值而得不到适当的权值分布,如果用遗传算法优化连接权,可望解决这个问题。
(2)网络结构的进化
神经网络的结构主要包括网络的拓扑结构,即网络的层数、结点数、连接方式、结点传递函数等部分。结构的优劣对于网络的处理能力有很大影响,一个好的结构应能较好地解决问题,同时尽可能地减少冗余结点和连接。目前,人们在设计网络结构时,或者根据经验预先确定,或者采用递增或递减的探测方法。利用遗传算法进化神经网络结构,可以减少对人为因素的依赖,其步骤如下[8]:
①随机产生N个网络结构,对每个结构进行编码,每个码对应一个结构;
②使用许多不同的初始权值分布对个体集中的结构进行训练;
③根据训练的结果或其它策略确定每个个体的适应度;
④选择若干适应度最大的个体,直接继承给下一代;
⑤对当前一代群体进行交叉和变异,以产生下一代群体。
重复(2)~(5)步骤,直至当前一代群体中有某个个体的性能(适应度)满足要求为止。
(3)学习规则的进化
在神经网络系统中,学习规则直接决定系统的性能。在一般的神经网络训练中,学习规则都是事先设定的,如BP网络使用广义δ规则。但是,这种事先设定的规则未必都是合适的,因此可以采用遗传算法来设计神经网络中的学习规则,使之能适应问题和环境的要求。
在本文中,将遗传算法与神经网络结合起来,采用遗传算法确定神经网络的结构及学习率,以便得到较高精度的预测值。
(一)编码方式的确定
由于遗传算法不能直接处理问题文件的参数,必须把它们转换成遗传空间中由基因按一定结构组成的染色体或个体,这一转换操作称为编码或问题表示。对于演化神经网络,根据参加编码的结构信息的多少,结构的描述方式可以有两种:一种是采用直接编码模式;一种是采用间接模式。
在本文中,采用间接编码方式,选用三层BP网络,只针对网络结构中的重要参数及网络的学习率进行优化搜索。网络的主要结构参数包括输入结点数、隐层结点数、传递函数,而连接权值的学习仍采用BP算法,不需进化,因此可以大大减少编码长度。
编码方式采用最简单的二进制方式,染色体长度定为14。在编码中,前面5位表示输入结点的数目,第6位表示隐层的传递函数为logsig型,还是tansig型;第7到11位表示隐层结点的数目,第12位表示输出层的传递函数为logsig型,还是tansig型;第13~14位表示学习率的值。对于学习率,其值限定在0.05、0.1、0.15、0.2四个值之间选取。输入结点数目、隐层结点数目均由5位二进制数表示,因为太多的结点数不一定有助于网络的逼近与外推能力的增强,但是却会大大增加计算量及计算时间。
在对输入结点部分进行译码时,需要针对是否具有混沌特性分别进行。对于不具有混沌性的时间序列,其值等于前5位编码对应的十进制数加2。对于已知具有混沌特性的时间序列,由相空间重构原理知,混沌系统饱和嵌入维数m至少要等于或大于(2D+1)(其中D为系统的分维数),因为只有这样才能保持系统内在的确定性的性质,如吸引子、测度熵、Lyapunov指数等[9]。因此,输入结点的数目应至少大于(2D+1)。对于D,本文中采用替代数据算法计算关联维数[10],其译码后的值等于前5位编码对应的十进制数加(2D+1)。
(二)其它参数的确定
(1)适应度的选择
本文采用如下形式作为演化BP网络的适应度函数
F=1/E
其中E为网络的能量函数
其中m表示第m个样本;k表示第k个输出结点。
(2)群体规模的选择
群体规模直接影响遗传优化的最终结果以及算法的执行效率。当群体规模较小时,容易陷入局部最优解,优化效果不良;当群体规模太大时,计算复杂度提高,不宜于求解。根据经验[8],本文中取群体规模n=32。
(3)交叉概率
控制着交叉操作被使用的频率。较大的交叉概率可增强遗传算法开辟新的搜索区域的能力,但高性能的模式遭到破坏的可能性增大;交叉概率太低,遗传算法的搜索可能陷入迟钝状态。在本文中,采用常用的取值。
(4)变异概率
变异在遗传算法中属于辅助性的搜索操作,它的主要目的是维护解群体的多样性。一般,低频度的变异可防止群体中重要的、单一基因的可能丢失,高频度的变异将使遗传算法趋于纯粹的随机搜索。本文中,根据经验取。
(5)代沟G
代沟G控制着每一代群体构成中个体被更新的百分比,即在t代中有n(1-G)个个体结构选择复制到t+1代解群体中。“代沟”方式为遣传算法利用优化过程的历史信息提供了条件,加速了遗传算法的收敛过程;当代沟G过小时,可能导致遗传算法的过早地不成熟收敛。本文中,代沟G=0.7。
(三)演化神经网络预测算法的实现
演化神经网络预测算法的实现流程如图1(图略,见原文)所示。其中有两个子程序,一是根据遗传规则产生下一代的子过程;一是计算个体的适应度的子过程。在新一代群体的产生流程中,交叉操作采用的是较简单的单点交叉,各种遗传操作的概率均取上面设定的值;而计算适应度的过程,实质是对神经网络进行训练的过程。
由于遗传算法的下一代中有一部分个体是直接从上一代中复制来的,从而有可能对同一网络结构进行多次重复训练。而对网络的训练过程需要耗费许多时间,为了减少重复运行时间,在程序中设置了一临时数据库表m-result,用于存储已经训练过的网络的结构(包括输入结点数、隐层结点数)及其适应度值;在对新的网络进行训练之前首先查找m-result表,如果此前已经对该种网络结构进行了训练,则只需从数据库中匹配得出相应的适应度值,无需再次进行训练,从而节约运行时间。采取这种方式,忽略了初始权值对于训练过程的影响。若对应的网络结构没有进行过训练,则读取数据文件,根据输入结点数形成训练样本数组,并按一定比例确定训练集、检验集。根据样本对网络进行训练,当精度达到要求或训练次数达到上限时,停止训练,将网络结构及训练得到的权值写入相应的文件。然后,将网络结构及计算得到的适应度存入临时数据库表m-result中。
当遗传优化过程结束时,将数据文件名及适应度值最大的最佳网络结构所对应的权值文件名存入数据库表f-result中。若针对该数据文件又获得了新的数据,需要根据新的数据预测以后的值,则只需查找f-result数据库表,匹配得出相应的权值文件名,读出网络结构及权值,将新的数据输入网络得到预测值。
三、预测算法的验证
为了验证演化神经网络预测算法的有效性,对不同采样间隔的交通流实测数据进行了预测分析,并与ARMA模型的预测结果进行了对比。
利用1998年7月28月至8月10日天津市某路口采样间隔分别为30分钟、10分钟、5分钟的交通流时间序列数据文件为输入,对演化神经网络预测算法的预测能力进行了验证。
采用演化神经网络预测算法和普通ARMA模型,对建模样本进行拟合、预测外推计算的结果对比分别见表1和表2(表略,见原文)。其中表1中的模型结构,对于演化神经网络预测算法,代表(输入结点数目,隐层结点数目);对于ARMA模型,表示阶次(p,q)的值。
四、结论
通过对不同采样间隔的交通流时间序列的拟合预测,表明本文提出的演化神经网络预测算法可以自主地确定网络结构参数,代替人为试凑的方法,减少对用户经验的依赖性,并能跟踪执行过程,为用户提供解释文件。而且,采用这种算法所得到的预测精度优于传统的ARMA模型方法。