一、引言
随着深度学习的发展,卷积神经网络(Convolutional Neural Networks, CNNs)在图像识别、目标检测等多个计算机视觉任务中取得了卓越的成绩。然而,随着网络深度的增加,训练变得更加困难,出现了梯度消失或梯度爆炸等问题。2015年,Kaiming He等人提出了ResNet(Residual Network),有效地解决了这些问题,并在ImageNet分类比赛中取得了优异的成绩。本文将详细介绍ResNet的核心思想及其在深度学习中的重要地位。
二、背景与动机
在深度学习中,网络的深度往往与其性能成正比,即更深的网络通常能取得更好的性能。但是,当网络深度达到一定阈值时,增加网络的深度反而会导致训练集上的准确率下降,这就是所谓的退化问题(Degradation Problem)。退化问题并不是由于过拟合造成的,而是深层网络难以训练所致。
从上图20层和56层网路我们不难看出,层数越多反而错误率更高
三、ResNet的核心思想
1. 残差块(Residual Block)
ResNet的核心在于引入了残差块,通过残差学习(Residual Learning)的方式,解决了深层网络训练的难题。残差块的主要特点是引入了跳跃连接(Skip Connection),使得输入可以直接传递到后面的层。
一个基本的残差块可以表示为: H(x)=F(x,{Wi})+x
这里的 H(x)是残差块的输出,F(x,{Wi}) 表示通过几个卷积层后得到的特征图,而 x 则是残差块的输入,通过跳跃连接直接加上了 F(x,{Wi})
2. 身份映射(Identity Mapping)
当 F(x) 约等于0时,这意味着残差块的输出几乎等同于输入 x,这实际上为网络提供了一条“捷径”,使得即使不学习任何额外的特征,深层网络依然可以保持良好的性能。这样做的好处是,即使某些层没有学到有用的特征,也不会对整体性能造成负面影响。
3. 残差学习
残差学习的思想是,不是直接学习每一层的输出,而是学习每一层相对于前一层的增量变化。这样,即使在非常深的网络中,每一层只需要学习一个小的变化量,而不是整个输出,从而减轻了训练难度。
这是一张展示残差结构的示意图。在该网络中,输入信号(x)首先经过一个权重层(weight layer),然后通过ReLU激活函数进行非线性变换。接着,这个处理过的信号与原始输入(x)相加,并再次通过ReLU激活函数。
最后,输出结果也是原始输入(x)。这种设计可以看作是一种带有身份映射的残差连接,即如果输入直接传递到输出,则整个模块将不会对输入产生任何影响。这种架构常见于深度学习模型中,有助于解决梯度消失或爆炸等问题。
四、ResNet的结构
ResNet通过重复使用残差块,可以构建非常深的网络,比如ResNet-152就达到了152层,远远超过了之前的记录。ResNet的网络结构通常由多个阶段组成,每个阶段包含若干个残差块。每个阶段的残差块可能有不同的宽度和深度,并且通常会在阶段之间进行下采样(downsampling)。
示例:
下面是一个18层的深度网络,用于处理输入图片。该图片初始维度为3*244*244。处理流程大致如下:
-
7*7 conv,64/2:这是网络的第一个卷积层,使用了7x7大小的滤波器,输出通道数为64,步长为2。这个层的主要作用是从图像中提取基本的特征。
-
maxpool/2:接下来是一个最大池化层,同样步长为2,用于降低空间维度,减少计算量。
-
3*3 conv,64:这里连续使用了四个3x3大小的滤波器,输出通道数均为64的卷积层。这些层进一步细化了特征提取。
-
1*1 conv,128/2:这是一个1x1的卷积层,主要用来降维,将特征图的数量减半至128个。
-
3*3 conv,128:随后又使用了三个3x3的卷积层,每个层都有128个输出通道。
-
1*1 conv,256/2:另一个1x1的卷积层,这次将特征图数量降至256。
-
3*3 conv,256:紧接着的是三个3x3的卷积层,每个层有256个输出通道。
-
1*1 conv,512/2:最后一个1x1卷积层,将特征图数量减半至512。
-
3*3 conv,512:最后使用了三个3x3的卷积层,每个层有512个输出通道。
-
全局平均池化:在最后一组卷积层之后,进行了全局平均池化操作,即将每个特征图的所有像素值取平均作为该特征图的代表值。
-
FC (512->1000):最后是全连接层,将所有特征图的平均值连接成一个向量,再通过softmax分类器预测类别概率。
除此以外,还有34层、50层、101层、152层,一共5种残差网络结构
五、应用与展望
ResNet的成功不仅在于其在ImageNet分类任务上的表现,更重要的是它为后续的网络设计提供了新的思路。如今,基于ResNet的思想已经衍生出了大量的变种,被广泛应用于各种视觉任务中,如目标检测、语义分割、人脸识别等。
六、结论
ResNet的提出标志着深度学习领域的一个里程碑,它证明了通过合理的网络设计,可以有效克服深层网络训练中的挑战。未来,随着硬件性能的不断提升以及更多创新技术的发展,我们有理由相信,基于ResNet的思想将会在更多领域展现其独特的价值。