原创 @ chinakevin 初学所以文章疏漏在所难免 恳请指出 转载请注明来源
与传统的循环神经网络(RNN)相比, 长短时记忆神经网络(LSTM)能有效地缓解梯度消失和梯度爆炸的问题.
我们提到过,梯度消失的根源在于,远距离的依赖关系由于 tanh' 的若干次方趋向于 0 而使模型难以学到,从而梯度被近距离的梯度所主导,从而导致远距离的梯度消失.
而梯度爆炸的根源在于,当 W 的最大特征值 > 1 时,可能会导致多个 W 的最大特征值相乘,从而导致梯度爆炸.
一般情况下,梯度消失更为普遍,所以,下文将着重讲述于梯度消失.
首先,让我们回忆一下 LSTM 的一般结构(图源:浙江大学《机器学习》本科生课程):
与传统的 RNN 相比,LSTM 除了隐藏层(hidden state)外,引入了状态层(cell state).
值得一提的是,LSTM 刚开始提出时并没有引入遗忘机制,在之后的发展中引入.
遗忘门(Forget gate):
输入门(Input gate):
细胞状态:
输出门(Output gate):
接下来我们来讲讲 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
谢谢他们的工作和科普!