chap9 现代循环神经网络(3) 深度循环神经网络

到目前为止,我们只讨论了具有一个单向隐藏层的循环神经网络。如何获得更多的非线性呢?

  • 浅 RNN:

    • 输入层
    • 隐藏层
    • 输出层
  • 深 RNN:

    • 输入层
    • 隐藏层
    • 隐藏层
    • 输出层

假设我们在时间步 tt 有一个小批量的输入数据 XtRn×d\mathbf{X}_t \in \mathbb{R}^{n \times d}(样本数:nn,每个样本中的输入数:dd)。

同时,将 lthl^\mathrm{th} 隐藏层(l=1,,Ll=1,\ldots,L)的隐藏状态设为 Ht(l)Rn×h\mathbf{H}_t^{(l)} \in \mathbb{R}^{n \times h}(隐藏单元数:hh),

输出层变量设为 OtRn×q\mathbf{O}_t \in \mathbb{R}^{n \times q}(输出数:qq)。

设置 Ht(0)=Xt\mathbf{H}_t^{(0)} = \mathbf{X}_t,第 ll 个隐藏层的隐藏状态使用激活函数 ϕl\phi_l 的表示如下:

Ht(l)=ϕl(Ht(l1)Wxh(l)+Ht1(l)Whh(l)+bh(l)),\mathbf{H}_t^{(l)} = \phi_l(\mathbf{H}_t^{(l-1)} \mathbf{W}_{xh}^{(l)} + \mathbf{H}_{t-1}^{(l)} \mathbf{W}_{hh}^{(l)} + \mathbf{b}_h^{(l)}),

:eqlabel:eq_deep_rnn_H

其中,权重 Wxh(l)Rh×h\mathbf{W}_{xh}^{(l)} \in \mathbb{R}^{h \times h}Whh(l)Rh×h\mathbf{W}_{hh}^{(l)} \in \mathbb{R}^{h \times h} 和偏置 bh(l)R1×h\mathbf{b}_h^{(l)} \in \mathbb{R}^{1 \times h} 都是第 ll 个隐藏层的模型参数。

最后,输出层的计算仅基于第 ll 个隐藏层最终的隐藏状态:

Ot=Ht(L)Whq+bq,\mathbf{O}_t = \mathbf{H}_t^{(L)} \mathbf{W}_{hq} + \mathbf{b}_q,

其中,权重 WhqRh×q\mathbf{W}_{hq} \in \mathbb{R}^{h \times q} 和偏置 bqR1×q\mathbf{b}_q \in \mathbb{R}^{1 \times q} 都是输出层的模型参数

与多层感知机一样,**隐藏层的数目 LL 和隐藏单元的数目 hh 都是超参数。**也就是说,它们可以由我们来调整或指定。

另外,用门控循环单元或长短期记忆网络的隐藏状态来代替 :eqref:eq_deep_rnn_H 中的隐藏状态进行计算,可以很容易地得到深度门控循环神经网络。

总结

  • 深度循环神经网络使用多个隐藏层来获得更多的非线性。