GRU 单元
门控循环单元(图 14-14)在 2014 年的 K.Cho et al. 的论文中提出,并且此文也引入了前文所述的编解码网络。
门控循环单元是 LSTM 单元的简化版本,能实现同样的性能,这也说明了为什么它能越来越流行。简化主要在一下几个方面:
- 长时状态和短时状态合并为一个向量 。
- 用同一个门控制遗忘门和输入门。如果门控制输入 1,输入门打开,遗忘门关闭,反之亦然。也就是说,如果当有新的记忆需要存储,那么就必须实现在其对应位置事先擦除该处记忆。这也构成了 LSTM 本身的常见变体。
- GRU 单元取消了输出门,单元的全部状态就是该时刻的单元输出。与此同时,增加了一个控制门 来控制哪部分前一时间步的状态在该时刻的单元内呈现。
公式 14-4 总结了如何计算单个输入情形时每单位步的单元的状态。
在 TensoFlow 中创建 GRU 单元很简单:
gru_cell = tf.contrib.rnn.GRUCell(n_units=n_neurons)
LSTM 或 GRU 单元是近年来 RNN 成功背后的主要原因之一,特别是在自然语言处理(NLP)中的应用。