RNN
可以更好的理解序列问题,因为S的值取决于上一个输入的S的值
U是输入层到隐藏层的权重矩阵,o也是一个向量,它表示输出层的值;V是隐藏层到输出层的权重矩阵。
由上图, 循环神经网络可以往前看任意多个输入值
BPTT(RNN的反向传播算法)Back-Propagation Through Time
https://www.cnblogs.com/xweiblogs/p/5914622.html#undefined
RNN有梯度下降或者梯度爆炸的特征
LSTM
RNN不能解决长序列的问题,长短期记忆网络(LSTM)的全称是Long Short Term Memory networks,是RNN的一种特殊形式,特点是能够学习长距离依赖关系。
https://blog.csdn.net/hust_tsb/article/details/79485268
RNN与LSTM最大的区别在于LSTM中最顶层多了一条名为“cell state”的信息传送带,其实也就是信息记忆的地方;
LSTM的核心思想:
(1)理解LSTM的核心是“cell state”,暂且名为细胞状态,也就是上述图中最顶的传送线,如下:
(2)cell state也可以理解为传送带,个人理解其实就是整个模型中的记忆空间,随着时间而变化的,当然,传送带本身是无法控制哪些信息是否被记忆,起控制作用的是下面将讲述的控制门(gate);
(3)控制门的结构如下:主要由一个sigmoid函数跟点乘操作组成;sigmoid函数的值为0-1之间,点乘操作决定多少信息可以传送过去,当为0时,不传送,当为1时,全部传送;
(4)LSTM中有3个控制门:输入门,输出门,记忆门;
LSTM工作原理:
(1)forget gate:选择忘记过去某些信息:
(2)input gate:记忆现在的某些信息:
(3)将过去与现在的记忆进行合并:
(4)output gate:输出
PS:以上是标准的LSTM的结构,实际应用中常常根据需要进行稍微改善;
LSTM反向传播:https://www.cnblogs.com/pinard/p/6519110.html
GRU Gated Recurrent Unit
LSTM相比较最基本的RNN,在NLP的很多应用场景下都表现出了很好的性能,至今依然很常用。但是,LSTM存在一个问题,就是计算开销比较大,因为其内部结构相对复杂。GRU 也是为了旨在解决标准 RNN 中出现的梯度消失问题,可以看做是LSTM的一种变种。其实在大多数情况下GRU的性能和LSTM几乎相差无几(甚至有时候LSTM效果更好,且LSTM是1997年提出的,经受了更多的历史考验),但GRU最大的优势就是 简单(因为只有两个门),计算开销小,更加适用于大规模数据集。
首先上个图来看下GRU的结构(图片来自:colah’s blog《Understanding LSTM Networks》),为了让大家看的更明白,我把图片做了细微的改动,其实就是多加了几个箭头。。如下图所示:
https://blog.csdn.net/u012328159/article/details/87907739
Rt为重置门,Zt更新门