对一般前向传播网络的深度定义是不适用于RNN的,因为RNN的时序结构,当它依时序展开时,只要t够大,那么依照一般定义这都是一个deep RNN。
但是从上图可以看出,在一个单独的time step中,普通RNN的结构无论是input-to-hidden(
xt→ht
)还是hidden-to-hidden(
ht−1→ht
)还是hidden-to-output(
ht→yt
),他们都是shallow的——仅仅是输入的线性映射后面跟了一个element-wise的非线性激活函数,中间没有任何intermediate的非线性隐藏层。
下图中灰色椭圆为RNN原有结构,白色椭圆为加入的非线性层(如全连接层)
Deep Input-to-Hidden Function
通过加深模型的input-to-hidden层能够使模型更好的学习到数据的非时序结构(如空间结构),图2中没有相应的illustration。将CNN的输出作为RNN的输入个人觉得也可以分到这一类。
Deep Hidden-to-Output Function(DO)
文章说DO function可以用来disentangle the factors of variations in the hidden state,是的输出的预测更加容易。
若存在L个intermediate的非线性层,则DO RNN的
yt
更新公式为:
Deep Hidden-to-Hidden Transition(DT)
最简单的DT RNN如图2(b)所示。DT RNN增加了RNN hidden state的表达能力,使得模型能适应变化更加剧烈的输入。但是非线性的增加也可能使梯度传播变得困难。一种可行的解决方案是参照ResNet加入shortcut connection,如图2(b*)所示。
图2(c)表示同时使用DO和DT的RNN。
若存在L个intermediate的非线性层,则DT RNN的
ht
更新公式为:
Stack of Hidden States
如图2(d)所示,隐藏层的堆叠,但是并没有增加隐藏层的非线性所以仍然是浅层RNN,和DT RNN本质上是不同的。文中说这种堆叠结构能够可以处理输入序列的多种time scales,不太理解。DT-RNN和这种堆叠结构是可以同时使用的。
Stacked RNN的更新公式为:
其中
h(l)t
是第
l
层hidden state在时间t的状态,当