残差连接通过解决梯度消失问题并支持训练更深的网络来改进深度学习模型。在传统的深度网络中,随着层数的增加,梯度(在训练期间携带误差信号)在网络中向后传播时可能会变得非常小。这使得较早的层难以有效地学习。残差连接,例如 ResNet 架构中引入的残差连接,通过允许网络学习“残差”函数(与输入的差异)来解决这个问题,而不是迫使每一层都学习整个变换。这是通过跳跃连接来实现的,跳跃连接将一层的输入直接添加到其输出,从而为梯度创建一条捷径路径。
关键的好处是改善了反向传播期间的梯度流。例如,在残差块中,如果输入是 *x*,并且层的变换是 *F(x)*,则输出变为 *F(x) + x*。如果 *F(x)* 没有用处,网络可以学习将 *F(x)* 推向零,从而有效地让输入不变地通过。这使得网络更容易在许多层上保持稳定的梯度。在实践中,这允许训练具有数百或数千层的网络(例如,ResNet-152),而不会降低性能。如果没有残差连接,如此深的网络的训练误差会随着深度的增加而增加,这是在早期架构(如 VGG)中观察到的现象。
残差连接还增强了模型的灵活性。例如,在计算机视觉任务中,它们使网络能够将来自早期层的低级特征(如边缘)与来自更深层的高级特征(如形状)结合起来。这对于诸如物体检测之类的任务至关重要,在这种任务中,细节和上下文都很重要。除了视觉之外,残差连接还用于 NLP 的 transformers 中——允许梯度在需要时绕过注意力或前馈层。开发人员只需将输入张量添加到一层或一个块的输出,通常在添加之后进行归一化或激活,即可实现残差连接。这种小的架构更改已成为跨领域构建健壮、可扩展模型的标准工具。