跳转至

NLP高频面(3)普通RNN的梯度消失和梯度爆炸问题

NLP高频面(3)普通RNN的梯度消失和梯度爆炸问题

本文讨论了普通RNN在训练深层或长序列模型时出现的梯度消失和梯度爆炸问题,以及相应的解决方案。关键要点包括:

梯度消失:反向传播时梯度逐层变小,趋于接近0,原因是链式求导不断乘小于1的数,影响是模型无法捕获长期依赖信息,前层几乎不被训练,性能不佳。

梯度爆炸:反向传播时梯度异常大,数值迅速增长甚至无穷大,原因是梯度连乘反复乘大于1的数,影响是参数更新过大无法收敛,训练不稳定甚至数值溢出。

使用改进网络结构:如LSTM、GRU等门控单元,通过特殊门控机制控制信息流,避免梯度剧烈变化。

梯度裁剪:当梯度超过阈值时进行裁剪,避免梯度爆炸。

初始化和正则化方法:合理的参数初始化(如Xavier、He初始化方法)及适当正则化可部分缓解问题。

选择合适激活函数:使用ReLU等非饱和激活函数,减轻梯度消失。

普通 RNN (循环神经网络)的梯度消失和梯度爆炸问题是指在训练深层或长序列的RNN模型时出现的两种典型问题:

一、 梯度消失(Vanishing Gradient)

梯度消失是指在反向传播过程中,梯度逐层传播时变得越来越小,最终趋于接近0,导致模型前层的参数难以更新。

原因:

影响:

二、 梯度爆炸(Exploding Gradient)

梯度爆炸与梯度消失相反,指的是梯度在反向传播时变得异常大,数值迅速增长甚至达到无穷大,导致网络参数更新剧烈,不稳定。

原因:

影响:

三、 解决方案

为了解决普通RNN的梯度问题,提出了以下方法:

使用改进的网络结构:


梯度裁剪(Gradient Clipping):

初始化和正则化方法:

选择合适的激活函数: