本期讲解LSTM为什么可以取代RNN从而解决了梯度消失的问题,阅读本文可以参考以下几篇历史文章:


《漫谈RNN之基本概念》

《漫谈RNN之训练方法》

《漫谈RNN之梯度消失及梯度爆炸》

《漫谈RNN之长短期记忆模型LSTM》



《漫谈RNN之梯度消失及梯度爆炸》一文中,已经阐述了为什么RNN会引起梯度消失的问题,我觉得总结起来主要有两个原因:


随着时间长度逐渐增大,矩阵W的特征值如果小于1,那么就会导致梯度接近于0;另一方面,如果特征值大于1,在后向传播过程中就会导致梯度爆炸;

sigmoid激活函数的导数范围是[0,0.25],这加剧了梯度消失问题的发生;



LSTM通过引入常数偏导来解决了这个问题,即Constant Error Carousels(CEC),CEC的具体意思是令求导偏导为单位矩阵,即:

9.1_.JPG



这个时候,只要σ函数为线性函数即可,W_h固定即可使得偏导固定为一个常数单位矩阵;甚至,可以直接令W为单位矩阵,σ为恒等变换线性函数:

9.2_.JPG



简单来说,CEC的做法就是对于细胞单元永远传递偏导为1的信号,而让其他各个门函数的权重去自我学习,如下图所示,这样就使得了LSTM的记忆细胞可以学得更长的历史记忆信息,从而解决了导致梯度消失的问题。

9.3_.jpg



中间细胞单元的权重一直保持为单位矩阵,其他三个非线性单元是用来控制误差流进入细胞单元的大小。如果没有添加遗忘门的话,其结构图如下:

9.4_.jpg



输入门和输出门分别负责允许多少输入流入以及允许多少信息流到下一时刻,而中间的记忆细胞是一个CEC结构。当我们求导的时候,偏导中始终会有一个单位矩阵I存在,这就保证了梯度不会消失为0:

9.5_.JPG



当加入了遗忘门以后,遗忘门就可以对历史记忆进行进一步取舍,换句话说,遗忘门可以决定哪些记忆没有必要记住:

9.6_.jpg





总结一下,LSTM不同于RNN的地方有以下几点:


它通过输入门来决定何时让输入进入细胞单元;

它通过遗忘门来决定何时应该记住前一时刻的记忆;

它通过输出门来决定何时让记忆流入到下一时刻;



无论是输入门、遗忘门还是输出门,都是通过此刻的输入以及前一时刻的输出来决定的,这一点本质上和原始的RNN是一样的,RNN的隐含层状态是通过此刻的输入以及前一时刻的输出来决定的,只不过LSTM在RNN基础上添加了一个细胞层,而这个细胞层使得了相邻时刻的信息传递程度比RNN要高,因此具备了长时间记忆功能。



近期文章预告:

《漫谈RNN之简化版长短期记忆模型GRU》

《漫谈RNN之序列建模》

《漫谈RNN之注意力机制》

《漫谈RNN之记忆网络》

《漫谈RNN之动态记忆网络》

《漫谈RNN之神经图灵机模型》

《漫谈RNN之无监督学习》

 
 
 
 
 
来源: 张泽旺 深度学习每日摘要
智造家