system: [SYSTEM]

user: 2. 基于均生函数的长短期记忆神经网络模型 2.1. 均生函数建模的原理和方法 均生函数(Mean Generating Function， MGF)建模主要是基于动态时间序列系统状态前后具有依赖的记忆思想，把原始序列以及它的一阶差分、二阶差分按照不同时间间隔计算均值，构建周期函数及其延拓序列。通过分析原序列与这组周期函数间及其延拓序列的统计关系，建立回归预测方程，其目的就是将动态的时间序列分析转化为静态数据分析，将单一的要素通过不同的因子生成方式，转化为包含不同预报信息的多个预报因子序列 [ 39 ] [ 40 ]。原理为： 设某一时间序列为 y ( t ) = { y ( 1 ) ， y ( 2 ) ， ⋯ ， y ( n ) } (1) 式中n为样本长度，则序列的平均值为 x 1 ¯ ( 1 ) = 1 n ∑ i = 1 n y ( i ) ， 则均值生成函数为： x l ¯ ( i ) = 1 n l ∑ j = 0 n l y ( i + j ∗ l ) ，     i = 1 ， 2 ， ⋯ ， l ，     1 ≤ l ≤ m (2) 式中 ，INT表示取整，对均生函数 x l ¯ ( i ) 按照式(3)做周期延拓计算由此构造均 生函数延拓序列矩阵 x l ( t ) = y t ¯ [ t − l I N T ( t − 1 l ) ] (3) X = [ x ¯ ( 1 ) x 2 ¯ ( 1 ) x 3 ¯ ( 1 ) ⋯ x M ¯ ( 1 ) x ¯ ( 1 ) x 2 ¯ ( 2 ) x 3 ¯ ( 2 ) ⋯ x M ¯ ( 2 ) x ¯ ( 1 ) x 1 ¯ ( 1 ) x 3 ¯ ( 3 ) ⋯ x M ¯ ( 3 ) ⋮ ⋮ ⋮ ⋱ ⋮ x ¯ ( 1 ) x 2 ¯ ( i 2 ) x 3 ¯ ( i 3 ) ⋯ x M ¯ ( i M ) ] (4) 同时为对原始序列 y ( t ) 再分别计算一阶差分和二阶差分后再次计算均生函数并延拓获得一阶差分和二阶差分矩阵，对3个延拓的均生函数序列矩阵的信息熵计算采用由此可以获得： 2 I = 2 [ ∑ i = 1 G ∑ j = 1 G n i j ln n i j + N ln N − ( ∑ i = 1 G n i ln n i + ∑ j = 1 G n j ln n j ) ] (5) 其中I为对分类预测的信息熵评分， n i j 为i类事件与j类估计事件的列联表中的个数，挑选出预报信息熵(Information Entropy， IE)相对高的延拓均生函数序列作为建模因子。 2.2. 长短期记忆神经网路建模方法 假设给定一个时间序列 x ( t ) = { x ( 1 ) ， x ( 2 ) ， ⋯ ， x ( n ) } ，传统时间序列模型是建立自回归模型进行预测，具体表达式如下： x ( t ) = ω 0 + ∑ i p ω i x ( t − i ) + ε t (6) 其中p为延迟阶数， ω 0 为回归系数， ε t ~ N ( 0 ， σ 2 ) 为白噪声，LSTM针对时间序列问题，后续每一时刻有外部输入时，则模型演变成有外部输入的非线性自回归模型时间序列模型： y ( t ) = f { x ( t − 1 ) ， x ( t − 2 ) ， ⋯ ， x ( t − p ) ， y ( t − 1 ) ， y ( t − 2 ) ， ⋯ ， y ( t − p ) } (7) 其中 f ( ⋅ ) 为利用神经网络模拟估计逼近函数。原始RNN的隐藏层只有一个h状态，它对于短期的输入非常敏感，很难实现自身反馈和记忆状态。LSTM通过增加一个存储单元状态c来实现，让网络保存长期的状态。在t时刻，LSTM单元模块有三个输入：(1) 当前时刻网络的输入值 x t ；(2) 上一时刻LSTM的网络隐层输出值 h t − 1 ；(3) 上一时刻网络单元状态的输出 c t − 1 ；LSTM的网络输出有两个：当前时刻LSTM网络隐层输出值 h t ，和当前时刻网络单元状态的输出 c t ，具体LSTM网络模块结构如图1所示。 图1. LSTM神经网络模型结构和展开图 LSTM隐层记忆单元具有的遗忘门、输入门和输出门使得网络具有记忆单元长短时记忆机制，该机制一致地确定要保留的信息，要保留的时间以及何时从存储单元读取信息。在存储单元状态中配备三个门结构门，即：遗忘门、输入门和输出门。通过门控单元可以对存储单元添加和删除信息，有选择地决定信息是否通过，采用sigmoid神经网络层和一个成对乘法操作组成，该层的输出是一个介于0到1的数，表示允许信息通过的多少，0表示完全不允许通过，1表示允许完全通过 [ 41 ] [ 42 ] [ 43 ]。LSTM的建模过程隐层单元的结构图如图2所示。 图2. LSTM的隐层单元的结构图 遗忘门决定上一时刻的单元状态有多少“记忆”可以保留到当前时刻，其计算模型如下： f t = σ ( W f ⋅ [ h t − 1 ， x t ] + b f ) (6) 而输入门根据上一次的输出 h t − 1 和本次输入 x t 来计算当前输入的单元状态，避免当前无关紧要的内容进入记忆，决定当前时刻网络输入 x t 有多少保存在单元状态 c t 中，其计算模型如下： i t = σ ( W i ⋅ [ h t − 1 ， x t ] + b i ) (8) 用于描述当前输入状态 c ′ t 的计算模型如下： Z t = tanh ( W c ⋅ [ h t − 1 ， x t ] + b c ) (9) 这是一个tanh激活函数生成新的候选值 z ′ t ，它作为当前层产生的候选值会添加到单元状态中，当前时刻输入的单元状态 c t 计算模型如下： c t = f t ⋅ c t − 1 + i t ⋅ z ′ t (10) 则模型的输出 o t ， h t 的计算，首先是先通过 σ 层来得到一个初始输出，然后使用tanh将 缩放到−1到1间，再与 σ 得到的输出逐对相乘，从而得到模型的输出，具体计算如下： (11) h t = o t ∗ tanh ( c t ) (12) 以上公式中 W f ， W i ， W c ， W o 是权重矩阵， b f ， b i ， b c ， b o 是偏置项， [ h t − 1 ， x t ] 表示把两个向量连接成一个更长的向量， σ 是门的激活函数，表达式如下： σ ( z ) = 1 1 + e − z (13) LSTM主要是求解以上8个参数，损失函数是交叉熵损失函数，表示为： L = 1 N ∑ t = 1 N ( − ∑ j = 1 V ( y t j ∗ ln y ^ t j ) ) (14) 采用梯度下降的误差反向传播算法(Back-Propagation Through Time， BPTT)求解模型的参数，首先确定参数的初始化值，然后向前计算每个神经元的输出值；反向计算每个神经元的误差项值，LSTM误差项的反向传播包括两个层面：空间层面上将误差项向网络的上一层传播，时间层面上沿时间反向传播，即从当前t时刻开始，计算每个时刻的误差。每个权重(即参数)具体推导和计算过程见文献 [ 44 ] [ 45 ]。 2.3. 柳江径流建模过程 本文利用柳江原始径流和一阶差分序列的均生函数生成径流序列延拓矩阵，并利用信息熵筛选建模因子作为神经网络输入训练集，建立非线性自回归外生输入神经网络(Nonlinear Auto Regressive with External Input by Neural Network， NARX-NN)和长短期记忆神经网络(Information Entropy and Long Short-Term Memory Neural Network， IE-LSTMNN)的径流模型，具体计算过程如图3和图4所示。