ResNet是一种深度卷积神经网络架构,由微Kaiming He等人于2015年提出。ResNet的核心在于引入了残差学习的概念,通过构建残差块来解决深度神经网络训练中的梯度消失和梯度爆炸问题,从而使得训练非常深的网络成为可能。
左图为普通结构,右图是ResNet的基础架构–残差块,在残差块中,输入可通过跨层数据线路更快地向前传播。
1. 残差学习(Residual Learning)
提出的背景:在传统的深度神经网络中,每一层的输出是直接通过非线性变换(如ReLU激活函数)得到的。然而,随着网络深度的增加,梯度在反向传播过程中可能会逐渐消失或爆炸,导致训练困难。
残差块:ResNet通过引入残差块来解决这个问题。残差块的基本思想是,假设我们希望学习到的映射是 (H(x)),那么我们可以通过学习残差映射 (F(x) = H(x) - x) 来实现。这样,网络的输出可以表示为:
[ H(x) = F(x) + x ]
2. 残差块(Residual Block)
残差块是ResNet的基本构建模块。一个典型的残差块包含以下几个部分:
- 输入: x x x
- 卷积层:通常是两个或三个卷积层,每个卷积层后面跟随批量归一化(Batch Normalization)和ReLU激活函数。
- 跳跃连接(Shortcut Connection):直接将输入 x x x 加到卷积层的输出上。
残差块的数学表达式为:
[
y
=
F
(
x
,
{
W
i
}
)
+
x
y = F(x, \{W_i\}) + x
y=F(x,{Wi})+x ]
其中,
F
(
x
,
{
W
i
}
F(x, \{W_i\}
F(x,{Wi} 表示卷积层的输出,
W
i
W_i
Wi是卷积层的权重。
上图为具体的网络设计
3. ResNet架构
ResNet的架构通常由多个残差块堆叠而成。根据网络的深度,ResNet有不同的变体,如ResNet-18、ResNet-34、ResNet-50、ResNet-101和ResNet-152等。
- ResNet-18和ResNet-34:使用基本的残差块,每个残差块包含两个3x3的卷积层。
- ResNet-50、ResNet-101和ResNet-152:使用瓶颈结构(Bottleneck Structure),每个残差块包含三个卷积层:1x1、3x3和1x1的卷积层。1x1的卷积层用于减少和恢复通道数,从而减少计算量。
4. 优势
- 解决梯度消失问题:通过跳跃连接,梯度可以直接通过残差块传播,减少了梯度消失的风险。
主要原因如下:- 跳跃连接(Shortcut Connection):残差块中的跳跃连接允许梯度直接通过残差块传播,而不需要经过多个非线性变换层。这使得梯度能够更容易地反向传播到网络的早期层,从而减少了梯度消失的风险
- 梯度直接传播:在传统的深度网络中,梯度需要经过多个非线性层的链式求导,容易导致梯度逐渐变小或变大。而残差块中的跳跃连接使得梯度可以直接通过残差块,避免了梯度在传播过程中的衰减或爆炸。
- 训练更深的网络:ResNet使得训练非常深的网络成为可能,例如ResNet-152有152层,但仍然可以有效地训练。原因如下:
-
残差映射:通过学习残差映射 ( F(x) = H(x) - x ),网络可以更容易地学习到恒等映射(Identity Mapping),即 ( F(x) approx0 )。这使得网络在训练过程中更容易收敛,即使网络非常深。
-
恒等映射的稳定性:恒等映射使得网络在训练过程中保持稳定,不会因为网络深度的增加而导致性能下降。这使得训练非常深的网络成为可能,例如ResNet-152有152层,但仍然可以有效地训练。
-
- 提高模型性能:ResNet在多个图像分类任务上取得了显著的性能提升,例如在ImageNet数据集上,ResNet-152达到了当时的最佳性能。
总结
ResNet通过引入残差学习和残差块,成功解决了深度神经网络训练中的梯度消失和梯度爆炸问题,使得训练非常深的网络成为可能。其架构设计简洁有效,在多个图像分类任务上取得了显著的性能提升,成为深度学习领域的一个重要里程碑。
标签:精读,卷积,梯度,论文,ResNet,残差,152,网络 From: https://blog.csdn.net/a13478107907/article/details/142994449