张甲甲,万定生
(河海大学计算机与信息学院,江苏南京 211100)
对流域径流变化趋势的模拟和预测是水文领域的一个重要研究课题[1]。随着近年来深度学习的发展,基于数据驱动的水文预测方法得以长足发展。然而这种模型大多用于大流域,很少用于小流域[2-3]。与大江大河相比,中小河流具有分布广、降水及下垫面空间异致性强、产汇流时间短、突发性强等特点[4-6]。如何利用智能算法提高中小河流水文预报的准确率,是一个重要的研究方向。
与支持向量机SVM[7],BP神经网络[8],极限学习机ELM[9]等模型相比,带有记忆功能的LSTM既可对连续的径流数据进行处理,又能考虑到长时间径流序列的季节性和周期性,因此能更合理处理序列信息,实现序列预测。不过与其它神经网络类似,LSTM模型参数难以确定,往往靠人为经验来选择。为了更好地确立LSTM的模型参数,提高流量的预测精度,本文提出一种混合遗传算法(SP_GA),用其优化LSTM后建立SP_GA-LSTM模型应用于漳州龙山站的时径流预报中。模型的输入数据考虑了流域内流量和降雨带来的影响,并通过实验分析以验证所提模型的有效性。
长短时记忆单元(LSTM)属于递归神经网络(RNN)的一种,它具备 RNN 的递归属性,同时其具有的独特记忆和遗忘模式,可以解决递归神经网络(RNN)中的梯度爆炸和梯度消失问题[10]。LSTM由于可以完美地模拟多个输入变量的问题,十分适用于时间序列预测。LSTM基本单元结构如图1。
图1 LSTM单元结构
在LSTM神经网络中,历史信息通过遗忘门ft、输入门it、输出门ot的控制进行更新。遗忘门ft依据上一阶段的输入,来决定Ct-1里的丢弃。输入xt经过输入门it来筛选候选信息,再与遗忘门ft共同决定Ct里的更新。输出门ot与更新后的Ct经过tanh函数运算后输出。其基本过程按照式(1)-式(6)计算。
ft=σ(Wf·[ht-1,xt]+bf)
(1)
it=σ(Wi·[ht-1,xt]+bi)
(2)
(3)
(4)
ot=σ(Wo·[ht-1,xt]+bo)
(5)
ht=ot*tanh(Ct)
(6)
其中:xt和ht分别表示输入向量和输出向量,Ct-1和Ct分别表示上一时刻与当前时刻单元状态,Wf、Wi、WC、Wo是权重矩阵,bf、bi、bC、bo是对应权重的偏置。
2.2.1 数据选择及处理
本文选取龙山流域作为研究对象,龙山流域位于福建省漳州市,是典型中小流域。上游设有4个雨量站提供降雨信息,分别是月明、和溪、后眷、龙山。龙山水文站位于龙山流域的汇流出口处。龙山站及其周边地理位置如图2。
图2 龙山站及其周边地理位置示意图
本文选取2010年1月到2014年7月的龙山站小时流量数据和龙山流域内4个雨量站的时雨量数据共39998条数据作为实验数据。取前28000条数据作为训练样本数据,后11998条作为测试样本数据。
对于采用智能化预报方法对流量进行回归预测时,预报因子的选择尤为重要。运用相关系数分析法后,确定将前5小时的龙山水文站前期的流量值以及龙山流域内雨量站前期降雨量值选作预报因子,选择预见期为3h,即将前5小时的流量和雨量组成输入来预测未来3小时的流量。
Yt+3=f(Yt,Xt-5,Xt-4,Xt-3,Xt-2,Xt-1)
(7)
其中,Xt表示t时刻的龙山站雨量值、月明站雨量值、和溪站雨量值、后眷站雨量值、龙站雨量值山组成的向量,Yt表示t时刻的龙山站流量值。
数据规范化就是把数据根据比例投射至某一区间内,以缩短数据在训练过程中的收敛时间。本文采用Max-Min归一化,使经过归一化后的数据位于0~1之间。Max-Min归一化公式如下
(8)
2.2.2 模型评价指标
本文采用均方根误差、确定性系数和纳什系数对预测结果进行评价。
均方根误差反映了预测值与真实值之间的偏差程度,值越小越优,其计算公式为:
(9)
确定性系数反应了模型预报过程与实测过程之间的吻合程度,其取值范围为[0,1],其结果越接近1,准确率越高,计算公式为:
(10)
2.2.3 单预测模型建模
为了测试 LSTM 单模型的流量预测性能,选取不同基础模型进行比较。分别选用 BP、SVM 和 LSTM 单预测模型进行预测。并对2013年7月13日3时到2013年7月15日4时和2013年9月22日17时到2013年9月24日16时的预测结果进行对比分析。
相关参数设置为:BP与LSTM的结构设置为25-50-1,学习率为0.001,训练次数为100;SVM选择径向基(RBF)核函数,惩罚因子C=100,核函数参数σ=5。预测结果如图3,预测误差见表1。
表1 各模型预测误差
从图3和表1可以看出,SVM的预测误差在三者中最大,预测曲线具有明显波动,且峰值预测效果最差;BP的预测精度较SVM有所提高,预测曲线与真实值贴合程度也更好;LSTM的均方根误差和确定性系数为7.95和0.909,在三个模型中最优,并且整体预测曲线和峰值预测最贴合真实值,说明LSTM模型更具优势
LSTM模型的非线性建模性能与3个主要参数密切相关:隐含层节点数hidden_size、学习率lr、训练次数epoch。本文将通过混合遗传算法来确定这三个参数。
3.1.1 遗传算法
遗传算法(GA)是由美国Michigan大学的Holland J教授于1975年首先提出,它是一种借鉴生物界自然选择机制的随机化搜索算法[11]。遗传算法的基本思想是基于达尔文进化论和孟德尔的遗传变异理论。其主要步骤包括编码、种群初始化、选择、交叉、变异等操作。通过这些步骤使得种群内个体适应度越来越高,最终收敛到一群最适应环境的个体,从而求得问题的最优解。
3.1.2 混合遗传算法
作为一种典型的群体智能算法,遗传算法在搜索全局最优解方面具有独特的效率,但在局部搜索能力方面明显不足。通过在遗传算法过程中融合其它优化方法(爬山法、粒子群算法、蚁群算法、模拟退火算法等),从而构成混合遗传算法是提高遗传算法运行效率和求解质量的一个有效手段。
本文提出的SP_GA算法将PSO公式引入作为变异算子,让种群内个体可以根据自身迄今最优解和种群内最优解以及个体进化的速度来确定变异的方向和幅度,使变异操作具有方向指导作用,不再是简单的随机变异[12]。
(11)
那么引入的粒子群算法的粒子更新公式为
(12)
模拟退火算法(SA)是一种迭代更新可行解时,以一定的概率来接受一个比当前解要差的解,从而有效避免陷于局部极小并最终趋于全局最优的优化算法[13-14]。模拟退火算法包含Metropolis算法和退火过程两个部分。算法步骤如下:
1)参数初始化:包括初始解S,初始温度T,迭代次数L,计数器M;
2)计算增量ΔT=E(n+1)-E(n),E(n)为评价函数,其中n+1为新解;
3)ΔT判断:以概率P接收n+1为当前解,其中
4)若连续M个新解都没被接受,那么输出当前解作为最优解。否则进行降温操作,降温公式为:Tw=γTw-1。
5)重复上述过程,完成所有个体的抽样。
SP_GA算法在种群进化过程中引入模拟退火算法,算法内加入SA判断函数
fave-fmin (13) 基于SP_GA-LSTM的神经网络水文预测模型建立步骤如下: 1)选择水文时间序列样本数据,划分整理数据后,归一化数据;对隐含层节点数hidden_size、学习率lr和训练次数epoch进行二进制编码处理;适应度函数采用式(10)确定性系数r2; 2)对种群个数、最大迭代次数Tmax、c1、c2、模拟退火初始温度T进行初始化; 3)判断是否满足终止条件,若达到最大迭代次数Tmax则终止迭代并用该最优解进行SP_GA-LSTM神经网络的流量预测模型的建立,否则进入4); 4)对个体进行解码,把解码参数代入训练与测试样本,计算得到每个个体的适应度值; 5)更新种群最优个体和历史最优个体。分别用一个变量把每个个体的当前解码后的值保留下来,把每一代的最优解也用单独的变量保留下来。从第二代迭代开始,如果产生的新个体的适应度值比前一次保留的个体的适应度值大,则把新个体存储在变量中并替换前一代的个体,否则不替换。同样地,如果这一代的历史最优个体适应度值比前一代的大,则更新每一代的最优解,否则不更新; 采用9种已知辣度的辣椒红果果实,建立应用电子鼻评价加工型辣椒果实辣度的方法,所用辣椒果实取自山东省青岛农业大学辣椒栽培基地(见表1);应用所建立的辣度评价方法分别检测11种辣椒红果及辣椒绿果,检测的11个辣椒加工基地的原料见表2。将试验材料于常温、避光保存,待测定。 6)用赌轮盘算法进行选择,即按照适应度值对应的选择概率进行随机选取,直到选出满足设定数量的个体数; 7)种群交叉;然后用式(11)、(12)进行变异。在变异之前要先解码,在变异完成之后再重新编码; 8)判断是否满足式(13),如果满足,则说明种群进化到了后期趋于同一,进行模拟退火操作,否则直接转3)。 根据上述步骤,SP_GA-LSTM神经网络 的水文预测模型建立算法如下: 输入:种群个数n,交叉概率cp,解的维度dim,pso学习因子c1,c2,初始温度T,最大迭代次数iter_time,样本集合S。 输出:预测结果集合fore。 1)初始化种群chrosXi(i=1,2,…,n) 2)for i in range(iter_time): 3)种群解码values 4)for j in range(0,len(values)): 5) fore=LSTM(values[j],S) 6) 计算适应度fitness[i]=r2_score(S,fore) 7)更新种群最优个体pbest=values[np.less(pbest,fitness)] 8)更新种群历史最优个体gbest=values[np.argmax(fitness)] 9)种群复制cocs=copy(chros,values) 10)种群交叉crcs=cross(cp,cocs) 11)种群变异ms=psomut(crcs,pbest,gbest,c1,c2)3.2 基于SP_GA-LSTM的流量预测模型