引言
- 在上一篇种介绍的循环神经网络,由于其只计算前一项和后一项距离较短,所以很难处理长距离依赖场景,所以本文将介绍一种改进之后的循环神经网络:长短时记忆网络(Long Short Term Memory Network, LSTM),它成功的解决了原始循环神经网络的缺陷,成为当前最流行的RNN,在语音识别、图片描述、自然语言处理等许多领域中成功应用。但是个人理解的时候发现结构还是比较复杂的,所以部分公式不理解的地方会有标注,以后自己手动实现的时候会继续补充。
关于RNN为何无法解决长距离依赖问题的原因
- 进一步详情请看参考资料,此处只作个人理解,可能有错误,酌情理解
- 首先上篇结尾已经说过RNN存在的关于梯度消失和梯度爆炸的问题
RNN篇
- 首先上篇结尾已经说过RNN存在的关于梯度消失和梯度爆炸的问题
- 我们就可以看到,从上图的t-3时刻开始,梯度已经几乎减少到0了。那么,从这个时刻开始再往之前走,得到的梯度(几乎为零)就不会对最终的梯度值有任何贡献,这就相当于无论t-3时刻之前的网络状态h是什么,在训练中都不会对权重数组W的更新产生影响,也就是网络事实上已经忽略了t-3时刻之前的状态。这就是原始RNN无法处理长距离依赖的原因
LSTM的结构
- 简单来说LSTM就是在隐藏层只有h状态的基础上,又加入了一个c,用来保存长期状态
LSTM的前向计算:
- 接下来是输入门:以及对应图解
LSTM的训练
- 和之前的训练没有什么不同,但是不同的是LSTM的变量有些多,计算量更大,不过都是重复操作,最好抽出一个理解,再类比记忆
- 两个损失函数,8个参数,以及符号o的计算方式
- 一下全导数公式需要看完,整体去理解,作者有分开写偏导的表达式
- 继续往下看,就知道该全导数怎么计算的了
- 同理可得
- 截图并非全部,但是可以类比得出,此处不做完整截图,可以发现只要最上面第一个全导数公式理解后,后面就跟以前的文章类似了,比较容易理解。
GRU
- 关于GRU为啥结构简单了却能实现和LSTM不相上下的效果,可以看参考资料,个人觉得对于保存过去信息这一概念在数学公式上的表达,简答理解能相通即可,太复杂的去想反而容易无解,LSTM保留信息部分还有GRU保留信息部分可以参考下图。