- 接着上一篇RNN的推导,我们这次来理解LSTM的原理的推导过程.
- LSTM的由来这里简而概之,保留该保留的,忘记该忘记的,不懂的人可以百度一下,因为比较简单这里不再概述.
- 在Alex Graves的这篇论文《Supervised Sequence Labelling with Recurrent Neural Networks》中对LSTM进行了综述性的介绍,并对LSTM的Forward Pass和Backward Pass进行了公式推导。
- 本博文是根据LSTM的公式推导详解这篇翻译进行总结和整理(部分内容可能有问题,加了自己的观点),由于看外文太麻烦了,索性投机取巧了~~
- LSTM的结构图如下:
没有看原论文,个人感觉这里有问题,从下面的公式推导来看,这里的图少了一点:当前cell和下一个cell之间传递,现将自己改动的图放在下面
- 前向传播
就是结构复杂一点,其他的都差不多,自己动手退一下就好
- 反向传播
- 这里得注意一下我刚开始画的那条线,不然的话中间推导起来有点麻烦.
- 反向传播主要是看反向传播线,找到当前需要求解的梯度值,然后找与之相对应的反向传播线即可,
- 这里给出一个最难求解的CELL端的反向传播的分析例子,其它的自己动手理一下就好.
- 首先找到cell与之相连的反向传播线,这里我们找到是四个
- 下一时刻的Output Gate
- 当前时刻的Cell Output
- 下一时刻的Input Gate
- 下一时刻的Forget Gate
- 分析完这些之后那就进行链式求导法则
- 总结
- LSTM就是RNN的加深,就像刚开始我说的:保留该保留的,忘记该忘记的,
- 推导的过程要屡清楚传递线路
- 熟悉链式求导法则
- 就这样了,理论和实践还有很大差距,接下来我会用例子带你进入RNN的奇妙之旅
- 参考文献