机器学习 11 - 长短时记忆神经网络

  原创 @ chinakevin 初学所以文章疏漏在所难免 恳请指出 转载请注明来源

  与传统的循环神经网络(RNN)相比, 长短时记忆神经网络(LSTM)能有效地缓解梯度消失和梯度爆炸的问题.

  我们提到过,梯度消失的根源在于,远距离的依赖关系由于 tanh' 的若干次方趋向于 0 而使模型难以学到,从而梯度被近距离的梯度所主导,从而导致远距离的梯度消失.

  而梯度爆炸的根源在于,当 W 的最大特征值 > 1 时,可能会导致多个 W 的最大特征值相乘,从而导致梯度爆炸.

  一般情况下,梯度消失更为普遍,所以,下文将着重讲述于梯度消失.

  首先,让我们回忆一下 LSTM 的一般结构(图源:浙江大学《机器学习》本科生课程):

  机器学习 11 - 长短时记忆神经网络

  与传统的 RNN 相比,LSTM 除了隐藏层(hidden state)外,引入了状态层(cell state).

  值得一提的是,LSTM 刚开始提出时并没有引入遗忘机制,在之后的发展中引入.

  遗忘门(Forget gate):

  机器学习 11 - 长短时记忆神经网络

  输入门(Input gate):

  机器学习 11 - 长短时记忆神经网络

   细胞状态:

  机器学习 11 - 长短时记忆神经网络

   输出门(Output gate):

  机器学习 11 - 长短时记忆神经网络

  接下来我们来讲讲 LSTM 是如何缓解梯度消失的问题的.

  首先,LSTM 有多条不同的路径,其中,c_{t-1} -> c_t 的路径由于只涉及线性加法,所以最为稳定. 而其他路径并不稳定,仍会有反复累乘.

  其次,通过上述路径的稳定性分析,我们可以发现即使其他路径的梯度都消失,远距离的传播仍可以保证.

  但是,由于其他路径也可能发生梯度爆炸,所以 LSTM 仍可能发生梯度爆炸.

  还有,我们可以通过改变遗忘门的 f 来改变遗忘情况,这里分四种情况讨论:

    当 f -> 1 时,远距离的传播不会消失.

    当 f = 1 and i = 0 时,完全保留之前的状态.

    当 f -> 0 时,遗忘掉之前所有的内容.

    当 f \in (0,1) 时,综上所述,改善了梯度消失的可能性.

  另外,还有一点需要提到的是,我们可以通过学习 f 来改善梯度消失的问题.

  参考:

    https://weberna.github.io/blog/2017/11/15/LSTM-Vanishing-Gradients.html

    https://www.zhihu.com/question/34878706/answer/665429718

  谢谢他们的工作和科普!

上一篇:52_LSTM及简介,RNN单元的内部结构,LSTM单元的内部结构,原理,遗忘门,输入门,输出门,LSTM变体GRU,LSTM变体FC-LSTM,Pytorch LSTM API介绍,案例(学习笔记)


下一篇:qt 拖拽 修改大小(使用了nativeEvent和winEvent)