LSTM的产生
我们之前在求RNN的loss的时候很容易出现梯度弥散或者梯度爆炸。这个LSTM的出现很大程度上减少了梯度弥散的情况。
还有一个很重要的就是RNN只能够记住一个比较短的序列,如果一个句子单词很多的话,它学到最后一个的时候可能它的前面的就忘记了。而这个LSTM能够改善这问题它能够学习一个比较长的序列。之前RNN是short-term-memory 加上这个long,就是long-short-term-memory就是这个LSTM。
之前的RNN:
我们在时间这个维度上展开就是这样的。
LSTM原理
这个门只是一个比喻。
:
这里相乘的符号就是一个信息的过滤,然后相加的符号就是一个信息的融合。
第一道门:忘记门
第二道门:输入门
第三道门:输出门
总的:
LSTM设计的核心就是这三道门,这有点像一个逻辑单元。
在这里我们会发现
1.如果输入门=0(关上),忘记门=1(打开)的话,这里会记住这个先前的,忘记现在的,也就是\(C_t\)==\(C_{t-1}\)。
2.如果我们的输入门=1(打开),忘记门=1(打开)的话。他会添加上先前的值
3.如果我们的输入门=0(关闭),忘记门=0(关闭)的话。这个\(C_t\)=0+0,它就会清除掉这个value。
4.如果我们的输入门=1(打开),忘记门=0(关闭)的话。他就会用这个新建完全覆盖掉这个解。
然后这个输出门就是他也可以有选择的输出,不一定全部输出。
为什么LSTM可以解决这个梯度弥散的现象?
这个LSTM它没有\(W_{hh}^k\)他没有这个K次方出现,而他的梯度是一些因子相加,相互之间有制约性。最主要的就是它没有这个\(W_{hh}^k\)。
LSTM实战
LSTM
在之前的RNN情感问题分类的基础上改变的。
GRU
- simpler
- lower computation cost