1. 引言
在山区流域的防洪减灾工作中,洪水预报发挥着极为重要的作用;对于防汛部门而言,迅速而准确的洪水预报,是防汛预警和调度的关键依据。除了采用常规方法外,构建循环神经网络(Recurrent Neural Networks, RNN)用于洪水预报[1],可以满足上述需求。近年来,循环神经网络因其设计结构适合模拟时间序列相关数据,被广泛用于径流预测研究[2]。然而,普通RNN模型在学习长时间序列时,存在梯度消失问题。为此,Cho等人提出了门控制循环单元神经网络(Gated Recurrent Unit, GRU) [3]。在水文预报领域,基于GRU的研究正成为热点。GRU是一种对长短期记忆网络(Long Short-Term Memory, LSTM)变体的优化[4]:其将LSTM中的遗忘门与输入门进行合并,形成单一的更新门,同时保留重置门;网络没有设置记忆状态变量,而是将输出结果作为记忆状态不断向后循环传递。相较于LSTM网络,GRU网络能在达到同样效果的基础上降低训练难度,提升模型效率[5]。
近年来,已有研究从正则化约束[6]、记忆–滞后协同[7]到多预处理对比[8]三个层面持续拓展GRU的适用边界。还有许多学者在智能算法耦合层面,例如:以改进灰狼算法(IGWO)自动搜索GRU超参数[9]、以改进麻雀搜索算法(ISSA)同步优化CNN-LSTM与GRU双支路[10]等,展示了“群体智能 + 混合结构”的巨大潜力。区域验证方面,顾逸[11]简化了GRU结构提出的Simple-LSTM把长江上游中长期预报效率提高30%;De Melo G等[12]证实GRU与LSTM精度相当却省时一半;Gao等[13]采用GRU和LSTM两种递归网络对沙溪渔潭站短期径流进行预测,对于3 h预见期将洪峰误差压低5%;郭玉雪等[14]发现GRU对舟山台风非平稳入流预测,其纳什系数仍保持0.90;Khatun等[15]采用CNN-GRU模型在印度马哈纳迪河季风高峰流量模拟中精度提升15%。综上,GRU已沿“正则化–杂交–混合”路径在多流域、多尺度验证其稳健性,为崇阳溪上游山区流域应用奠定方法论基础。
考虑到前人的研究多聚焦于模型参数率定、模型在平原区或丘陵区流域的应用,GRU模型在山区源头流域洪水过程模拟研究中应用实例不多,论文以崇阳溪上游流域为例,利用29场暴雨洪水过程,构建以6个雨量站逐时降水与武夷山水文站前期流量为输入、未来相应流量为输出的山区源头流域GRU网络洪水预报模型;并与传统PRBP模型进行对比,验证其在洪峰流量、峰现时间、洪水过程预报误差上的优势,为山区源头流域提供“仅依赖雨量及流量数据”的数据驱动洪水预报模型。该模型功能简单适用,运算速度快,泛化能力较好,可以提升基层防御洪水的时效性与可操作性,为流域防洪减灾工作提供服务。
2. GRU网络结构和算法
2.1. GRU基本构架
与标准RNN相比,GRU通过引入门控机制,能够更有效地捕捉长距离依赖关系,提升模型的表现和训练效果[16]。GRU网络整体结构见图1:
图1. GRU神经网络整体结构
2.2. 门控制循环单元结构及其算法
图2为GRU门控制循环单元内部结构,其中重置门和更新门是GRU中的关键组件。重置门决定过去信息对当前状态的影响程度,而更新门控制了新信息和旧信息的融合程度。借助其门控机制的协同作用,GRU能够高效捕捉序列数据中的长期依赖关系。在模型架构上,GRU相较于LSTM更为简洁,这使得其在训练过程中展现出更快的速度[17]。
图2. GRU门控制循环单元内部结构
首先,单元将通过当前时间步输入信息
和前一时间步单元输出信息
来获取两个门结构的控制状态。GRU网络中的更新门负责对先前存储的信息进行控制,即决定模型
时刻和
时刻有多少信息继续传递至
时刻。
为更新门的控制信息矩阵,其计算式如下:
(1)
式中:
为Sigmoid激活函数;
为更新门权值矩阵;
为更新门偏置矩阵。
GRU的另一个门结构称为重置门,它的主要功能在于调控当前输入信息与之前状态之间的关联性。其状态决定了先前状态对当前状态更新过程中的影响程度。
为重置门的控制信息矩阵,其计算式如下:
(2)
式中:
为重置门权值矩阵;
为重置门偏置矩阵。
网络计算出两个信息矩阵后,通过信息矩阵
来重置前一时间步的单元隐含状态
,然后和当前时间步
相衔接,通过状态激活函数将数值范围调整至[−1, 1]:
(3)
式中:
为权值矩阵;
为偏置矩阵。这里得到的
为候选隐状态矩阵,负责记录t时的“单元状态”。
“更新记忆”阶段中,更新门
控制了当前状态
是如何结合过去的状态
和候选状态
的:
(4)
式中:
则负责记录候选隐状态矩阵
中对网络学习产生正面影响的部分内容,由更新门控制矩阵
负责筛选。最终得到的
将通过输出层函数转化为实际需求的模型预测结果
。计算式如下:
(5)
式中:
为输出层权值矩阵;
为输出层偏置矩阵。
3. 山区流域GRU神经网络洪水预报模型构建
3.1. 流域概况
选择崇阳溪源头(上游)流域进行研究,其控制流域面积1078 km2。利用Thiessen polygon法对流域进行子单元划分,推求各子单元面积权重,同时分析各单元净雨到武夷山站的汇流时间,详见图3、表1。
图3. 崇阳溪上游流域水系图
表1. 各子流域单元面积权重及汇流时间统计表
水文站点 |
武夷山 |
洋庄 |
吴边 |
大安 |
坑口 |
岭阳 |
岚谷 |
面积(km2) |
66.2 |
90.7 |
218.2 |
202.3 |
165.8 |
139.9 |
190.5 |
权重λ |
0.06 |
0.08 |
0.20 |
0.19 |
0.15 |
0.13 |
0.18 |
汇流时间(h) |
- |
1 |
1.5 |
2.5 |
3 |
3 |
4 |
3.2. 样本数据处理
论文以1997~2021年崇阳溪源头流域的29场暴雨洪水过程为基础[18],选取21场洪水资料为训练样本,8次洪水为测试样本。
1) 同步化处理
由于GRU网络对数据具有记忆功能,因此需要考虑汇流时间、将不同站点雨量数据进行同步化处理。
(6)
式中:
为第i个雨量站t时段经同步化处理后对应的模型输入序列,
为第i个雨量站t时段的雨量,
为相应的汇流时间,具体取值如表1所示。经处理后的雨量数据对武夷山站而言在时间尺度上实现了同步,适应实际预报的需求。
2) 零数据处理
流域退水过程中会有相当数量的零输入降雨,若不进行处理,将导致模型中出现相互矛盾的信息,从而造成模型输出的混乱[19]。采用K. C. Luk等学者的公式[20]进行转换:
(7)
式中:
为初始数据,
为去零化后的数据;a、b为可变参量。
3) 标准化处理
模型输入包括雨量(单位:mm)和流量(单位:m3/s)两类数据。为了便于网络学习,需要对数据进行标准化处理。采用式(8)进行转换:
(8)
式中:
为标准化之前的数据;
为序列均值;
为序列标准差;
为标准化之后的数据。以此构建输入向量,作为驱动数据输入循环网络模型。为得到实际预测流量,训练好网络后,输出的结果需进行反标准化:
(9)
3.3. 模型构建
选择洋庄等6个雨量站的逐时降雨量和武夷山站前期流量组成向量为输入,武夷山站后期对应流量为输出,构建GRU网络预报模型,图4为模型结构。
输入层公式:
(10)
式中:
、
;
分别为6个子流域单元面积权重(见表1取值);
为第j个雨量站雨量过程序列均
图4. 山区流域GRU神经网络洪水预报模型结构
值、
为雨量过程序列对应的标准差;
为武夷山站实测流量过程序列均值、
为流量过程序列对应的标准差;
为上游洋庄等6个雨量站逐时雨量;
为武夷山站前1 h流量
;
为经该层预处理后转化为GRU层的输入信息矩阵。
GRU层公式:
(11)
在t时刻,GRU层单元的输入信息包括:①
时刻GRU单元输出的处理后的流量信息矩阵
;② 当前输入信息矩阵
。通过更新门与重置门处理后,模型得以筛除导致损失函数增大的冗余信息,并保留对预测精度具有正向增益的有效信息;随后,单元状态完成更新,进而输出当前时刻武夷山水文站的流量信息
。
全连接层公式:
(12)
式中:
与
分别对应整合过程中权值矩阵和偏置值矩阵;
表示全连接层在时间步t的输出,其数值由GRU层单元在该时刻的隐藏状态矩阵
经线性运算后获得;
为激活函数。
为提高模型的泛化能力并降低网络过拟合风险,对全连接层进行Dropout化处理,抛弃因子设为10%。在dropout层中设置0和1组成10 × 1随机数矩阵,以抛弃冗余信息,其公式为:
(13)
式中:
为模型输出信息。
输出层公式:
(14)
t时刻预测流量值
由输出层去标准化得到。
3.4. 参数率定
在模型训练过程中,设置不同的GRU层单元数和网络迭代次数并通过计算得到训练样本21场洪水模型输出值均方根误差RMSE的平均值如表2所示,同时绘制三维曲面图5、二维等值线图6。模型学习率取0.01。
通过表2以及三维曲面图5和二维等值线图6可知,在GRU层单元数为32,网络迭代轮数为100的情况下,存在最小均方误差。至此,GRU网络洪水预报模型的构建得以完成。
表2. 不同GRU层单元数和网络迭代轮数情况下训练样本RMSE均值表
RMSE |
隐含层单元数(Hidden units) |
8 |
16 |
32 |
64 |
128 |
256 |
网络迭代次数(epochs) |
50 |
105.8 |
98.6 |
96.8 |
91.5 |
90.1 |
91.7 |
100 |
94.7 |
90.7 |
85.2 |
90.5 |
94.3 |
96.6 |
150 |
94.5 |
91.4 |
92.9 |
95.1 |
100.8 |
98.6 |
200 |
92.5 |
96.5 |
93.0 |
104.8 |
106.2 |
106.9 |
250 |
93.6 |
94.2 |
93.8 |
109.3 |
108.4 |
106.6 |
300 |
94.8 |
106.6 |
102.7 |
106.2 |
105.2 |
104.5 |
图5. RMSE随GRU层单元数和网络迭代轮数变化三维曲面图
图6. RMSE随GRU层单元数和网络迭代轮数变化等值线图
3.5. 模型测试
采用流域8场洪水过程对模型进行测试,得到洪水流量预报过程线图,详见图7。同时构建共轭梯度PRBP洪水预测模型[21]与GRU模型进行对比。表3为洪水流量过程预报误差分析表,表4为洪峰流量误差分析表。
从洪水预报过程来看,表3中除“2019·07·05”洪水过程平均相对误差为13.6%外,其余7场洪水过程的误差均在10%以内,所有洪水过程平均相对误差均比PRBP模型小。GRU模型预报的8场洪水纳什效率系数大于0.920,均比PRBP模型高。表明GRU模型对洪水流量的变化展现出较高敏感性,意味着其能够有效掌握洪水演变过程中的主要趋势。
(a) “1998·06·14”洪水
(b) “2003·06·25”洪水
(c) “2006·06·14”洪水
(d) “2008·07·19”洪水
(e) “2019·07·05”洪水
(f) “2019·07·09”洪水
(g) “2021·06·28”洪水
(h) “2021·06·30”洪水
图7. 崇阳溪上游流域8场洪水预报过程线
表3. 8场洪水流量过程预报误差分析表(单位:m3/s,%)
时间 |
GRU模型 |
PRBP模型 |
流量过程
|
流量过程
|
NSE |
流量过程
|
流量过程
|
NSE |
最大值 |
平均值 |
最大值 |
平均值 |
最大值 |
平均值 |
最大值 |
平均值 |
1998·06·14 |
267 |
64.3 |
31.1 |
6.7 |
0.966 |
−273 |
74.2 |
68.0 |
12.6 |
0.941 |
2003·06·25 |
83 |
13.5 |
−30.9 |
9.1 |
0.958 |
103 |
15.7 |
54.6 |
10.8 |
0.942 |
2006·06·14 |
−81 |
11.5 |
27.7 |
4.6 |
0.954 |
−97 |
14.9 |
−40.8 |
9.6 |
0.939 |
2008·07·19 |
−96 |
32.3 |
−26.2 |
5.1 |
0.972 |
167 |
35.5 |
38.4 |
7.1 |
0.964 |
2019·07·05 |
203 |
36.2 |
47.6 |
13.6 |
0.928 |
−205 |
41.4 |
54.9 |
17.1 |
0.905 |
2019·07·09 |
98 |
24.7 |
21.5 |
3.8 |
0.987 |
−102 |
34.0 |
−34.6 |
5.6 |
0.974 |
2021·06·28 |
−164 |
29.6 |
−31.1 |
7.6 |
0.933 |
−182 |
38.6 |
−65.8 |
11.4 |
0.877 |
2021·06·30 |
−157 |
53.5 |
−32.1 |
5.5 |
0.937 |
−154 |
64.6 |
62.8 |
11.7 |
0.918 |
备注:
。
表4. 8场洪水洪峰流量预报误差分析表(单位:m3/s,%,hour:min)
时间 |
主次峰型 |
|
GRU模型 |
PRBP模型 |
|
|
|
|
|
|
|
|
1998·06·14 |
主峰 |
3080 |
3178 |
98 |
3.20 |
0:36 |
3017 |
−63 |
−2.00 |
0:36 |
1998·06·14 |
次峰 |
2710 |
2718 |
8 |
0.30 |
0:00 |
2551 |
−159 |
−5.90 |
1:00 |
2003·06·25 |
主峰 |
797 |
829 |
32 |
4.10 |
−0:24 |
806 |
9 |
1.20 |
−0:24 |
2006·06·14 |
主峰 |
737 |
779 |
42 |
5.70 |
1:00 |
730 |
−7 |
−1.00 |
1:00 |
2008·07·19 |
主峰 |
2172 |
2111 |
−61 |
−2.80 |
0:00 |
2211 |
39 |
1.80 |
1:00 |
2019·07·05 |
主峰 |
1830 |
1968 |
138 |
7.50 |
0:20 |
1654 |
−176 |
−9.60 |
0:40 |
2019·07·05 |
次峰 |
798 |
793 |
−5 |
−0.60 |
0:00 |
774 |
−24 |
−3.00 |
2:00 |
2019·07·09 |
主峰 |
2770 |
2711 |
−59 |
−2.10 |
−0:20 |
2755 |
−15 |
−0.50 |
0:40 |
2021·06·28 |
主峰 |
1700 |
1805 |
105 |
6.20 |
0:45 |
1618 |
−82 |
−4.80 |
0:45 |
2021·06·28 |
次峰 |
938 |
888 |
−50 |
−5.30 |
1:00 |
833 |
−105 |
−11.20 |
1:00 |
2021·06·30 |
主峰 |
1237 |
1188 |
−49 |
−4.00 |
0:20 |
1251 |
14 |
1.20 |
−1:40 |
2021·06·30 |
次峰 |
1150 |
1156 |
6 |
0.50 |
0:15 |
1007 |
−143 |
−12.50 |
0:15 |
平均值 |
- |
- |
- |
54.4 |
3.53 |
0:25 |
- |
0:27 |
4.56 |
0:55 |
备注:
,最后一行为各指标绝对值的平均值。
从预报洪峰流量来看,由表4可知,8场洪水的洪峰流量绝对误差总体较小,平均值为54.4 m3/s,最大值为138 m3/s (“2019·07·09”洪峰);其相对误差也较小,平均值为3.53%,最大值为6.9% (“2019·07·09”洪峰)。PRBP模型预测的洪峰流量的误差也较小。总体上GRU模型在洪峰流量预测精度方面略高于PRBP模型。
洪峰出现时间方面,GRU模型平均误差为25 min,仅为PRBP模型(55 min)的45%,二者虽均在许可误差之内,但GRU模型误差相比较更小,稳定性更佳。两模型均呈“总体偏晚”的倾向,但GRU偏差分布更集中,优于PRBP。
4. 结语
通过选取具有可靠性、代表性、一致性的训练和测试样本,并结合崇阳溪源头山区流域实际情况拟定网络结构,依据均方根误差RMSE最小方法确定GRU网络迭代轮数为100、隐含层单元数为32,紧接该层之后增加一个全连接层,然后对其进行Dropout化处理,建立基于GRU网络的洪水预报模型。同时构建基于PRBP的预报模型进行比较。
1) GRU与PRBP模型的预报结果表明,两种模型的精度均符合规范要求,相对来说具有更新门和重置门深度学习功能的GRU模型预测效果更好,模型的纳什效率系数比PRBP模型高;其洪水过程预测误差均小于PRBP模型,在洪峰流量及峰现时间的预测精度方面总体上略高于后者,因此可以满足山区源头流域的洪水预报的需求。
2) 在GRU层之后增加全连接层,并对其进行Dropout化处理,有利于优化GRU隐含层单元数和网络迭代轮数,同时可以提高模型的泛化能力并降低网络过拟合风险。
基金项目
福建省自然科学基金项目(2023J01405);福建省水利科技资金项目(MSK202408)。
NOTES
作者简介:金保明,男,博士,高级工程师,研究方向为水文水资源,Email: jbm720@126.com