ResNet(Residual Network,残差网络)是2015年由何凯明等人提出的深度卷积神经网络(CNN)架构,核心创新是残差连接(Residual Connection),解决了深度网络训练中的“梯度消失/梯度爆炸”问题,让构建数百甚至上千层的深层网络成为可能。
1. 核心痛点:为什么需要ResNet?
传统深层CNN(如VGG)在层数增加时,会出现性能饱和甚至下降——并非过拟合,而是梯度在反向传播时,经过多层权重相乘后逐渐趋近于0(梯度消失)或无穷大(梯度爆炸),导致浅层参数无法有效更新。
ResNet的残差连接正是为打破这种“梯度传播障碍”设计。
2. 核心设计:残差块(Residual Block)
ResNet的基本单元是“残差块”,分为两种主流结构:
- 普通残差块(Basic Block):适用于较浅网络(如ResNet-18/34),由2个3×3卷积层组成,配合1×1卷积层调整维度(若输入输出通道数不同)。
- 瓶颈残差块(Bottleneck Block):适用于较深网络(如ResNet-50/101/152),用“1×1卷积(降维)→3×3卷积(特征提取)→1×1卷积(升维)”的结构,减少计算量和参数规模。
核心公式:残差映射
设残差块的输入为x,卷积层的映射关系为F(x)(称为“残差函数”),则残差块的最终输出为:
H(x) = F(x) + x
其中,F(x) + x就是残差连接——直接将输入x(恒等映射,Identity Mapping)跳过卷积层,与卷积输出F(x)相加。若输入输出维度不匹配,会用1×1卷积将x调整为与F(x)同维度(记为W_s x),公式变为H(x) = F(x) + W_s x。
3. 为什么残差连接有效?
- 梯度传播更顺畅:反向传播时,梯度可通过残差连接直接传递到浅层(无需经过所有卷积层),避免梯度消失。例如,损失对
x的梯度∂L/∂x = ∂L/∂H(x) × (∂F(x)/∂x + 1),“+1”项确保梯度不会因∂F(x)/∂x趋近于0而消失。 - 学习目标更简单:网络无需直接学习复杂的“完整映射
H(x)”,只需学习“残差F(x) = H(x) - x”——残差通常更接近0,学习难度更低。
4. 经典ResNet架构
基于残差块的堆叠,ResNet衍生出多个经典版本,核心差异是“层数”和“残差块类型”:
| 型号 | 层数 | 残差块类型 | 应用场景 |
|---|---|---|---|
| ResNet-18 | 18 | 普通块(Basic) | 轻量场景(如移动端) |
| ResNet-34 | 34 | 普通块(Basic) | 平衡性能与计算量 |
| ResNet-50 | 50 | 瓶颈块(Bottleneck) | 主流场景(图像分类、检测) |
| ResNet-101 | 101 | 瓶颈块(Bottleneck) | 更高精度需求(复杂数据集) |
| ResNet-152 | 152 | 瓶颈块(Bottleneck) | 极致精度(代价是高计算量) |
5. 影响与意义
- 推动深度学习进入“深层时代”:首次实现上千层网络的有效训练,刷新了ImageNet等数据集的精度记录。
- 成为基础架构:后续许多网络(如ResNeXt、DenseNet、Faster R-CNN)均以ResNet为骨干网络(Backbone),残差连接也成为深度学习的通用设计思路。
- 拓展应用场景:不仅用于图像分类,还广泛应用于目标检测、图像分割、人脸识别等计算机视觉任务,甚至延伸到NLP(如残差Transformer)领域。

被折叠的 条评论
为什么被折叠?



