·642. 智能系统学报 第12卷 序特征的数据无能为力。为了解决输入之间前后 若训练样本中包含T个时刻的数据,则递归神 关联的问题,多层前馈神经网络的隐含层不仅需要 经网络将展开成一个包含T个隐含层的前馈神经 接收当前的输入,也要接收上一时刻的输出,由此 网络。理论上来说,递归神经网络可以处理任意长 产生了递归神经网络。 度的序列数据,但是当处理无限长的序列数据时, 1.2递归神经网络 展开的多层前馈神经网络也是无限层的。因此,在 为了克服前馈神经网络无法处理序列数据的 实际应用中通常只假设当前状态与之前有限个状 问题,递归神经网络将隐含层之间的节点相互连 态相关,以降低复杂度。与传统的前馈神经网络不 接,使得隐含层的输入不仅仅是当前时刻输入层的 同的是,展开的递归神经网络有如下特点。 输出还包括了上一时刻隐含层的输出。通过这种 1)每个隐含层的输入都由两部分组成,即对应 方式,递归神经网络可以将当前时刻以前的信息记 时刻输入层的输出和上一时刻隐含层的输出。而 忆在网络之中1。如图2所示,递归神经网络与前 传统前馈神经网络的输入只能是上一层(隐含层或 馈神经网络的结构大致相同,不同之处在于隐含层 输入层)的输出。 之间的连接关系,即增加了隐含层间的权重W。。 2)如图3所示,展开的递归神经网络相同位置 的参数W、b,、W2b2、W是共享的,而传统前馈神 经网络则是非共享的,这也大大地降低了网络所要 学习的参数。 3)对于递归神经网络,每一个时刻都会给出一 个输出,但是并不是必要的,只有t时刻的输出y,才 是模型的预测结果,其余的输出结果都保存在了隐 图2递归神经网络 含层中。 Fig.2 Recurrent neural networks 1.3递归神经网络用于风暴潮增水预测 若Ldn隐含层包含m个神经元,则W。为m× 风暴潮增水数据是一维的时间序列,基于递归 m维的权重矩阵。递归神经网络的传播过程可以用 神经网络进行预报的具体做法如下。 式(2)表示: 假设样本数据为d={d,d2,…,d},利用前k h,=f(Wix Wih-1+b) 个数据作为特征预测下一个数据,则可以组成训练 y =f(Wih,+b2) (2) 样本X和标签y: 式中:W,表示输入层和隐含层之间的连接权重: X={x1,2,…,x-k}= W2表示隐含层和输出层之间的连接权重;b,和b2 {d1,4,…,d4},{d2,4,…d},…,{dr4,d-1…,d-}} 分别表示隐含层和输出层的偏置;x,、h,和y,分别 y={y1,y2,…yr-}={d+1,ds+2,…,dr} 表示第t时刻网络的输入、隐含层输出和网络的输 一般假设当前状态只和前1个状态有关,因此 出;h,表示第t-1时刻隐含层的输出。激活函数一 再将X和y进一步按照状态数目分割,制作最终的 般是双曲正切函数或者Relu函数。 训练样本和相应标签夕。利用和y即可对递归 此外,递归神经网络还可以展开成相对应的多 神经网络进行训练。同理,预测时,按照上述步骤 层前馈神经网络,从而可以使用BPTT(back- 制作测试样本,输入到递归神经网络中获得预测 propagation through time)算法[2o]进行训练,展开过 值,由此实现风暴潮增水预测。 程如图3所示。 递归神经网络 多层前馈神经网路 ={{x1x2,…,x},{x2,x3,…,x1+1},… {xr-s-+1,xr-k-42,…,xr-4}} w.b w b. y={{y1y2,…y},{y2y3,…y+},… W {yr-k-41Jr-k-142,…yr-k} 展开 hidden 2 实验结果 W b 本文的实验数据集是潍坊水站从2008~2014 年记录的风暴潮增水过程数据。每个增水过程共 图3递归神经网络展开过程 历时3天,每隔1记录1个水位数据,总计72个 Fig.3 The unfolding of recurrent neural networks 数据。图4展示了2008年里的2个增水过程。序特征的数据无能为力。 为了解决输入之间前后 关联的问题,多层前馈神经网络的隐含层不仅需要 接收当前的输入,也要接收上一时刻的输出,由此 产生了递归神经网络。 1.2 递归神经网络 为了克服前馈神经网络无法处理序列数据的 问题,递归神经网络将隐含层之间的节点相互连 接,使得隐含层的输入不仅仅是当前时刻输入层的 输出还包括了上一时刻隐含层的输出。 通过这种 方式,递归神经网络可以将当前时刻以前的信息记 忆在网络之中[19] 。 如图 2 所示,递归神经网络与前 馈神经网络的结构大致相同,不同之处在于隐含层 之间的连接关系,即增加了隐含层间的权重 Wh 。 图 2 递归神经网络 Fig.2 Recurrent neural networks 若 Lhidden 隐含层包含 m 个神经元,则 Wh 为 m × m 维的权重矩阵。 递归神经网络的传播过程可以用 式(2)表示: ht = f W T 1 x + W T hht-1 + b1 ( ) y = f W T 2ht + b2 ( ) (2) 式中: W1 表示输入层和隐含层之间的连接权重; W2 表示隐含层和输出层之间的连接权重; b1 和 b2 分别表示隐含层和输出层的偏置;xt、ht 和 yt 分别 表示第 t 时刻网络的输入、隐含层输出和网络的输 出;ht-1表示第 t-1 时刻隐含层的输出。 激活函数一 般是双曲正切函数或者 Relu 函数。 此外,递归神经网络还可以展开成相对应的多 层前 馈 神 经 网 络, 从 而 可 以 使 用 BPTT ( back⁃ propagation through time) 算法[20] 进行训练,展开过 程如图 3 所示。 图 3 递归神经网络展开过程 Fig.3 The unfolding of recurrent neural networks 若训练样本中包含 T 个时刻的数据,则递归神 经网络将展开成一个包含 T 个隐含层的前馈神经 网络。 理论上来说,递归神经网络可以处理任意长 度的序列数据,但是当处理无限长的序列数据时, 展开的多层前馈神经网络也是无限层的。 因此,在 实际应用中通常只假设当前状态与之前有限个状 态相关,以降低复杂度。 与传统的前馈神经网络不 同的是,展开的递归神经网络有如下特点。 1)每个隐含层的输入都由两部分组成,即对应 时刻输入层的输出和上一时刻隐含层的输出。 而 传统前馈神经网络的输入只能是上一层(隐含层或 输入层)的输出。 2)如图 3 所示,展开的递归神经网络相同位置 的参数 W1 、b1 、W2 、b2 、Wh 是共享的,而传统前馈神 经网络则是非共享的,这也大大地降低了网络所要 学习的参数。 3)对于递归神经网络,每一个时刻都会给出一 个输出,但是并不是必要的,只有 t 时刻的输出 yt 才 是模型的预测结果,其余的输出结果都保存在了隐 含层中。 1.3 递归神经网络用于风暴潮增水预测 风暴潮增水数据是一维的时间序列,基于递归 神经网络进行预报的具体做法如下。 假设样本数据为 d = d1 ,d2 ,…,dT { } ,利用前 k 个数据作为特征预测下一个数据,则可以组成训练 样本 X 和标签 y: X = x1 ,x2 ,…,xT-k { } = d1,d2,…,dk { } , d2,d3,…,dk+1 { } ,…, dT-k,dT-k+1,…,dT-1 { { } } y = y1 ,y2 ,…,yT-k { } = dk+1 ,dk+2 ,…,dT { } 一般假设当前状态只和前 l 个状态有关,因此 再将 X 和 y 进一步按照状态数目分割,制作最终的 训练样本 X^ 和相应标签 ^y。 利用 X^ 和 ^y 即可对递归 神经网络进行训练。 同理,预测时,按照上述步骤 制作测试样本,输入到递归神经网络中获得预测 值,由此实现风暴潮增水预测。 X^ = {{x1 ,x2 ,…,xl},{x2 ,x3 ,…,xl+1 },…, {xT-k-l+1 ,xT-k-l+2 ,…,xT-k}} ^y = {{y1 ,y2 ,…,yl},{y2 ,y3 ,…,yl+1 },…, {yT-k-l+1 ,yT-k-l+2 ,…,yT-k}} 2 实验结果 本文的实验数据集是潍坊水站从 2008 ~ 2014 年记录的风暴潮增水过程数据。 每个增水过程共 历时 3 天,每隔 1 h 记录 1 个水位数据,总计 72 个 数据。 图 4 展示了 2008 年里的 2 个增水过程。 ·642· 智 能 系 统 学 报 第 12 卷