注:本文结合了 理解长短期记忆(LSTM) 神经网络 和 CS224D 的slide
先从RNN开始:
传统的CNN用于图像识别效果很好,但是如果将CNN用于NLP结果就不会太好,尤其对于复杂情况应用CNN很难得到想要的结果。因为传统的神经网络并不能做到持续记忆
, 而许多情境下我们需要从复杂的上下文中推断出信息,这个时候CNN就不能满足需求了。
先看RNN的结构
其中A 代表神经网络主体, xt 是网络输入,ht是网络输出,循环结构允许信息从当前输出传递到下一次的网络输入
,所以是一个递归的结构。展开来看是这样的:
可以看到hiddenState是从过去传到未来的,也就是说RNN会记住
前世的信息。
RNN 的缺点:
- 难以训练:Multiply the same matrix at each time step during forward prop
- 梯度弥散、梯度爆炸:Multiply the same matrix at each time step during backprop(当需要查找的结果距离当前位置很远时,梯度可能会变得很小)
LSTM(Long-short-term-memories)
- 首先是
遗忘门
:以x和上一层输出的hidden state为输入,通过sigmod决定遗忘那些数据 - 然后是
输入门
:以x和上一层输出的hidden state为输入,通过sigmod决定记住那些数据 - 然后是
输出门
:以x和上一层输出的hidden state为输入,通过sigmod决定输出那些数据 - 再是
cell
:以x和上一层输出的hidden state为输入,通过sigmod决定记住这一层的那些数据 - 然后是这一层最终记录什么数据:如果
ft
是0则会忘记以前的全部信息。如果it是0曾会忘记这层的全部信息,然后相加得到这层的最终结果 - 最后保存这一层的hidden state,即
输出门
乘以经过tanh
的结果
Original link:https://izhangzhihao.github.io//2017/10/02/LSTM笔记/