残差连接residual connection的作用?
大模型小知识(面试八股)
参考视频:面试必刷:大模型为什么 Residual Connection 对深层训练至关重要?_哔哩哔哩_bilibili
回答思路:
1. 为什么提出残差连接?在提出之前出现了什么问题?为什么会出现这样的问题?
2. 残差连接的结构是什么?
3. 残差连接的具体作用是什么?
深度神经网络训练的难点
随着模型网络层数的不断加深,模型理论上表达能力更强,但实际训练中确会遇到两个问题:
梯度消失/爆炸
神经网络训练使用反向传播算法,计算梯度需要对每一层的误差进行链式求导。
具体来说,假设有若干层,每层的梯度是前一层的梯度×该层的导数,深层网络的梯度就相当于多个曾的导数连续乘积。
梯度消失:常用激活函数例如sigmoid 或者 tanh,导数值<1,导致多层连乘的时候,梯度会指数级缩小,造成梯度消失;
梯度爆炸:如果某些权重初始化过大或选择某些激活函数,导数大于1时,梯度会指数级放大,造成梯度爆炸。
2. 退化问题:随着层数的增加,训练误差不仅不讲反而升高,模型性能下降,说明深层网络难以优化。
深度网络参数更多,非线性更复杂,梯度传递困难使得优化器难以找到合适的参数更新方向。这样,新增的层并没有学到有用的特征,反而干扰了已有的良好特征表示。
残差连接的结构以及作用
残差连接是在论文ResNet中提出,核心思想就是通过通过跳跃连接(skip connection)让信息绕过若干层网络直接传递,形成“恒等映射”通道。
具体作用:
1. 改善了梯度传递:残差连接提供了无阻碍的梯度路径,缓解了梯度弥散的问题,使得深层网络更加容易训练。
梯度消失的改善:如果梯度很小,优于恒等映射部分 I 的存在,确保梯度至少以恒等的方式直接传递,不会完全消失。
梯度爆炸的改善:有了残差连接,实际上学习的参数就是输出使出的区别,所以参数量变化不会很大。没有残差之前,就是直接学习新参数,可能有很大变化,导致梯度爆炸。
2. 解决了退化问题: 通过学习残差函数(即让网络只学习输入与输出的差值),网络不必强制学习完整映射,降低了学习难度。
3. 促进特征复用: 浅层特征可以直接传递到深层,丰富深层信息,有助于捕捉多层次语义。
4. 提升网络的表达能力和稳定性:使得网络可以很深,且保持训练稳定。
更多推荐




所有评论(0)