目录
[一、ResNet 的核心思想:残差学习(Residual Learning)](#一、ResNet 的核心思想:残差学习(Residual Learning))
[二、ResNet 的基本原理](#二、ResNet 的基本原理)
[三、ResNet 网络结构](#三、ResNet 网络结构)
[1. 残差块(Residual Block)](#1. 残差块(Residual Block))
[ResNet 的跳跃连接类型](#ResNet 的跳跃连接类型)
[2. 网络结构图示](#2. 网络结构图示)
[四、ResNet 的特点和优势](#四、ResNet 的特点和优势)
[五、ResNet 的局限](#五、ResNet 的局限)
[六、ResNet 的变体](#六、ResNet 的变体)
[七、ResNet 的应用场景](#七、ResNet 的应用场景)
ResNet(Residual Network) 是由何恺明等人于 2015 年提出的一种深层卷积神经网络结构。它在 ILSVRC 2015 比赛中取得了图像分类、检测等多个任务的突破性成果。ResNet 的主要创新在于引入了"残差连接"(Residual Connections),有效地解决了深层神经网络的梯度消失和梯度爆炸问题,使得网络可以堆叠更多层,显著提升模型的表达能力和分类效果。
一、ResNet 的核心思想:残差学习(Residual Learning)
在传统的深层网络中,随着层数的增加,网络的训练难度会显著提高,容易导致梯度消失(Gradient Vanishing)或梯度爆炸(Gradient Explosion)问题。深度网络可能出现退化现象,即层数增加带来的错误率上升,而不是模型的性能提升。ResNet 的提出正是为了解决这一问题,其核心思想是通过残差块(Residual Block)引入"跳跃连接"(Skip Connection),使得网络可以"跳跃"几层进行信息传递。这一方法不仅有效防止了梯度消失,还使得网络可以更深,参数更少。
二、ResNet 的基本原理
在传统的深层神经网络中,随着层数的加深,梯度会逐渐消失或爆炸,导致模型的训练变得困难,甚至出现退化问题。ResNet 的核心思想是通过引入"残差连接"来直接将输入传递到下一层网络。即每一层的输出不仅依赖于上一层的输出,还加上了输入的"跳跃连接",即:
这里:
- x 是输入特征。
- F(x) 是通过卷积、激活等操作生成的特征。
- y 是残差单元的输出。
这种结构称为"残差块"(Residual Block),它通过直接引入输入,将信息从浅层直接传递到深层,有效缓解了梯度消失的问题,使得更深层次的网络也能够有效训练。
三、ResNet 网络结构
ResNet 的网络结构由多个残差块和一些普通卷积层、池化层组成。根据网络的深度不同,ResNet 主要有以下几种版本:
- ResNet-18/34:较浅的网络结构,适用于较小的数据集和不需要极深网络的任务。
- ResNet-50/101/152:较深的网络结构,通过"瓶颈结构"(Bottleneck)进一步加深网络层数,用于处理更复杂的图像数据集。
1. 残差块(Residual Block)
ResNet 的残差块有两种基本结构:
- 基本残差块(Basic Residual Block):用于较浅的网络(如 ResNet-18 和 ResNet-34)。
- 瓶颈残差块(Bottleneck Residual Block):用于较深的网络(如 ResNet-50、ResNet-101 和 ResNet-152),该结构通过 1×1 卷积降维和升维,减少参数量的同时加深网络。
基本残差块的结构图如下:
- 输入特征经过第一个卷积层,产生输出 F(x)。
- 将输入 x 直接与 F(x) 相加形成残差连接,得到y=F(x)+x。
瓶颈残差块的结构图如下:
- 输入首先经过 1×1 卷积降维,然后经过 3×3 卷积提取特征,最后通过 1×1 卷积升维。
- 输出 F(x) 与输入 x 相加形成残差连接,输出为 y=F(x)+x。
ResNet 的跳跃连接类型
ResNet 中的跳跃连接主要有两种类型:恒等映射(Identity Mapping) 和 卷积映射(Convolution Mapping)。
- 恒等映射:当输入和输出的通道数相同时,直接将输入加到输出上。即在不改变通道数的情况下直接执行加法。
- 卷积映射:当输入和输出的通道数不一致时,在跳跃连接处使用 1×1 卷积来升维或降维,使输入和输出维度一致。这种方式常用于瓶颈残差块的跳跃连接。
2. 网络结构图示
在 ResNet 中,残差块和卷积层的堆叠方式因版本不同而略有差异。
以下是 ResNet-50 的网络结构图解:
- 输入层:224×224 尺寸的输入图像。
- 第一层卷积:一个 7×7 卷积层,步长为 2,通道数为 64。
- 池化层:3×3 的最大池化层,步长为 2。
- 残差层 :分为 4 个阶段,每个阶段包括若干个瓶颈残差块。
- Stage 1:3 个瓶颈残差块,每个瓶颈层输出通道数为 256。
- Stage 2:4 个瓶颈残差块,输出通道数为 512。
- Stage 3:6 个瓶颈残差块,输出通道数为 1024。
- Stage 4:3 个瓶颈残差块,输出通道数为 2048。
- 全局平均池化层:通过全局平均池化,将每个通道的特征压缩为一个值。
- 全连接层:输出类别数的概率分布。
四、ResNet 的特点和优势
- 梯度流通更顺畅:通过残差连接有效缓解了深层网络的梯度消失问题,使得梯度能够更顺利地传播到浅层。
- 易于训练:即使在网络层数很深的情况下,残差连接也可以保证训练过程的稳定性。
- 优越的性能 :相比于其他深层网络,如 VGG,ResNet 的参数更少,但表现更优异,是许多图像处理任务中的经典结构。
- 可扩展性:残差块的结构简单易用,适合扩展到更深、更复杂的网络结构中。
五、ResNet 的局限
尽管 ResNet 解决了深度学习中的许多问题,但仍存在一些不足:
- 参数量大:虽然 ResNet 已优化过计算量,但对于一些移动设备和嵌入式设备仍然较大。
- 结构复杂:对于一些非图像任务,直接迁移 ResNet 会出现过拟合或计算开销过大的问题。
- 低效的计算:ResNet 的残差连接在部分情况下仍有冗余操作,后续的改进网络(如 ResNeXt、DenseNet 等)在此基础上优化了计算效率。
六、ResNet 的变体
基于 ResNet 结构出现了很多改进版本,包括但不限于:
- ResNeXt:通过分组卷积的方式优化计算效率,减少参数量。
- DenseNet:在残差连接的基础上增加了密集连接(Dense Connections),使得浅层特征直接传递到深层,进一步减少了参数冗余。
- Wide ResNet:相比增加网络深度,通过增加网络宽度的方式来提升模型的表达能力,适用于计算资源丰富的场景。
- Dual Path Network:融合 ResNet 和 DenseNet 的特点,进一步提升特征传递的效率。
七、ResNet 的应用场景
ResNet 网络凭借其强大的表达能力和良好的训练效果,在图像分类、目标检测、图像分割等多个任务中广泛应用。此外,ResNet 作为主流的特征提取模块,也在多种复杂模型(如 Faster R-CNN、YOLO)中作为骨干网络(Backbone)进行迁移。