system: [SYSTEM]

user: 2. 研究内容及关键技术 为充分展示数据挖掘方法和机器学习模型对降雨~径流的时空映射进行动态推估预测能力，本研究内容及采用的相关方法详述如下：1) 采用Gamma Test数据挖掘方法，探讨集水区气象水文数据在时空上的交互关系，并筛选出数据驱动模型的输入因子；2) 接着对比分析三种神经网络数据驱动模型，即静态神经网络(BPNN)，动态神经网络(NARX)和长短期记忆神经网络(LSTM)，其中具有长短期记忆能力、回馈连接与外部输入的LSTM神经网络可在神经元和隐藏层中自动选择记忆或遗忘前期的降雨-径流时空关系，以实现对降雨-径流的时空映射进行动态推估预测；3) 最后结合三类深度学习的辅助算法，来处理LSTM长短期记忆神经网络模型的参数和结构不确定性，防止模型的过参数化和过拟合，并对模型精度进行评估。 2.1. 数据输入选择 Gamma Test由Stefánsson等人于1997年提出，它是一个独立于模型的数据分析方法，属于资料导向的统计分析方法，可估计资料中包含噪声的程度，具有良好的实用性 [ 11 ] 。Gamma Test具有以下三个功能：1) 确定训练出最优数据驱动模型的最小数据集；2) 时间上：依据洪水传播时间，确定输入变量的最优时滞；3) 空间上：确定输入变量最优组合。由于执行一次Gamma test耗时短，因此可将众多可能输入因子同时放入，评估所有可能输入组合产生的噪声估计值，进而有效地选择产生噪声最小的输入因子组合作为后续构建模型的输入项。考虑到流域内点降雨变量数目众多，且以一对一的相关系数统计分析无法全面挖掘出各类模型输入变量组合的相关强度，而运用Gamma Test则可有效地找出最适合推估降雨-径流映射的因子组合。Gamma Test基本原理和计算步骤，详见文献 [ 11 ] [ 12 ] 。 2.2. 静态与动态神经网络 向后传播神经网络的架构为多层感知器，常使用的学习演算法为误差倒传播演算法，采用这样的组合的神经网络称之为倒传播神经网络(BPNN)。向后传播神经网络属于多层前馈式网络，以监督式学习方式来处理输入输出间的非线性映射关系，倒传播神经网络实现了多层神经网络的构想，为搜寻网络层中大量连结权重值提供了一类有效可行策略，为使用最为广泛的静态神经网络之一。 非线性自回归外因输入模式(NARX)，由Leontaritis和Billings于1985年提出，其回馈项是由输出层神经元的输出向量回馈到输入层的输入向量 [ 13 ] 。NARX同样采用监督式学习与误差倒传播演算法来进行网络权重修正与优化。在网络训练阶段，利用当前t时刻信息预报 Y ^ ( t + n ) 时刻流量，其中对 t + 1 ， t + 2 ， t + 3 ， ⋯ ， t + n − 1 预测阶段目标值(真实值)无法获取，则将 t + 1 ， t + 2 ， t + 3 ， ⋯ ， t + n − 1 时刻模拟值 ( Y ^ ( t + 1 ) ， Y ^ ( t + 2 ) ， Y ^ ( t + 3 ) ， ⋯ ， Y ^ ( t + n − 1 ) ) 透过网络回馈作为NARX模式的输入项，用于预测t + n时刻流量 Y ^ ( t + n ) 。 2.3. 长短期记忆神经网络(LSTM) 为解决NARX动态神经网络在深度学习过程(隐含层数 ≥ 2层)中引发的梯度爆炸和梯度消失问题，LSTM长短期记忆神经网络 [ 14 ] (如图1(b)所示)通过在NARX (如图1(a)所示)神经网络的隐藏层(Hidden layer)中引入存储单元(Memory cell)，即输入门(Input gate)、忘记门(Forget gate)、内部回馈连结(Self-recurrent connection)、和输出门(Output gate)来选择记忆当前信息或遗忘过去记忆信息(如降雨-径流映射关系)，以增强NARX神经网络的长期记忆能力。简而言之，LSTM长短期记忆神经网络是将NARX动态神经网络中的每个隐藏层换成了具有记忆功能的存储单元(Memory cell，如图1(c)所示)，简称LSTM cell，而其输入层(Input layer)和输出层(Output layer)与NARX动态神经网络相同。 图1. NARX与LSTM神经网络的架构对比图 标准的LSTM模型同样为三层神经网络架构，每一层的原理及公式分别描述如下。 1) Layer 1：记忆输入层(Input layer) 记忆输入层用于产生新记忆，通过使用当前信息 X t 和过去隐藏层状态 h t − 1 来产生新记忆 C ˜ t − 1 。 C ˜ t − 1 = tanh ( W c X t + U c h t − 1 + b c ) (1) 式中： C ˜ t − 1 为记忆输入层t − 1时刻产生的新记忆， X t 为当前t时刻的记忆输入信息， h t − 1 为t − 1时刻隐藏层状态， tanh ( · ) 为正切S形曲线激活函数， W c 为当前信息的权重系数， U c 为隐藏层状态的权重系数， b c 为记忆输入层的偏置系数。 2) Layer 2：隐藏层(Hidden layer) ① 输入门(Input gate)：在产生新记忆之前，网络需要判定当前信息 X t 重不重要，并做出是否记忆当前某些信息的决策。输入门根据输入信息和过去隐藏层状态 h t − 1 共同判定记忆输入值是否值得保留，从而判定它以何种程度参与新的记忆。因此，它可以作为当前信息更新的一个评估指标。 i t = σ ( W i X t + U i h t − 1 + b i ) (2) 式中： i t 为输入门t时刻的评估指标， σ ( · ) 为Sigmoid激活函数， W i 为输入门中当前信息的权重系数， U i 为输入门中隐藏层状态的权重系数， b i 为输入门的偏置系数。 ② 忘记门(Forget gate)：这个门和输入门类似，但它不能决定当前输入信息是否有效，仅对过去记忆单元信息做出评估，评估出是否选择忘记过去某些信息。因此，它可以作为过去记忆单元信息的一个评估指标。 f t = σ ( W f X t + U f h t − 1 + b f ) (3) 式中： f t 为忘记门t时刻的评估指标， σ ( · ) 为Sigmoid激活函数， W f 为忘记门中过去记忆单元的权重系数， U f 为忘记门中隐藏层状态的权重系数， b f 为忘记门的偏置系数。 ③ 内部回馈连结(Self-recurrent connection)：回馈连结会根据遗忘门 f t 的评估结果，合理地选择忘记部分过去的记忆，再根据输入门 i t 的评估结果，产生新记忆 C t − 1 。内部回馈连结可将过去和当前的记忆信息合并后产生新记忆 C t 。 C t = i t ∗ C ˜ t + f t ∗ C t − 1 (4) 式中： C t 和 C t − 1 为内部回馈连结t和t − 1时刻的新记忆。 ④ 输出门(Output gate)：它的目的是从隐藏层状态分离最终的记忆。最终记忆 C t 包含了大量不需要保存在隐藏层状态 h t 的信息，这个门能够评估出关于记忆 C t 哪些部分需要显示在隐藏层状态 h t 中。用于评估这部分信息的中间信号叫做 o t ，它和 tanh ( C t ) 的乘积组成了最后的隐藏层状态 h t 。 o t = σ ( W o X t + U o h t − 1 + V o C t + b o ) (5a) h t = o t ∗ tanh ( C t ) (5b) 式中： o t 为输出门t时刻的中间信号， h t 为t时刻隐藏层状态， 为输出门中当前信息的权重系数， U o 为输出门中隐藏层状态的权重系数， V o 为输出门中新记忆的权重系数， b o 为输出门的偏置系数。 3) Layer 3：输出层(Output layer) 与常规的RNN神经网络类似，LSTM输出层为隐藏层状态的总和输出。 Y ^ ( t ) = W y h t + b y (6) 式中： Y ^ ( t ) 为LSTM神经网络t时刻的输出， W y 和 b y 分别为输出层中隐藏层状态的权重系数和偏置系数。 2.4. 机器学习算法 机器学习算法通过1) 降低深度学习网络的计算成本、2) 对网络层的参数添加惩罚项、3) 修改神经网络的结构(全连结变为非全连结网络)来解决循环神经网络(RNN)神经网络在深度学习过程中引发的梯度爆炸和梯度消失问题，防止RNN神经网络模型出现过拟合现象 [ 9 ] 。常用的机器学习算法有最小批量梯度下降法、正则化、筛选神经元等。各类机器学习算法分别描述如下。 1) 最小批量梯度下降法 梯度下降法是机器学习中最重要的优化算法之一，其更新神经网络参数时常采用以下两种方式。第一种，线下学习梯度坡降法，该方法采取遍历全部数据集算一次损失函数，然后算损失函数对各个参数的梯度，更新梯度。这种方法每更新一次参数都要把数据集里的所有样本都看一遍，计算量开销大，计算速度慢。第二种，线上学习梯度坡降法，该方法则采取每看一个数据就算一下损失函数，然后求梯度更新参数，虽然这个方法速度比较快，但是收敛性能不太好。为了克服上述两种方法的缺点，可采用最小批量梯度下降法，这种方法把数据分为若干批，按批来更新参数，由一批中的数据共同决定了本次梯度的方向，下降起来就不容易跑偏，减少了随机性。另一方面因为批的样本数与整个数据集相比小了很多，计算量也不大，可有效降低学习过程的计算时间成本。 2) 正则化 正则化是另一类有效防止模型过拟合的方法，正则项在优化过程中对网络层的参数(如权重系数)添加惩罚项，这些惩罚项将与损失函数一起作为网络的最终优化目标。常用的L2正则化操作的损失函数如下。 L = L 0 + λ 2 N ∑ j = 1 N w j 2 (7) 式中：L和 L 0 分别为正则化后和原始的损失函数，后面一项即为L2正则化项，它为所有权重系数w的平方和，并除以训练集的样本容量N。 λ 是正则项系数(为正值)，用于权衡正则项与 L 0 项的比重。系数1/2则为了后面求导的计算方便，将求导后产生的2与1/2相乘刚好凑整。 梯度下降方向为通过对损失函数的网络层参数，即权重系数w和偏置系数b求导数，计算如下。 ∂ L ∂ w = ∂ L 0 ∂ w + λ N w (8a) ∂ L ∂ b = ∂ L 0 ∂ b (8b) 式中：w和b为网络层的权重系数和偏置系数。 可以发现L2正则化项对偏置系数b的更新没有影响，但是对权重系数w的更新有影响： w → w − η ( ∂ L 0 ∂ w + λ N w ) (9a) w − η ( ∂ L 0 ∂ w + λ N w ) = ( 1 − η λ N ) w − η ∂ L 0 ∂ w (9b) 式中： η 为梯度下降法的学习速率参数(为正值)。 在不使用L2正则化时，求导结果中w前系数为1，现在w前面系数为 ( 1 − η λ N ) ，因为 η 、 λ 、N都是正数，所以 ( 1 − η λ N ) 小于1，它的效果是减小w，这也就是权重衰减的由来。依据奥卡姆剃刀定律，更小的权值w，表示神经网络的复杂度更低，对数据的拟合刚刚好，进而可有效的防止数据驱动模型的过拟合现象。 3) 筛选神经元 筛选神经元的基本原理：在保持神经网络模型的输入层和输出层不变的前提下，首先采用全连结(所有神经元参与训练)和BPTT算法训练一次神经网络模型，然后按一定比例(如50%)随机地“删除”隐藏层神经元，并采用非全连结(部分神经元参与训练)和BPTT学习算法更新神经网络中的权重参数。以上就是基于筛选神经元的一次迭代过程，在第二次迭代中，也用同样的方法，只不过这次删除一定比例的隐藏层神经元，跟上一次删除掉的可能是不一样的，因为我们每一次迭代都是“随机”删除，直至训练结束(达到最大迭代次数)。因此，筛选神经元可实现类神经网络的训练学习发展从全连结阶段迈向非全连结阶段，为分析数据驱动模型结构的不确定性提供了一种有效方法。 综上所述，三类神经网络的主要区别包括：1) 网络架构：BPNN属于无回馈机制的静态神经网络，NARX和LSTM均属于具有回馈机制的动态神经网络；2) 隐含层数：BPNN和NARX隐含层数为1层，而LSTM为深度学习网络，隐含层数 ≥ 1层；3) 记忆性能：BPNN具有良好的长期记忆性能，NARX具有良好的短期记忆性能，而LSTM具有较好的长期与短期相结合的记忆性能；4) 学习算法：BPNN和NARX采用线下学习梯度坡降法来优化网络学习过程，而LSTM则通过机器学习算法(最小批量梯度坡降法、正则化和筛选神经元)来优化网络学习过程。 2.5. 水文预报的评估指标 通常以评估指标值来衡量一个模型是否准确，或是比较不同模型的优劣。评估指标也常被用于模型的目标函数，如均方差(MSE)为修正神经网络模型参数或网络权重的常用指标。结合我国现行《水文情报预报规范》 (GBT 22482-2008) [ 15 ] 推荐使用的评价指标，采用以下评估指标对水文预报模型精度进行评定。 1) 合格率(Reliability， R) 流量预报以预见期内流量相对预报误差等于20%作为许可误差《水文情报预报规范》 (GB/T22482-2008)。一次预报的误差小于许可误差时，为合格预报。合格预报次数与预报总次数之比的百分数为合格率或可靠性，表示多次预报总体的精度水平。 R = ∑ t = 1 N m t N × 100 % (10a) m t = { 1 ，       if   ( R E t ≤ 20 % ) 0 ，                 else (10b) R E t = | Y f ( t ) − Y o ( t ) | Y o ( t ) × 100 % (10c) 式中： Y o ( t ) 和 分别为t时刻的实测流量和预报流量， m t 为合格预报次数，N为资料总时段数， R E t 为t时刻的相对预报误差。 2) 洪峰相对误差(Relative Error of peak， RE p ) RE p 值若大于0则代表模型洪峰预报值偏小，若小于0则代表洪峰预报值偏大，若等于0则代表无预报误差。 R E p = Y p − Y ^ p Y p × 100 % (11) 式中： Y p 和 Y ^ p 分别为场次洪水的洪峰实测值和预报值。 3) 均方根误差(Root Mean Squared Error， RMSE) RMSE值越小表示模式的精度越高，尤其在评估具有较多中高数值时，RMSE较能体现模型的优劣。 RMSE = 1 N ∑ t = 1 N ( Y f ( t ) − Y o ( t ) ) 2 ，     RMSE ≥ 0 (12) 4) 基准拟合度G bench (Goodness of fit with respect to benchmark， G bench ) G bench 值若等于或小于0则代表模型与基准序列(Benchmark series)效用相同或较差，建议该模型不值得采用；若大于0则代表模型的效能较基本序列好；G bench 值越接近1表示模型效用越好。 G bench = 1 − ∑ t = 1 N ( Y f ( t ) − Y o ( t ) ) 2 ∑ t = 1 N ( Y o ( t ) − Y bench ( t ) ) 2 ，     G bench ≤ 1 (13) 式中： Y bench ( t ) 为带有时滞因子的基准序列。如采用 Y ( t − 1 ) 流量序列预报 Y ( t ) 或 Y ( t + 1 ) 或 Y ( t + 2 ) 流量时， Y ( t − 1 ) 流量序列即为基准序列。