参考视频:面试必刷:大模型为什么 Residual Connection 对深层训练至关重要?_哔哩哔哩_bilibili

回答思路:

1. 为什么提出残差连接?在提出之前出现了什么问题?为什么会出现这样的问题?

2. 残差连接的结构是什么?

3. 残差连接的具体作用是什么?


深度神经网络训练的难点

随着模型网络层数的不断加深,模型理论上表达能力更强,但实际训练中确会遇到两个问题:

梯度消失/爆炸

神经网络训练使用反向传播算法,计算梯度需要对每一层的误差进行链式求导。

具体来说,假设有若干层,每层的梯度是前一层的梯度×该层的导数,深层网络的梯度就相当于多个曾的导数连续乘积。

梯度消失:常用激活函数例如sigmoid 或者 tanh,导数值<1,导致多层连乘的时候,梯度会指数级缩小,造成梯度消失;

梯度爆炸:如果某些权重初始化过大或选择某些激活函数,导数大于1时,梯度会指数级放大,造成梯度爆炸。

2. 退化问题:随着层数的增加,训练误差不仅不讲反而升高,模型性能下降,说明深层网络难以优化。

深度网络参数更多,非线性更复杂,梯度传递困难使得优化器难以找到合适的参数更新方向。这样,新增的层并没有学到有用的特征,反而干扰了已有的良好特征表示。

残差连接的结构以及作用

残差连接是在论文ResNet中提出,核心思想就是通过通过跳跃连接(skip connection)让信息绕过若干层网络直接传递,形成“恒等映射”通道

具体作用:
1. 改善了梯度传递:残差连接提供了无阻碍的梯度路径,缓解了梯度弥散的问题,使得深层网络更加容易训练。

梯度消失的改善:如果梯度很小,优于恒等映射部分 I 的存在,确保梯度至少以恒等的方式直接传递,不会完全消失。

梯度爆炸的改善:有了残差连接,实际上学习的参数就是输出使出的区别,所以参数量变化不会很大。没有残差之前,就是直接学习新参数,可能有很大变化,导致梯度爆炸。

2. 解决了退化问题: 通过学习残差函数(即让网络只学习输入与输出的差值),网络不必强制学习完整映射,降低了学习难度。

3. 促进特征复用: 浅层特征可以直接传递到深层,丰富深层信息,有助于捕捉多层次语义

4. 提升网络的表达能力和稳定性:使得网络可以很深,且保持训练稳定

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐