面试官:深层网络梯度消失的根本原因是什么?除了 ResNet,还有哪些架构能有效缓解?

78 阅读4分钟

📚推荐阅读

面试官:Transformer如何优化到线性级?

面试官:模型的量化了解吗?解释一下非对称量化与对称量化

面试官:模型剪枝了解吗?解释一下结构化剪枝与非结构化剪枝

面试官:为什么 Adam 在部分任务上会比 SGD 收敛更快,但泛化性更差?如何改进?

面试官:BatchNorm、LayerNorm、GroupNorm、InstanceNorm 有什么本质区别?

面试官:深层网络梯度消失的根本原因是什么?除了 ResNet,还有哪些架构能有效缓解?

这题是典中典。很多人听到“梯度消失”就背一句——“因为深度太深”,但要真能把原因讲透机制解释清改进方案说全,那就不只是“知道问题”,而是理解问题的结构本质了。

今天这篇,我们就彻底搞清楚:

  • 梯度为什么会消失(根本原因)?
  • ResNet 是怎么解决的?
  • 还有哪些架构能有效缓解?

有相关源码示例、流程图、模型配置与知识库构建技巧,我也将持续更新在Github:LLMHub,欢迎关注收藏!

一、什么是梯度消失?

“梯度消失”(Vanishing Gradient)指的是在反向传播过程中,梯度在层与层之间不断相乘,到达前面层时已经接近 0,导致这些层几乎学不到东西

这个问题的根本,在于链式法则的累乘效应

对于一个深度网络:image

反向传播时梯度为:image

当每个 image的范数 < 1 时,随着层数增加,梯度会呈指数级衰减。

假设每层的权重矩阵为 image,激活函数为 σ:image

如果激活函数的导数平均小于 1(如 sigmoid, tanh),或者权重初始化不当(如方差太小),那么梯度会被不断缩小,最终趋近于 0。这就是梯度消失的本质:链式相乘中的指数衰减

二、激活函数与初始化的双重作用

激活函数问题

像 sigmoid 或 tanh,这类函数的导数在饱和区间非常小:

函数导数区间问题
Sigmoid(0, 0.25)饱和后梯度极小
Tanh(0, 1)仍会衰减
ReLU0 或 1解决了一部分问题

ReLU 的出现让梯度能在正区间传播不衰减,这就是为什么 ReLU 成为深度学习的标配。

权重初始化问题

如果初始化方差太小,梯度被压缩;如果太大,梯度爆炸。

He Initialization(ReLU)和 Xavier Initialization(tanh)就是为了解决“梯度稳定传播”的问题,让方差在层间保持恒定。

三、ResNet 是怎么缓解的?

ResNet 的关键思想:恒等映射(Identity Mapping) + 残差连接(Skip Connection)

残差块:y=F(x)+x

反向传播时:image

即使 image 很小,梯度仍可通过恒等路径“直接传回前层”。这让梯度流不再完全依赖非线性层的累乘。

四、缓解梯度消失的其他架构?

ResNet 是经典,但并不是唯一的解。我们来看几类常见的缓解梯度消失的其他架构

1. DenseNet — “全连接式残差”

DenseNet 在每一层都把前面所有层的特征拼接起来:image

这样每一层都能直接访问前面层的输出,梯度可以多路径回流,并且可以实现信息复用,缓解梯度消失。

2. Highway Network — “门控残差”

Highway Network 在 ResNet 的基础上加了门控机制:y = T(x) * F(x) + (1 - T(x)) * x

其中 T(x) 是一个可学习的门函数,控制信息通过多少。

这种结构让网络能动态控制梯度通道的流量,在 RNN、语音建模中也常用。

3. LSTM / GRU — 时间维度的残差思想

在序列模型中,梯度消失更严重(因为时间展开更深)。


LSTM 通过“门控 + 线性通道”让梯度能长期传播:image

这其实就是在时间维度上做了“残差连接”,让梯度在时间上传递更稳定。

4. Transformer — LayerNorm + 残差 + 注意力机制

Transformer 的每一层都有:

x' = x + MultiHeadAttention(x)

y = x' + FeedForward(x')

同时配合 LayerNorm 稳定分布,使得残差通道保持梯度流,LayerNorm 保证数值不发散,整体训练稳定,能堆叠上百层。

总结一下,梯度消失的根本原因是链式相乘中的指数衰减,ResNet 只是第一个成功的缓解梯度消失设计,后来 DenseNet、LSTM、Transformer 都在不同维度上继续拓宽了这条路。

关于深度学习和大模型相关的知识和前沿技术更新,请关注公众号 coting