了解RNN模型的基础单元LSTM、GRU、RQNN 与 SRU
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解RNN模型的基础单元LSTM、GRU、RQNN 与 SRU相关的知识,希望对你有一定的参考价值。
参考技术A RNN模型的基础结构是单元,其中比较常见的有LSTM单元,GRU单元等,它们充当了RNN模型中的基础结构部分。使用单元搭建出来的RNN模型会有更好的拟合效果。LSTM单元与GRU单元是RNN模型中最常见的单元,其内容由输入门、忘记门、和输出门三种结构组合而成。
LSTM单元与GRU单元的作用几乎相同,唯一不同的是:
相比之下,使用GRU单元会更加简单。
QRNN(Quasi-Recurrent Neural Networks) 单元是一种RNN模型的基础单元,它比LSTM单元速度更快。
QRNN单元发表于2016年。它使用卷积操作替代传统的循环结构,其网络结构介于RNN与CNN之间。
QRNN内部的卷积结构可以将序列数据以矩阵方式同时运算,不再像循环结构那样必须按照序列顺序依次计算。其以并行的运算方式取代了串行,提升了运算速度。在训练时,卷积结构也要比循环结构的效果更加稳定。
在实际应用中,QRNN 单元可以与RNN模型中的现有单元随意替换。
了解更多,可以参考论文:
Quasi-Recurrent Neural Networks
SRU单元是RNN模型的基础单元,它的作用与QRNN单元类似,也是对LSTM单元在速度方面进行了提升。
LSTM单元必须要将样本按照序列顺序一个个地进行运算,才能够输出结果。这种运算方式使得单元无法在多台机器并行计算的环境中发挥最大的作用。
SRU单元被发表于2017年。它保留LSTM单元的循环结构,通过调整运算先后顺序的方式(把矩阵乘法放在串行循环外,把相乘的再相加的运算放在串行循环内)提升了运算速度。
若需要研究SRU单元更深层次理论,可以参考如下论文:
Simple Recurrent Units for Highly Parallelizable Recurrence
关于函数tf.contrib.rnn.SRUCell 的更多使用方法,可以参照官方帮助文档。
https://www.tensorflow.org/api_docs/python/tf/contrib/rnn/SRUCell
注:需要科学上网
github可以参考:
https://github.com/tensorflow/tensorflow/blob/r1.15/tensorflow/contrib/rnn/python/ops/rnn_cell.py#L2738-L2816
以上是关于了解RNN模型的基础单元LSTM、GRU、RQNN 与 SRU的主要内容,如果未能解决你的问题,请参考以下文章
深度学习之六,基于RNN(GRU,LSTM)的语言模型分析与theano代码实现