五厂面经真题集华为面经高频华为真题大模型面试速答 · 约 5 分钟更新 2026-09-29

梯度消失和爆炸的原因是什么?怎么解决?

一句话结论

梯度消失来自反向传播中的梯度连乘,导数偏小会让梯度趋于零;梯度爆炸来自权重过大或链路过长导致的指数放大,可用合适激活、残差、归一化、裁剪和门控结构处理。

先这样答

梯度消失和爆炸都来自反向传播中的梯度连乘。激活函数的导数小于一时,多层连乘会让梯度逐渐趋近于零,这就是梯度消失。权重过大,或者反向传播链路过长,梯度会被指数放大,这就是梯度爆炸。

这个问题在 RNN 中尤其严重。因为 RNN 会沿时间步反复传播梯度,链路容易变长。梯度消失会让前面的信息难以学习,梯度爆炸会让训练过程不稳定。面试中先讲清楚梯度连乘,再区分两种结果。

解决方法要针对两种问题一起看。可以换成 ReLU 系激活函数。可以加入残差连接,让梯度拥有恒等通路。可以使用归一化层,用 BN 或 LN 稳定分布。梯度爆炸时可以做梯度裁剪,直接截断过大的梯度。RNN 还可以使用 LSTM 的门控结构来抗梯度消失。Transformer 依靠残差连接加 Pre-norm,同时防止梯度消失和梯度爆炸。

面试官会怎么追问

  • 「为什么 RNN 特别容易出现梯度消失和爆炸?」 RNN 会沿时间步反复进行反向传播。时间步越多,梯度连乘链路越长。导数偏小时容易消失,权重偏大时容易爆炸。

  • 「残差连接为什么能缓解这个问题?」 残差连接提供了一条恒等通路。梯度可以沿这条通路传播,不必完全依赖每一层变换的梯度连乘。这样可以同时缓解消失和爆炸。

  • 「Transformer 为什么使用残差加 Pre-norm?」 残差连接提供恒等通路。Pre-norm 使用归一化层稳定分布。两者结合,可以同时防止梯度消失和梯度爆炸。

回答的坑

  • 只说梯度会变小或变大,却不说明反向传播中的梯度连乘,原因解释不完整。
  • 只列出梯度裁剪这一种方法,无法覆盖梯度消失,也没有回答 RNN 和 Transformer 的处理方式。
—— 本题完 ——