概述
RNN梯度消失的原因是,随着梯度的传导,梯度被近距离梯度主导,模型难以学习到远距离的信息。具体原因也就是∏Tk=t+1∂h(k)∂h(k−1)部分,在迭代过程中,每一步∂h(k)∂h(k−1)始终在[0,1]之间或者始终大于1。
tanh的导数总是小于1 的, 如果Ws也是一个大于0小于1的值, 那么随着t的增大, 上述公式的值越来越趋近于0, 这就导致了梯度消失问题。 那么如果Ws很大, 上述公式会越来越趋向于无穷, 这就产生了梯度爆炸.
LSTM遗忘门值可以选择在[0,1]之间(sigmoid激活函数),让LSTM来改善梯度消失的情况。可以选择接近1,让遗忘门饱和,此时远距离信息梯度不消失,梯度能够很好的在LSTM中传递,很大程度上减轻了梯度消失发生的概率。也可以选择接近0,此时模型是故意阻断梯度流,遗忘之前信息,说明上一时刻的信息对当前时刻没有影响。那么整体∏Tk=t+1∂C(k)∂C(k−1)也就不会一直减小,远距离梯度不至于完全消失,也就能够解决RNN中存在的梯度消失问题。
LSTM虽然能够解决梯度消失问题,但并不能够避免梯度爆炸问题,仍有可能发生梯度爆炸。但是,由于LSTM众多门控结构,和普通RNN相比,LSTM发生梯度爆炸的频率要低很多。梯度爆炸可通过梯度裁剪解决。
参考:
https://www.cnblogs.com/bonelee/p/10475453.html
https://weizhixiaoyi.com/archives/491.html
最后
以上就是含糊薯片为你收集整理的lstm如何解决梯度消失\爆炸的全部内容,希望文章能够帮你解决lstm如何解决梯度消失\爆炸所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复