RNN的弊端
RNN是在有序的数据上进行学习的,RNN会像人一样,产生对之前发生事情的记忆,不过一般形式的RNN,就像一位老爷爷,有的时候比较健忘。
为什么会这样呢?
想象输入X是一句话,
现在请RNN来分析,我今天做的到底是什么菜呢?
RNN可能会给出 辣子鸡 这个答案。
由于判断失误,RNN就要开始学习这个长序列X和红烧排骨之间的关系。而RNN所需要的关键数据红烧排骨却出现在句子开头
RNN是怎么学习的呢?
红烧排骨这个信息源的记忆,要经过长途跋涉,才能最终抵达最后一个时间点,
然后我们可以得到误差,反向传递时,每一步都会乘一个参数w,每一步乘以权重。
如果w是一个小于1的数,比如0.9,0.9不断乘乘乘,所以对于初始时刻,误差就相当于消失了,我们把这个问题叫做梯度消失,
如果w是一个大于1的数,不断累积相乘,误差越来越大,RNN被这个无穷大的数撑死了,我们叫做梯度爆炸
这就是RNN没有办法回忆起久远记忆的原因。
因此产生了LSTM——解决久远记忆。
LSTM
长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层。
结构
LSTM与RNN相比,多了三个控制器。输入控制,输出控制,忘记控制
多了一个控制全局的记忆,我们用粗线来表示。为了方便理解,我们把粗线想象成电影或者游戏当中的主线剧情。而原本的RNN体系就是分线剧情。三个控制器都是在原始的RNN体系上,
我们先看输入方面:如果此时的分线剧情对于剧中结果十分重要,输入控制就会将这个分线剧情按重要程度给入主线剧情,在进行分析。
再看忘记方面:如果此时分线剧情改变了我们对之前剧情的想法,那么忘记控制就会将之前的某些主线剧情忘记,按比例替换成现在的新剧情。所以主线剧情的更新,就取决于输入和忘记控制
输出方面:输出控制会基于目前的主线剧情和分线剧情判断要输出的到底是什么,基于这些控制机制,LSTM就像延缓记忆衰退的良药,可以带来更好的结果。