摘要
由于在并行状态计算上的内在困难,RNN架构很难扩展。
比如,h_t 的前向计算被阻止直到 h_(t−1) 的整个计算结束,这对并行计算来说是一个主要的瓶颈。在这项工作中,我们提出了Simple Recurrent Unit (SRU) 架构,简化了计算并展现更多的并行性。在SRU中,每一步的大部分计算都是独立的,可以很容易的并行化。SRU和卷积层一样快,并且优化后的LSTM实现快5-10x。我们在大量应用程序上研究了SRUs,包括分类、问题回答、语言建模、翻译与语音识别。我们的实验证明了SRU的有效性以及在速度和性能之间的折衷。
简介
方法
SRU
很多循环架构,包括LSTM和GRU,使用门来控制信息流来缓解梯度消失和爆炸的问题。我们将一个门定义为一个sigmoid激活函数的单层前馈网络。门输出使用点乘运算来组合两个输入,例如当前和之前的时间戳。 前馈网络的计算,特别是矩阵乘法是这个过程中最昂贵的操作,而点乘是相对较轻的。 SRU中的关键设计决策是使门计算仅依赖于递归的当前输入。 这只留下依赖于前面步骤的点乘计算。 前馈网络中涉及的矩阵乘法可以很容易地并行化。
SRU的基本形式包括一个遗忘门。 给定t时刻的输入xt,我们计算一个线性变换x~(Lei et al., 2017; Lee et al., 2017)和遗忘门ft:
这个计算仅依赖于xt,这使得它可以在所有时间步中并行的计算。遗忘门被用来调节内部状态ct,ct用于计算输出状态ht:
g(.)一个用来产出输出状态ht的激活函数。
完整架构还包括skip connection,skip connection已被证明可以提升大规模网络层的深层网络训练(He et al., 2016; Srivastava et al., 2015; Wu et al., 2016a)。 我们使用highway connection(Srivastava et al., 2015),并添加一个类似于遗忘门ft的重置门rt。重置门用来计算输出状态ht作为内部状态g(ct)和输入xt的组合。 完整的架构是:
注:(5)的最后一个xt是不应该是x~t。
和一般架构的关系
现有的RNN架构在循环计算中使用先前的输出状态h(t-1)。 例如,在LSTM中,通过ft =σ(Wf xt + Rf ht-1 + bf)来计算遗忘门矢量。 包含Rht-1破坏了独立性和并行化:隐藏状态ht的每个维度依赖于ht-1,并且ht的计算必须等到ht-1被完全计算后。 在GRU和其他RNN变体中都存在类似的设计选择,在整个计算中使用ht-1。
我们建议完全放弃步骤t的门控计算与步骤t-1状态之间、h和c的之间的连接。给定输入向量序列{x1,…,xn},不同时刻t=1,…,n的{x~t, ft, rt}之间是独立的,可以被并行计算。我们架构的计算瓶颈是在公式1-3中的是哪个矩阵乘法。在计算x~t, ft, rt后,公式4和5中的所有操作都是元素级的,计算速度很快。
对比LSTM
SRU少了一个输入门i,SRU的重置门相当于LSTM的输出门。
SRU is faster than LSTM.
To achieve the same performance, SRU has to stack more layers than LSTM.
Stacking multiple SRU layers is possible. Compared with 4 layers are the limit of LSTM, 10-layer SRU is still able to converge and get a lower perplexity.
2-layer LSTM works significantly better than 1-layer LSTM while 4-layer LSTM is no better than 2-layer LSTM.
Larger embedding size boots final result little.
Kowning previous attention surely helps model predict which is easy to notice. However, SRU achieves similar performance without previous attention information. I assume the skip connection and attention provides complementary information.