续上一篇 RNN 笔记:https://blog.csdn.net/yizhishuixiong/article/details/105588233
普通的 RNN(只有短期记忆)会由于梯度消失或梯度弥散无法回忆起久远记忆(若预测所需关键信息出现在数据开头,RNN 分析到数据末尾时,将误差反向传播到开头,容易因梯度消失或梯度弥散而出现误差无限小或无限大);
为了解决上述问题,提出了 LSTM(长一点的短期记忆);
LSTM 相比于普通 RNN 多了一个全局控制器(主线)、输入控制、输出控制、忘记控制(遗忘门);
- 若某一输入对于全局结果较重要,就会按照重要程度加入全局控制器中再进行分析;
- 若某一输入改变了全局结果,那么忘记控制就会将之前的某些输入忘记,按比例替换成当前的输入;
- 全局控制器取决于输入控制和忘记控制;
- 最后由输出控制综合全局控制器和输入决定最终的输出结果;
LSTM 的结构如下:
其中每个重复的模块中有三个“门”结构:
这是由一个 sigmoid 层与一个乘法操作构成的(sigmoid 函数输出是0到1之间的数字,为1时表示所有量都可以通过此门,为0时表示所有量都不能通过此门);
遗忘控制:
LSTM 网络经过学习,通过 t 时刻的输入,决定此时刻记住之前百分之多少的内容;
输入控制:
由 tanh 产生一个候选状态,通过输入控制门来决定要以何种方式更新这一状态(相当于使用输入控制门来进行选择),然后将更新后的结果加入主线中;
输出控制:
通过输出控制门确定将输出当前状态 <> 的哪部分,再与 经过遗忘控制和输入控制的主线状态经过 tanh 处理后的结果 相乘,确定此时刻输出;