到目前为止,我们只讨论了具有一个单向隐藏层的循环神经网络。如何获得更多的非线性呢?
假设我们在时间步 t 有一个小批量的输入数据 Xt∈Rn×d(样本数:n,每个样本中的输入数:d)。
同时,将 lth 隐藏层(l=1,…,L)的隐藏状态设为 Ht(l)∈Rn×h(隐藏单元数:h),
输出层变量设为 Ot∈Rn×q(输出数:q)。
设置 Ht(0)=Xt,第 l 个隐藏层的隐藏状态使用激活函数 ϕl 的表示如下:
Ht(l)=ϕl(Ht(l−1)Wxh(l)+Ht−1(l)Whh(l)+bh(l)),
:eqlabel:eq_deep_rnn_H
其中,权重 Wxh(l)∈Rh×h 和 Whh(l)∈Rh×h 和偏置 bh(l)∈R1×h 都是第 l 个隐藏层的模型参数。
最后,输出层的计算仅基于第 l 个隐藏层最终的隐藏状态:
Ot=Ht(L)Whq+bq,
其中,权重 Whq∈Rh×q 和偏置 bq∈R1×q 都是输出层的模型参数。
与多层感知机一样,**隐藏层的数目 L 和隐藏单元的数目 h 都是超参数。**也就是说,它们可以由我们来调整或指定。
另外,用门控循环单元或长短期记忆网络的隐藏状态来代替 :eqref:eq_deep_rnn_H
中的隐藏状态进行计算,可以很容易地得到深度门控循环神经网络。
总结
- 深度循环神经网络使用多个隐藏层来获得更多的非线性。