罗朝林,张 波,孟庆魁,陈武奋
(珠江水利委员会珠江水利科学研究院,广东 广州 510611)
洪涝灾害危胁人民生命财产安全,精准洪水预报作为重要的防洪减灾非工程措施可以实现洪水精准化预报,减少人民生命财产损失[1]。目前洪水预报研究主要是对流域建立以物理机制或者物理概念为基础的传统水文模型[2-4]。然而水文模型由于本身机理的原因,在仅依赖观测数据的前提下只能进行流域汇流时间内的预报,想要延长预见期还需要气象预报数据作为输入条件,这也会加大预报结果的不确定性。随着感知设备以及信息技术的高速发展,获取数据的方式逐渐多样化,由此也引发了一些研究人员开始采用数据驱动的方式来解决洪水预报问题[5]。从20世纪90年代开始,人工神经网络(Artificial Neural Net-works,ANN)以及递归神经网络(Recurrent Neural Net-work,RNN)开始应用于洪水预报模拟并迅速发展[6]。Bengio等[7]在研究中发现RNN在计算过程中存在梯度消失与爆炸的问题,导致长时间序列存储的信息难以被读取。Hochreiter等[8]针对该问题,通过引入记忆单元的方式改进了RNN神经网络,形成长短时记忆神经网络(Long Short-Term Memory,LSTM)。在过去的几年,LSTM开始水文预报领域展露头角并且有了众多的研究应用及突破。Liang等[9]采用LSTM对洞庭湖的水位波动和水库运行进行了研究,将LSTM与SVM模型进行比较,综合考察三峡大坝的存在对洞庭湖水位的影响,得出LSTM模型的偏差值远远小于SVM模型,在整体水位较高情况下的预测中模型精度更高;Hu等[10]分别构建了LSTM与ANN模型,分析比较两者在降雨径流预报上的精度,结果表明LSTM的预报精度高于ANN。殷兆凯等[11]以隐藏层神经元数量为代表,讨论LSTM的复杂程度对模型精度的影响。Kratzert等[12]利用大量流量数据集训练LSTM模型,通过LSTM预测结果与实际流量进行对比,得出LSTM可以用于流域流量预测的结论。Miao等[13]采用由卷积神经网络和LSTM递归模块组成的深度神经网络模型,提高了GCM降水预报的分辨率和准确性。杨强[14]利用LSTM模型对澜沧江乌弄龙水电站进行预见期为1个月径流预测,结果表明LSTM模型的预测精度高。顾逸[15]将LSTM模型与GRU结合,构建Simple-LSTM模型进行中长期预报,结果优于BP神经网络和SVR模型。上述研究多将LSTM应用于流域长预见期的径流预报,且模型中参数对洪水过程模拟效果的影响研究较少。对于LSTM在较短预见期内以及短历时强降雨下径流预报方面是否具有同样的性能和表现是一个值得探讨的问题。
本文选取惠东县白盆珠水库开展研究,收集白盆珠水库7个雨量站以及1个水位站的逐时历史数据建立LSTM神经网络模型与新安江模型,进行不同预见期下的水位预报,比较2个模型的模型精度,并研究隐藏层神经元个数对模型精度和模型训练速度的影响。
LSTM具有与其他神经网络相同的结构,由3个部分组成,分别是输入层、输出层以及隐藏层。RNN能够学习到时间序列数据存储的内在特征,但随着训练次数的增加以及网络节点数的增多,很可能会发生梯度爆发或者消失,使更早期的长距离数据存储的信息不能传输。LSTM通过引入门控单元统筹并传递对当前时刻重要的历史信息,提升了神经网络的长时间记忆,并保持了RNN训练过程中梯度下降的稳定性。LSTM的内部结构见图1。
图1 LSTM网络结构
图1展示了一个LSTM记忆单元的典型结构。在t时刻,记忆单元的输入包括前一时刻的隐藏层状态变量、记忆单元状态变量和当前时刻的输入信息;然后模型依次通过遗忘门、输入门、输出门和这3个控制机制得到t时刻的隐藏层状态变量和记忆单元状态变量;最终会传入输出层生成LSTM在t时刻的计算结果,同时与一起传入后一时刻进行计算。
具体过程如下。在t时刻的计算过程中,首先计算的是遗忘门ft。ft可以决定从之前的状态中舍弃多少信息。ft的计算公式如下:
ft=σ(Wf·[ht-1,xt]+bf)
(1)
式中Wf——遗忘门的权重向量;bf——遗忘门的偏置向量,在神经网络训练中这些矩阵或向量将被优化;σ——Sigmoid激活函数。
下一步,计算输入门it。it将决定从新获取的信息中选择多少用以更新状态。it的计算公式如下:
it=σ(Wi·[ht-1,xt]+bi)
(2)
式中Wi——输入门的权重向量;bi——输入门的偏置向量。
(3)
式中Wc——输出门的权重向量;bc——输出门的偏置向量;tanh——双曲正切激活函数。
接下来,使用上面计算得到的结果来更新神经元状态,计算公式如下:
(4)
式中 ⊙——向量元素积。
然后,计算输出门ot。ot可以决定在t时刻有多少信息生成隐藏层状态变量ht,其计算公式如下:
ot=σ(Wo·[ht-1,xt]+bo)
(5)
ht=o⊙tanh(ct)
(6)
式中Wo——门控单元的权重向量;bo——门控单元的偏置向量。
最终,ht传入输出层,再经过计算后得到LSTM在t时刻的最终输出yt。
三水源新安江模型是经典的概念性半分布式水文模型,为中国首个自主研发的水文模型,在湿润和半湿润地区有较好的应用。新安江模型包含蒸散发、蓄满产流、水源划分、汇流计算4个模块。模型采用三层蒸散发公式计算蒸发量,利用蓄满产流及蓄水容量曲线计算总径流量,并根据自由蓄水容量曲线将总净流量划分成地面、壤中和地下径流,其中壤中和地下径流通过线性水库计算流入河网,地面径流直接流入河网,采用滞后演算法计算河网汇流,采用马斯京根法计算河道汇流。
在训练LSTM模型之前,需要设置用于控制模型训练结果的超参数[16],将建立的LSTM初始模型设置为:隐藏层为1层,包含10个神经元,学习率为0.000 1,训练次数为10次。在LSTM模型中隐藏层的神经元数量对模型精度影响较大。在模型中将隐藏层中的神经元数量分别设置为10、20、40、60、80、100、150、200。在其他参数设置中,学习率设定为0.000 1,最大迭代次数为100,模型优化算法使用自适应矩估计(Adaptive Moment Estimation,ADAM)算法[17]。
由于量纲不统一会导致模型在计算过程中收敛速度变慢,为使LSTM在模拟过程中快速收敛,模型的输入数据需要进行标准化处理。本研究采用z-score标准化算法来进行模型数据的标准化处理。z-score标准化算法具有简单、容易实现、不受数据量级影响等优点,其计算原理如下:
(7)
经过z-score标准化处理之后的所有数据的平均值为0,标准差为1。
为了量化模型的水位预报精度,采用2种量化指标,分别为Nash-Sutcliffe效率系数(NSE)和均方根误差(RMSE)。具体计算公式如下:
(8)
(9)
白盆珠水库位于惠东县城东北34 km,东江支流西枝江上游,集雨面积856 km2,最大防洪库容12.2亿m3。白盆珠水库2001年建立7个自动雨量采集站,分别为白盆珠坝上、禾多布、新塘、马山、高潭、石涧和宝口,3个水位自动采集站分别位于宝口、白盆珠坝上、白盆珠坝下,各站点位置见图2。2018年11月建设了公梅和井湖雨量站点及白盆珠蒸发站,由于数据存储量较小,本研究不予考虑。
图2 站点分布
本研究采用了白盆珠水库7个雨量站的逐小时降水资料,坝上水位站逐小时水位资料以及库容资料。历史数据从2012年1月1日至2018年1月1日,共计6年。选取前5年即2012—2017年为模型训练期,后1年即2018年为模型验证期。
流域上的降雨经过产汇流过程流经出口断面,考虑影响出口断面流量过程的因素为上游降雨,为研究不同预见期下 LSTM 对洪水过程的模拟效果,将模型输入确定为t时刻7个雨量站观测降雨数据和白盆珠坝上水位站实测水位以及白盆珠库容数据,共计9项数据组成一组模型输入,输入数据长度为6。模型输出为不同预见期下白盆珠坝上水位站水位。另外,如果LSTM的模型输出为负值,则会被调整为0。
为了评估LSTM模型在白盆珠流域的水位预报效果,将其与新安江模型进行对比。表1展示了预见期为1~6天时,LSTM和新安江模型的水位预报效果。
由表1、图3可知:①LSTM水位预报效果较好,在所有预见期下,NSE均大于0.9。且在相同的预见期下,LSTM模型的预报精度均优于新安江模型。这得益于LSTM模型对非线性关系的强大拟合能力。②在预见期为1 h情况下,预报效果最好。随着预见期的增长,预报精度随之下降。在预见期为6 h且隐藏层神经元数量为10时预报精度达到最低,NSE降到0.909 5。预见期较短时,预见期内的水位受预报发起时刻之前的降雨等气象因素影响更大。随着流域汇流过程的完成,预见期较长时,水位受到预报发起时刻之前的降雨等气候因素的影响较小。因此预见期越长,预报结果与模型输入之间的逻辑关系越弱,则预报精度会随之下降。③同一预见期情况下,隐藏层神经元个数增加,水位预报效果更好。但神经元数量在达到一定值时,预报精度上升效果不显著。隐藏层神经元个数可以提高LSTM模型的预报能力。
表1 模型预报结果
图3 白盆珠坝上水位变化曲线
为了深入研究LSTM模型在短历时强降雨期间的预报效果,记录1~6 h预见期下2013年8月15日至8月20日模型预测水位与实测水位的变化情况,结果见图4。从图中可以看出,在预见期为1~2 h时LSTM模型可以较好地反映短历时强降雨期间的洪水过程,但预见期大于3 h时误差已经较为明显,不能较好地预报洪水过程。在预见期为3 h时,模型预报结果已出现峰值延后的情况,且随着预见期增加,峰值延后时间增加。分析其原因在于所需预见期的增长,训练输入与输出的时间间隔增大,导致数据的关联性下降,此时LSTM难以学习到时间序列数据特征和数据间的关系。
图4 不同预见期LSTM模型预测白盆珠坝上水位变化曲线
在LSTM迭代计算过程中,记录其每次迭代计算的损失率,当预见期为1 h、隐藏层神经元数量为10、训练次数为100时,其结果见图5。从图中可以看出,训练次数增加时,损失率首先迅速减小,之后逐渐趋于稳定。此现象同时存在于其他预见期情况下。
图5 损失率变化曲线
将损失率趋于稳定时的最小迭代次数记录为稳定时迭代次数。分别统计预见期为2、4、6 h的单次迭代所需计算时间以及损失率变化稳定时迭代次数,结果见表2。
表2 LSTM模型进化迭代速度
从表中可以看出,在相同预见期下,随着神经元数量的增加,LSTM模型单次计算时间增加,损失率变化稳定时迭代次数逐渐减少,但迭代稳定时间上升,模型收敛速度减慢。这种结果可以用不同复杂程度神经网络拟合能力的不同来解释。神经元数量越多,神经网络越复杂,拟合能力越强,因此进化到能够拟合复杂降雨径流关系的状态所需要的次数就越少。
在相同隐藏层神经元数量下,随着预见期的增加,LSTM模型单次迭代时间减少,迭代稳定时迭代次数增加。由于模型输入数据长度较小,随着预见期的增加,模型计算过程中数据分组减少,导致单次迭代时间减少。随着预见期的增加,模型预测所需参数增加,所以迭代稳定次数增加。
通过建立白盆珠水库LSTM神经网络模型及新安江模型,分析2个模型在不同预见期的逐小时水位预报精度及参数设置对模型精度的影响,得到以下结论:①LSTM在各个预见期下预报精度均大于0.9,在预见期为1 h时LSTM模型预报精度最高,达到0.991,模型整体预报精度较高;②在预见期为1~2 h时LSTM模型可以较好地反映短历时强降雨期间的洪水过程,在预见期为3 h时,模型预报结果已出现峰值延后的情况,且随着预见期增加,峰值延后时间增加;③随着神经元数量的增加,LSTM模型单次计算时间增加,损失率变化稳定时迭代次数逐渐减少,但迭代稳定时间整体呈上升趋势,模型收敛速度减慢。上述结果显示,基于长短时记忆神经网络模型预报精度整体都可以满足预报需求,对短期洪水预报具有指导意义。