RNN

RNN的主要用来处理序列数据。 在传统的神经网络模型中,是从输入层到隐含层再到输出层, 层与层之间是全连接的,每层之间的节点是无连接的。但是 这种普通的神经网络对于很多问题却无能无力。例如,你要 预测句子的下一个单词是什么,一般需要用到前面的单词, 因为一个句子中前后单词并不是独立的。

RNN之所以称为循环神经网路,即一个序列当前的输出与前 面的输出也有关。 具体的表现形式为网络会对前面的信息进行记忆并应用于当 前输出的计算中,即隐藏层之间的节点不再无连接而是有连 接的,并且隐藏层的输入不仅包括输入层的输出还包括上一 时刻隐藏层的输出。

RNN图示

image-20230205142353099

LSTM 网络

Long Short Term 网络—— 一般就叫做 LSTM —— 是一种 RNN 特殊的类型,可以学习长期依赖信息。 在很多问题,LSTM 都取得相当巨大的成功,并得到 了广泛的使用,它是RNN事实上的标准。

LSTM 的窍门在于拥有一个固定权值为1的自连接,以及一个 线性激活函数,因此其局部偏导是中为1。 这样的话,误差就能在时间步中传递,而不会消失或爆炸。

LSTM 通过门对通过的信息进行控制:门是一种让信息选择 式通过的方法。 LSTM通过门可以让信息不通过、完全通过、通过一部份。

GRU 门限循环单元。 与LSTM相比,GRU结构更加简单,它有一个更新门,更新 门决定了内部状态与输入state状态的融合比例,简单的说, GRU与LSTM网络相比,建构简单,计算少,效果相当。

Keras中的实现

Keras支持RNN各种变体:

  1. layers.LSTM
  2. layers.GRU