循环神经网络(RNN) 和 长短期记忆网络(LSTM)
循环神经网络(RNN)
循环神经网络是一种用于处理序列数据的神经网络。
RNN 的输入输出:用「动图」和「举例子」讲讲 RNN

右侧展示了 RNN 模型在时间维度上的展开图。这一过程由编码器完成其目的即从序列输入中逐步提取数据并将其转化为向量(即表示输入)。
对于第

时刻,

是当前时刻的输入,用于实时更新状态;

处于上一层隐藏状态的变量用于存储信息,在文本处理中前面提供的有助于理解后续内容的关键信息。

基于 RNN 编解码架构的模型可用于自动机器翻译任务中。输入端为英文文本片段,在经过编码器逐步处理后生成固定长度的序列表示,在解码器端则通过逐步生成的方式完成目标语言句子的构建过程。编码器部分负责从英文输入中提取关键词汇信息并构建向量表示,在解码器部分则通过动态更新机制完成目标语言句子的合成工作
RNN 模型也有明显的缺点:
- 训练速度较慢:输入需逐个处理而不能并行操作
- 存在明显的局限性在于其难以高效处理过长的序列数据,在此情况下不仅会引发梯度消失问题还会导致计算效率显著下降
长短期记忆网络(LSTM)

Long Short Term Memory网络被称作是一种创新性设计的RNN架构。该网络旨在解决长期序列训练过程中常见的梯度消失与爆炸问题。与普通RNN相比,在处理较长序列时表现出更好的性能优势。

相比 RNN 只有一个传递状态,LSTM 有两个传递状态

和

LSTM 由遗忘门、输入门和输出门构成。其中:
- 遗忘门负责处理上一个状态下遗失哪些信息;
- 输入门调控如何将新信息融入到当前的状态中去;
- 输出门负责管理如何从状态下提取所需的信息出来。
LSTM 前向传播的过程
- 更新遗忘门输出:

第一步是由遗忘门(sigmoid layer)决定舍弃什么信息。
- 更新输入门两部分输出:

第二步是决定存储什么新信息,分为两部分:
一是输入门(sigmoid layer)决定将要更新哪些值;
二是创建候选值(

),存储的是当前时间点可能会存入

的信息。
- 结合以上两部分来更新

:

删除决定要忘记的信息,然后存储决定要保存的新信息。
- 更新输出门输出

首先决定要输出哪部分(sigmoid layer),然后输出决定要输出的部分。
Reference
https://zhuanlan.zhihu.com/p/36455374
https://towardsdatascience.com/illustrated-guide-to-transformer-cf6969ffa067
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
https://towardsdatascience.com/animated-rnn-lstm-and-gru-ef124d06cf45
