深度学习基础知识-残差网络ResNet
目录
一、ResNet 的核心思想:残差学习(Residual Learning)
二、ResNet 的基本原理
三、ResNet 网络结构
1. 残差块(Residual Block)
ResNet 的跳跃连接类型
2. 网络结构图示
四、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)进行迁移。