【模型训练】循环神经网络出现的梯度爆炸或衰减现象
最近在调类似循环神经网络的模型,当把T增大的时候,容易出现loss为nan的情况,然后梯度也爆炸。
1.问题原因:在循环神经网络中

隐藏层的梯度会因为t比较小或T比较大的情况下变得非常大,从而影响在反向传播求梯度中包含了隐藏层的梯度这一项的权重梯度值。如果Whh小于1则会出现梯度衰减,反之梯度爆炸。
2.解决方法:
使用梯度裁剪,torch.nn.utils.clip_grad_norm()按照L2norm来限制梯度。
最近在调类似循环神经网络的模型,当把T增大的时候,容易出现loss为nan的情况,然后梯度也爆炸。
1.问题原因:在循环神经网络中

隐藏层的梯度会因为t比较小或T比较大的情况下变得非常大,从而影响在反向传播求梯度中包含了隐藏层的梯度这一项的权重梯度值。如果Whh小于1则会出现梯度衰减,反之梯度爆炸。
2.解决方法:
使用梯度裁剪,torch.nn.utils.clip_grad_norm()按照L2norm来限制梯度。