基于AR-RNN的多变量水位预测模型研究

2020-10-28 08:49刘青松卢文龙
人民长江 2020年10期
关键词:集上水文线性

刘青松,严 华,卢文龙

(1.四川大学 电子信息学院,四川 成都 610065; 2.万江港利科技股份有限公司, 四川 成都 610094)

精准的水位预测对于水资源的合理调度以及流域安全具有重大意义。河流的水位具有随机性、波动性、季节性等一系列特点,且影响水位的因素众多,包括各个支流的流量、流域内降雨量等。多因素作用使得水位规律难以把握,增加了水位预测的难度。

目前在水位预测方面,学者们的研究方法主要侧重于传统的单变量时间序列处理,即只考虑将水位作为输入变量。如王淑华[1]提出了一种基于ARIMA模型的水位预测方法,该方法通过对冯家山水库历史水位数据的处理分析,构建了具有不同参数的ARIMA模型;通过对不同模型的对比分析,结果显示ARIMA(1,2,2)模型具有较好的预测精度。王蒙蒙等[2]提出了一种基于支持向量回归的水位快速预测方法,该方法相对于水动力数学模型,计算时间大大缩短,在洞庭湖水位的快速预测方面取得了较好的结果。但是以上两种方法都有一定的局限性。前者往往要求序列为严平稳,而实际的水文序列常常不符合要求;后者的预测精度又很大程度上取决于参数的选择,模型不够健壮。近年来,一种对水文序列要求较低的BP神经网络模型被提出。如李云良等[3]提出了一种基于BP神经网络的水位模型,该模型使用了3层BP神经网络,考虑了鄱阳湖五河流域及长江来水的影响;将其应用于鄱阳湖的水位预测取得了较好的结果。可是上述方法均只考虑了单一因素的影响,没有充分考虑到其他影响水位的因素,如流量及降雨等。只有充分考虑这些因素才能更精准地对流域内的水文特征进行建模。

近年来深度学习发展迅速,原因就在于它强大的捕捉非线性依赖的能力。其中循环神经网络(Recurrent Neural Network,RNN)在自然语言处理(Neuro-Linguistic Programming,NLP)上取得了不凡的成果。自然语言本身就是一种特殊的多变量时间序列,因此国外学者也开始将RNN用于多变量时间序列预测当中,如美国南加州大学的Purushotham等[4]提出了一种基于门控循环单元(Gated Recurrent Unit,GRU)的多变量时间序列模型,该模型对于缺失值及缺失模式不太敏感,将其应用在临床数据集中,取得了较好的预测效果。自回归模型(Autoregressive Model,AR)可以很好地学习水文序列当中的线性关系。但是由于AR模型不能捕捉到水文序列中复杂的非线性关系,目前还没有学者使用单独的AR模型用于水位预测。

本文在传统的单变量水位预测基础之上,引入水位、降雨、流量等多变量进行水位预测。受RNN在其他领域的成功应用的启发,将RNN和传统的AR模型相结合,用于多变量水位预测,既可以学习水位、降雨、流量相关序列的非线性特征,也可以减轻神经网络对序列线性成分的不敏感性[5]。将该方法应用在清溪河流域的日水位预测中,在预见期为1 d的情况下,取得了较好的预测效果。

1 基于AR-RNN的多变量水位预测模型

为了寻求一种精准的多变量水位预测模型,准确地对各个影响水位的变量进行建模就显得尤为重要[6]。针对水文序列的长期模式与短期模式、线性模式与非线性模式,基于AR-RNN的多变量水位预测模型整体框架如图1所示。

图1 AR-RNN模型整体框架Fig.1 Structure of AR-RNN model

1.1 模型基本原理

由AR-RNN模型的框架图可以看出,模型最终的预测结果由两个单元决定:线性单元和非线性单元。这种复合架构使得模型既能捕捉到水文序列间复杂的非线性依赖,同时也能避免由于引入大量的非线性层造成模型对序列线性成分不敏感的问题[7]。下面就这两个单元的基本原理做出阐释。

(1) 非线性单元由循环神经网络或RNN构成。相对于传统的神经网络(如BP神经网络),循环神经网络的输入节点之间是有联系的,因此能够很容易地将网络的输入由单变量扩展到多变量[8],更充分地利用水文数据。同时水文气象的时间跨度较长,通常以年为周期,传统的网络无法在时间跨度如此长的情况下学习水文序列的规律,只能学习到水文序列的短期模式。而循环神经网络内部的状态传递机制可以学习水文序列的长期模式。

循环神经网络有很多种,本文提出的模型所使用的循环神经网络是门控循环单元(GRU),其在时间节点t的状态可由以下公式定义[9]:

zt=σ(Wzxt+Uzht-1)

(1)

rt=σ(Wrxt+Urht-1

(2)

(3)

(4)

式中:zt被称为更新门;σ代表sigmoid函数;rt被称为重置门;Wz,Uz均为z的参数矩阵;Wr,Ur均为r的参数矩阵;ht为时间节点t的状态;xt代表的是时间节点t的输入;W和U为各个门神经元的参数。门控机制可以用来控制记忆单元中的信息有多少需要保留,有多少需要丢弃,保留的信息又有多少可以传递到下一级的记忆单元。通过这种门控机制,模型不用记忆过去所有的信息,只用记住它认为有用的信息,这一点与人类的学习特征是一致的。同时由于门控机制的存在,有用的信息可以直接传递到后续记忆单元,这缓解了模型训练过程中的梯度消失与梯度爆炸问题[10]。

(2) 线性单元由自回归模型AR构成,之所以没有选择经典的ARIMA模型作为线性单元是因为模型的主体仍然是RNN,AR仅仅用来修正预测结果。循环神经单元的引入使得模型内部含有大量的非线性层,因此模型对水文序列的局部线性特征没有那么敏感。而通过引入自回归模型AR就可以很好地捕捉到序列的局部线性特征,增强模型对于序列线性特征的敏感度,进而提高模型在水位峰值处的预测精度[11]。

(5)

1.2 模型的输入与输出

模型包含线性单元及非线性单元两个部分,输入分别对应于线性单元的输入及非线性单元的输入,输出则来自于二者输出的叠加。

线性单元的输入即AR单元的输入,其作用是修正模型在水位峰值处的预测值,因此输入就只包含水位信息。AR单元的窗口大小为5,因此线性单元的输入即为过去5 d的水位,输出为当前时间点的水位预测值。

非线性单元的输入即循环神经单元的输入,循环神经单元接受的是多变量的输入,同时输出单变量的预测结果。考虑到本文所研究的实际流域,多变量的输入分别对应于水位、流量及降雨量,单变量的输出则为水位的预测值。同时输入还应该考虑到循环神经单元的步长w及预测间隔Δ[13]。本文数据使用清溪河流域的日水位、日流量及日降雨数据,因此在AR-RNN模型中的大小为10,Δ的大小为1,即用过去10 d的水位、流量和降雨量来预测接下来1 d的水位值。在确定了w和Δ后,非线性单元的输入输出如表1所示。

表1 非线性单元数据输入输出格式Tab.1 Non-linear element data input and output format

AR-RNN模型最终的输出来自线性单元和非线性单元的输出和:

(6)

1.3 模型的训练

确定了模型的输入输出后就可以进行模型的训练。AR-RNN模型为一个复合模型,可采用PyTorch作为模型框架进行搭建。PyTorch为Facebook人工智能团队研发的一款深度学习框架,使用PyTorch可以方便地定义网络结构,如模型的层、激活函数及损失函数等,而作为使用者无需自己设计模型的反向传播算法,框架可以帮助完成。

模型最终的预测效果是否准确,超参数的设置占了很大因素。模型的非线性单元为一个单层GRU网络,隐藏层神经元个数为12,最终通过一个全连接层将各个GRU细胞的输出合并成一个单独的输出。非线性单元的输出最终与线性单元的输出相叠加作为最终的输出结果。模型的优化函数选择的是tanh,同时为了防止模型过拟合设置dropout率为0.2。为了提高模型的收敛速度,设置了batch size为50,epoch为1 000。每一轮迭代后RNN单元和AR单元的参数同时完成更新,所有轮迭代完成后所得参数即为最优参数。

2 数据分析及处理

2.1 原始数据

本文所使用的水文资料来自于清溪河流域,清溪河系山溪性河流,发源于四川省宣汉县白马乡境内。自东北向西南流经观山、清溪镇,在清溪口注入后河,河道长46 km,流域面积297 km2(见图2)。

图2 清溪河流域水系Fig.2 Qingxihe Basin

流域设有一个基本水文站,4个有历史系列资料的雨量站,包括老君站、峰城站、南坪站以及清溪站。水文站位于清溪站点,站内资料包括清溪站点的历史流量及水位。水文站及雨量站的资料在采样时间和采样间隔上都有很大差异,需要筛选出具有相同采样时间及采样间隔的数据并将其作为模型的输入,这样模型才能学习到相应的水文特征。在对水文站及雨量站的资料进行筛选后,选择时间跨度为2003年1月1日至2005年9月26日的数据。其中水位、流量及降雨量的采样时间均为每日零点零分,采样间隔均为1 d,共计1 000条数据。原始数据形式如表2所列。

表2 2003年1月1~4日水文站原始数据Tab.1 Hydrological station raw data from January 1 to 4,2003

2.2 数据处理

由于传感器故障等原因,原始数据中有部分数据出现了缺失值及异常值,如果将原始数据直接输入到模型中将会影响模型的预测精度。考虑到部分数据对整体数据影响不大,对这些缺失值及异常值进行了零填充。

填充后的数据由于各个变量的单位不同(水位的单位为m,降雨量的单位为mm,流量的单位为m3/s),数据的范围也不同,因此需要将各个变量进行归一化处理[14]。归一化后各个变量处于同一个范围内,这样有利于模型发掘各个变量之间的关系,加快模型的收敛速度,缩短模型的训练周期。数据归一化的公式为

(7)

式中:max为样本数据的最大值;min为样本数据的最小值。归一化后各个变量的范围在0~1之间,各个变量的曲线如图3所示。

图3 归一化后各站点水位、流量和降雨曲线Fig.3 Normalized water level ,flow and rainfall curves

可以发现水位与其他变量的趋势基本保持一致,呈现出较强的相关性。这也进一步印证了采用多变量来进行水位预测的可行性。

3 结果验证

3.1 评价指标

AR-RNN模型的输入为流域内各站点的降雨量以及水位、流量的历史信息,模型的输出为未来的水位预测值,即多变量作为输入,单变量作为输出。选用均方根误差RMSE和绝对平均误差MAE作为评价指标来评价预测结果[15]。

(8)

(9)

3.2 AR-RNN与BP神经网络、SVR,ARIMA模型的对比

评价一个模型的表现,需考虑拟合能力和泛化能力。将清溪河的原始数据划分为训练集及测试集,分别占全部数据集的80%及20%。将AR-RNN模型与单变量模型BP神经网络、SVR模型与ARIMA模型进行对比,各个模型在测试集的表现如表3所示。

表3 AR-RNN模型与其他模型在测试集上的表现Tab.3 Performance of AR-RNN model and other models on the test set %

由表3中各个模型的表现可以得出:AR-RNN模型相对于ARIMA模型、SVR模型和BP神经网络,在测试集上MAE分别提升了36%,61%和59%,RMSE分别提升了43%,65%和54%。各个模型在测试集上的拟合情况如图4~7所示。

图4 AR-RNN模型在测试集上的拟合情况Fig.4 Fitting of AR-RNN model on test set

3.3 AR-RNN与RNN模型的对比

为了进一步说明引入的AR单元对模型预测结果的影响,在RNN网络结构不变的情况下,去掉AR单元,其在测试集上的表现如图8所示。

图8 单独的RNN模型在测试集上的拟合情况Fig.8 Fitting of individual RNN models on the test set

通过对比可以发现在序列的整体预测趋势上二者的表现大致相同,但是AR-RNN模型在水位峰值处的预测要优于单独的RNN模型。基于此,引入了最大误差ME(Maximum error)和最大相对误差MRE(Maximum relative error)作为评价指标[16]:

(10)

(11)

图5 SVR模型在测试集上的拟合情况Fig.5 Fitting of SVR model on test set

图6 BP网络模型在测试集上的拟合情况Fig.6 Fitting of BP network model on test set

图7 ARIMA模型在测试集上的拟合情况Fig.7 Fitting of ARIMA model on test set

AR-RNN模型和RNN模型在测试集上的表现如表4所示。其中AR-RNN模型相对于单独的RNN模型,在测试集上MAE提升了10%,RMSE提升了5%,最大误差及最大相对误差提升了15%。

表4 AR-RNN模型和单独的RNN模型在测试集上表现Tab.4 Performance of AR-RNN model and individual RNN model on the test set

4 结 论

本文在传统的单变量水位预测模型的基础上,提出了一种基于AR-RNN的多变量水位预测模型。将其应用在清溪河流域的水位预测中,通过对比不同模型的水位预测结果,验证了AR-RNN模型具有更高的预测精度。

(1) 传统的单变量预测模型,如BP神经网络、SVR模型与ARIMA模型仅仅考虑了水位的因素,它们只能预测出水位序列的大体趋势。AR-RNN模型则充分考虑了影响水位的因素,如历史的水位、流量及降雨量,其在细节处的预测要优于上述的单变量模型,且模型的鲁棒性更高。

(2) 相对于单独的RNN模型,AR-RNN模型对序列的线性特征更加敏感,由于自回归单元的引入,使得模型在水位峰值处的预测精度要高于单独的RNN模型。

猜你喜欢
集上水文线性
关于短文本匹配的泛化性和迁移性的研究分析
发展水文经济 增强水文活力
二阶整线性递归数列的性质及应用
浅谈水文档案的价值和开发利用
线性回归方程的求解与应用
基于互信息的多级特征选择算法
非齐次线性微分方程的常数变易法
线性回归方程知识点剖析
江西省水文文化建设的思考
师如明灯,清凉温润