一、ResNet 残差网络概述

1. 什么是 ResNet

ResNet(Residual Neural Network,残差神经网络)是由何恺明等人在 2015 年提出的一种深度卷积神经网络架构。该模型在当年 ImageNet 竞赛中一举夺得分类任务第一名目标检测第一名,同时在 COCO 数据集上也斩获目标检测和图像分割的双料冠军。

ResNet 的核心创新在于引入了**残差块(Residual Block)**结构,通过"跳跃连接"的方式有效缓解了深层网络训练中的梯度消失问题,使得网络层数可以突破传统瓶颈,达到前所未有的深度。

2. 传统卷积神经网络存在的问题

1)梯度消失与梯度爆炸

当网络层数不断增加时,梯度在反向传播过程中会逐渐衰减放大,导致训练极度困难。这源于反向传播中的链式求导法则——梯度在逐层传递时不断乘以权重,若权重小于 1 则梯度指数级衰减,若大于 1 则指数级爆炸。

  • 梯度消失(Vanishing Gradient):梯度值趋近于零,浅层网络参数几乎无法更新。常见于使用 Sigmoid 或 Tanh 等饱和激活函数的深层网络中,这些函数在输入较大或较小时导数接近于零。

  • 梯度爆炸(Exploding Gradient):梯度值急剧增大,导致参数更新幅度过大,模型难以收敛甚至发散。常见于深层网络中梯度连续相乘导致数值爆炸。

在这里插入图片描述

退化现象:如下图所示,56 层网络的错误率反而高于 20 层网络,说明单纯的层数堆叠并不能带来性能提升。

在这里插入图片描述

2)训练困难

受限于梯度消失和梯度爆炸,传统 CNN 在训练深层网络时很难收敛。网络性能往往在达到一定深度后停滞不前甚至下降,这与直观的"越深越好"相悖。

3)特征表达能力受限

传统 CNN 的局部感受野限制了其对全局信息的捕捉能力。单纯的卷积操作难以充分利用图像中的上下文语义信息,导致高层特征的表达不够充分。

4)计算负担重

随着层数加深,模型的参数量和计算量急剧增加,对硬件资源提出了更高要求,训练和推理成本大幅上升。

3. ResNet 的解决方案

1)缓解梯度问题 —— 批归一化(BN 层)

ResNet 在每个卷积层后引入批归一化(Batch Normalization),对小批量数据的每个特征维度进行归一化(均值趋近 0,方差趋近 1),使得激活函数前的输入分布更加稳定,有效缓解了梯度消失和梯度爆炸。

BN 层核心步骤

  • 均值和方差计算:对每个小批量数据,计算各特征维度的均值和方差。
  • 归一化与缩放:利用均值和方差对数据进行归一化,再通过可学习的缩放和平移参数恢复模型的表达能力。

2)解决退化问题 —— 残差结构(Skip Connection)

ResNet 通过**跳跃连接(Shortcut Connection)**让某些层跳过下一层的连接,直接与更深层相连,弱化了层与层之间的强依赖关系。这种结构使得网络在加深时仍能保持甚至提升性能。

4. 残差结构详解

以 ResNet-18 为例

输入图像尺寸为 3 × 224 × 224,处理流程如下:

  1. 第一层卷积:卷积核大小 7×7,共 64 个,步长 2,填充 3,输出 64 × 112 × 112
  2. 最大池化:池化窗口 3×3,步长 2,填充 1,输出 64 × 56 × 56
  3. 残差块处理:特征图不仅传入下一层卷积,同时通过跳跃连接复制一份直接传递到更深层,与经过两层卷积处理后的特征图逐元素相加,得到新的特征图。
  4. 重复上述操作:经过多个残差块堆叠。
  5. 全局平均池化:对每张特征图求平均值,输出单个数值。
  6. 全连接层:输出 1000 个类别的预测结果。

在这里插入图片描述

残差结构的核心公式输出 = F(X) + X,其中 X 为输入特征图,F(X) 为经过卷积层处理后的特征图。注意 F(X) 和 X 的形状必须相同,相加即为对应位置元素数值相加。

在这里插入图片描述

1)跳跃连接的优势

通过隔层相加,信息可以从浅层直接传递到深层,不受梯度消失影响。这使得网络优化更加容易,模型能够有效学习到"残差"信息(即输出与输入之间的差异),从而更精细地捕捉数据中的细微变化。

跳跃连接实现了信息直达,消除了深层网络中信息的丢失和模糊化,显著提升了网络的表达能力和检测精度。

2)数值增大的处理机制

残差结构中特征图相加时,为确保通道数一致,通常会:

  • 使用 1×1 卷积调整通道维度;
  • 引入 BN 层对特征图数值进行归一化,限制数值范围;
  • BN 层还包含可学习的缩放参数,可根据数据分布自适应调整。

这些机制共同保证了残差相加的数值稳定性,避免了因叠加导致的数值过大问题。

5. ResNet 系列结构总览

除了 ResNet-18,还有 ResNet-34、ResNet-50、ResNet-101、ResNet-152 共 5 种不同深度的变体。下图为各结构的层数配置与 FLOPs(浮点运算量)对比。

在这里插入图片描述

二、BN 层(批归一化)详解

1. 什么是 BN 层

批归一化(Batch Normalization,BN) 是一种广泛应用于深度神经网络的技术,通过对每一层的输入进行归一化处理,加速网络训练并提高模型的鲁棒性和泛化能力。

2. BN 层的主要作用

作用说明
加速收敛统一各特征的数值尺度,避免因范围差异过大导致的训练缓慢
缓解梯度问题限制梯度的变化范围,有效减轻梯度消失和梯度爆炸
增强泛化能力通过可学习的缩放和平移参数,自适应调整特征分布
正则化效果一定程度上减少过拟合,可替代部分 Dropout 的作用

3. BN 层处理流程

每个小批量数据在传入卷积层之前,先进行归一化处理;卷积层输出的特征图再次经过 BN 层归一化,再传入下一层。如此循环往复。

归一化目标:使所有特征图的值满足均值为 0、方差为 1 的标准正态分布,从而提高模型训练效率和预测准确性,同时有效防止过拟合。

在这里插入图片描述

更多推荐