【计算机视觉】ResNet 残差网络与 BN 层原理、结构及解析
ResNet 残差网络与 BN 层深度解析
一、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,处理流程如下:
- 第一层卷积:卷积核大小
7×7,共 64 个,步长 2,填充 3,输出64 × 112 × 112。 - 最大池化:池化窗口
3×3,步长 2,填充 1,输出64 × 56 × 56。 - 残差块处理:特征图不仅传入下一层卷积,同时通过跳跃连接复制一份直接传递到更深层,与经过两层卷积处理后的特征图逐元素相加,得到新的特征图。
- 重复上述操作:经过多个残差块堆叠。
- 全局平均池化:对每张特征图求平均值,输出单个数值。
- 全连接层:输出 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 的标准正态分布,从而提高模型训练效率和预测准确性,同时有效防止过拟合。

更多推荐
所有评论(0)