LSTM是RNN的变形,也就是循环神经网络的形式之一,主要解决传统RNN记忆问题,距离较远的文本信息无法得到利用、距离较近但语义上关联不大的文本信息造成了太大的干扰。(像是一个容易遗忘的老人,记不住太久远之前的信息,所以就出现了LSTM,让他只记住有用的信息)
传统RNN的问题分析:比如输入文本是我今天要做红烧排骨,首先要准备排骨,然后…,最后一道美味的菜就出锅了.这个时候我们要让RNN来判断我们到底做了什么菜,RNN可能给出辣子鸡这个答案,然后就反向的去推导误差,在循环神经网络中,由于模型每个时刻的状态都是由之前的状态的乘积得来的,那么根据链式法则,如果每一层神经元对上一层的输出的偏
导乘上权重结果都小于 1,则在经过足够多的传播之后,误差对输入层的梯度会趋近于 0,即梯度消失;反之,则梯度会随着反向传播层数的增加而呈指数增长,导致梯度爆炸(梯度爆炸可以用剪裁来解决)
梯度消失:
梯度爆炸:
为了解决上面出现的梯度消失的问题,就出现了LSTM(长短期记忆)
具体LSTM模型是怎么实现的呢?
相对于传统的RNN,LSTM的输入由x(t)[输入数据],a(t-1)[隐藏层信息]两个数据变成了x(t)[输入数据],a(t-1)[隐藏信息],c(t-1)[记忆单元]