2025-4-23-梯度消失/爆炸
梯度消失与梯度爆炸的定义
梯度消失(Vanishing Gradient)
- 现象:反向传播中,梯度随着网络层数或时间步长增加而指数级减小,导致浅层参数更新缓慢,模型无法学习底层特征。
- 案例:深层CNN或长序列RNN中,浅层权重几乎不更新。
梯度爆炸(Exploding Gradient)
- 现象:反向传播中,梯度指数级增大,导致参数剧烈震荡,模型无法收敛(如权重变为NaN)。
- 案例:未使用梯度裁剪的深层RNN,参数更新时出现数值不稳定。
现象 | 核心原因 | 常见模型 | 解决方法 |
---|---|---|---|
梯度消失 | 激活函数导数小于 1 + 权重矩阵谱半径小于 1 的连乘 | RNN、传统神经网络 | 换用 ReLU 激活函数、残差连接、LSTM/GRU |
梯度爆炸 | 权重矩阵谱半径大于 1 的连乘 + 无界激活函数 | LSTM、普通神经网络 | 梯度裁剪(Gradient Clipping)、权重初始化、正则化 |
关于softmax输出“尖锐”导致梯度消失的问题
假设点积结果为一个很大的正数 $s$,softmax公式为:
当某一位置的 $s_i$ 远大于其他值时(如 $s_i = 100$,其他 $s_j = 0$),$e^{100}$ 会远大于其他项的和,导致 $\text{softmax}(s_i) \approx 1$,其他位置趋近于0。此时输出概率分布非常“集中”(尖锐)。
softmax梯度推导
设 $\text{softmax}(s_i) = p_i$,则:
其中 $\delta_{ij}=1$ 当 $i=j$,否则为0。
对于交叉熵损失 $L = -\sum_k y_k \log p_k$,梯度为: (当$k=j$时,$p_jy_k=p_j,\delta_{kj}=1$)当真实标签 $y_j=1$ 时,梯度为 $p_j - 1$;当 $y_j=0$ 时,梯度为 $p_j$。
若 $p_j \approx 1$(尖锐分布),则两种情况的梯度均趋近于0。
以二元分类为例,假设softmax输出为 $[p, 1-p]$,真实标签为 $[1, 0]$,损失函数为交叉熵:
梯度为 $\frac{\partial L}{\partial s_i} = p - 1$。
- 当 $p \approx 1$ 时,梯度 $\approx 0$,参数更新极慢;
- 其他位置(如 $s_j$)的梯度为 $\frac{\partial L}{\partial s_j} = p$,也趋近于0。
结果:无论最大值位置还是其他位置,梯度都趋近于0,导致模型难以更新参数,即梯度消失。
RNN梯度消失
在 RNN 中,每个时间步的隐藏状态依赖于前一个时间步的隐藏状态,所以在反向传播时,梯度需要从最后一个时间步一直传回第一个时间步,这中间会经过多个时间步的权重矩阵乘法。
传统的 RNN 可能使用 tanh 或 sigmoid 激活函数,它们的导数在输出接近饱和区时会变得很小,接近 0。当多个这样的导数相乘时,梯度就会指数级衰减,导致前面时间步的梯度几乎为 0,无法更新参数。
LSTM梯度爆炸
LSTM 通过门控机制(输入门 $i_t$、遗忘门 $f_t$、输出门 $o_t$)来控制信息的流动,理论上可以缓解梯度消失问题,因为门控机制中的 sigmoid 函数输出接近 0 或 1,当门接近 1 时,信息可以几乎不变地传递,梯度也能较好地保留。
如果 LSTM 中的权重矩阵过大,或者在训练过程中权重变得过大,那么在反向传播时,梯度可能会指数级增长,导致梯度爆炸。此外,LSTM 虽然缓解了梯度消失,但并没有完全解决梯度爆炸的问题,尤其是在没有适当正则化或梯度裁剪的情况下。
在反向传播时,细胞状态 $C_{t-1}$ 的梯度:
若 $f_t \approx 1$(遗忘门打开),梯度可直接传递至 $C_{t-1}$,缓解了梯度消失(因无需经过激活函数导数的连乘)。
梯度爆炸的原因
- 权重矩阵的无界性:LSTM 中的权重矩阵 $W_f, W_i, W_o, W_c$ 若初始化过大或训练中更新至过大值,会导致门控信号或细胞状态的计算值过大,进而在反向传播时使梯度指数级放大。
- 无激活函数约束的路径:细胞状态 $C_t$ 的更新中,$f_t \odot C_{t-1}$ 部分虽受门控控制,但 $i_t \odot \tilde{C}_t$ 中的 $\tilde{C}_t = \text{tanh}(W_c \cdot [h_{t-1}, x_t] + b_c)$ 仍涉及权重矩阵 $W_c$,若 $W_c$ 过大,$\tilde{C}_t$ 的梯度可能因 $W_c$ 的连乘而爆炸。
- 与 RNN 的本质区别:RNN 的梯度消失源于激活函数导数的衰减,而 LSTM 的梯度爆炸源于权重矩阵的无约束增长(类似普通神经网络的梯度爆炸)。