深度学习之卷积神经网络 ResNet

论文 Identity Mappings in Deep Residual Networks

2015年,ResNet(Residual Neural Network)由微软研究院的Kaiming He等四名华人提出,并在ILSVRC2015比赛中取得冠军,在top5上的错误率为3.57%,同时参数量比VGGNet低,效果非常突出。目前常用的有Res18、Res50、Res101。

VGG网络试着探寻了一下深度学习网络的深度究竟可以深到什么程度还能持续地提高分类准确率。我们的一般印象当中,深度学习愈是深(复杂,参数多)愈是有着更强的表达能力。凭着这一基本准则CNN分类网络自Alexnet的7层发展到了VGG的16乃至19层,后来更有了Googlenet的22层。可后来发现深度CNN网络达到一定深度后再一味地增加层数并不能带来进一步地分类性能提高,反而会招致网络收敛变得更慢,test dataset的分类准确率也变得更差。排除数据集过小带来的模型过拟合等问题后,我们发现过深的网络仍然还会使分类准确度下降(相对于较浅些的网络而言)。也就是说网络出现了退化。
在这里插入图片描述
ResNets要解决的是深度神经网络的“退化”问题。什么是“退化”?

我们知道,对浅层网络逐渐叠加layers,模型在训练集和测试集上的性能会变好,因为模型复杂度更高了,表达能力更强了,可以对潜在的映射关系拟合得更好。而“退化”指的是,给网络叠加更多的层后,性能却快速下降的情况。

训练集上的性能下降,可以排除过拟合,BN层的引入也基本解决了plain net的梯度消失和梯度爆炸问题。如果不是过拟合以及梯度消失导致的,那原因是什么?

按道理,给网络叠加更多层,浅层网络的解空间是包含在深层网络的解空间中的,深层网络的解空间至少存在不差于浅层网络的解,因为只需将增加的层变成恒等映射,其他层的权重原封不动copy浅层网络,就可以获得与浅层网络同样的性能。更好的解明明存在,为什么找不到?找到的反而是更差的解?

显然,这是个优化问题,反映出结构相似的模型,其优化难度是不一样的,且难度的增长并不是线性的,越深的模型越难以优化。

有两种解决思路,一种是调整求解方法,比如更好的初始化、更好的梯度下降算法等;另一种是调整模型结构,让模型更易于优化——改变模型结构实际上是改变了error surface的形态。

ResNet的作者从后者入手,探求更好的模型结构。将堆叠的几层layer称之为一个block,对于某个block,其可以拟合的函数为 F ( x ) F(x) F(x),如果期望的潜在映射为 H ( x ) H(x) H(x),与其让 F ( x ) F(x) F(x) 直接学习潜在的映射,不如去学习残差 H ( x ) − x H(x)−x H(x)x,即 F ( x ) : = H ( x ) − x F(x):=H(x)−x F(x):=H(x)x,这样原本的前向路径上就变成了 F ( x ) + x F(x)+x F(x)+x,用 F ( x ) + x F(x)+x F(x)+x来拟合 H ( x ) H(x) H(x)。作者认为这样可能更易于优化,因为相比于让 F ( x ) F(x) F(x)学习成恒等映射,让 F ( x ) F(x) F(x)学习成0要更加容易——后者通过L2正则就可以轻松实现。这样,对于冗余的block,只需 F ( x ) → 0 F(x)→0 F(x)0就可以得到恒等映射,性能不减。

下面的问题就变成了 F ( x ) + x F(x)+x F(x)+x 该怎么设计了。

Residual Block的设计

F ( x ) + x F(x)+x F(x)+x 构成的block称之为Residual Block,即残差块,如下图所示,多个相似的Residual Block串联构成ResNet。

一个残差块有2条路径 F ( x ) F(x) F(x) x x x F ( x ) F(x) F(x) 路径拟合残差,不妨称之为残差路径,x路径为 identity mapping 恒等映射,称之为 ”shortcut” 。图中的 ⊕ 为 element-wise addition,要求参与运算的 F ( x ) F(x) F(x) x x x的尺寸要相同。所以,随之而来的问题是,

  • 残差路径如何设计?
  • shortcut路径如何设计?
  • Residual Block之间怎么连接?

在原论文中,残差路径可以大致分成2种,一种有 bottleneck 结构,即下图右中的1×1 卷积层,用于先降维再升维,主要出于降低计算复杂度的现实考虑,称之为“bottleneck block”,另一种没有bottleneck结构,如下图左所示,称之为“basic block”。basic block由2个3×3卷积层构成,bottleneck block由1×1

在这里插入图片描述
shortcut 路径大致也可以分成2种,取决于残差路径是否改变了feature map数量和尺寸,一种是将输入x原封不动地输出,另一种则需要经过1×1卷积来升维 or/and 降采样,主要作用是将输出与F(x)路径的输出保持shape一致,对网络性能的提升并不明显,两种结构如下图所示,
在这里插入图片描述
至于Residual Block之间的衔接,在原论文中, F ( x ) + x F(x)+x F(x)+x 经过ReLU后直接作为下一个block的输入x。对于F(x)路径、shortcut路径以及block之间的衔接,在文中有更进一步的研究。

下图中实线的Connection部分(“第一个粉色矩形和第三个粉色矩形”)都是 3 ∗ 3 ∗ 64 3*3*64 3364 的特征图,他们的channel个数一致,所以采用计算方式:

y = F ( x ) + x y=F(x)+x y=F(x)+x

虚线的的Connection部分(”第一个绿色矩形和第三个绿色矩形“)分别是 3 ∗ 3 ∗ 64 3*3*64 3364 3 ∗ 3 ∗ 128 3*3*128 33128的特征图,他们的channel个数不同(64和128),所以采用计算方式:

y = F ( x ) + W x y=F(x)+Wx y=F(x)+Wx

其中W是卷积操作,用来调整 x x x的channel维度的
在这里插入图片描述
在实际的实验过程中,作者实验了很多中不同的结构,如下图所示,最后发现第一种是最好的。
在这里插入图片描述
简单理解一下,下图中的左图展开之后就是右图,可以看出,残差网络的结果包含了网络中各个节点*w。
在这里插入图片描述

ResNet 网络结构

ResNet 网络参考了 VGG19 网络,在其基础上进行了修改,并通过短路机制加入了残差单元,如下图所示。ResNet 的一个重要设计原则是:当 feature map 大小降低一半时,feature map 的数量增加一倍,这保持了网络层的复杂度。从下图中可以看到,ResNet相比普通网络每两层间增加了短路机制,这就形成了残差学习,其中虚线表示feature map数量发生了改变。下图展示的34-layer的ResNet,还可以构建更深的网络如表1所示。从表中可以看到,对于18-layer和34-layer的ResNet,其进行的两层间的残差学习,当网络更深时,其进行的是三层间的残差学习,三层卷积核分别是1x1,3x3和1x1,一个值得注意的是隐含层的 feature map 数量是比较小的,并且是输出 feature map 数量的1/4。下面直观看一下ResNet-34与34-layer plain net和VGG的对比,以及堆叠不同数量Residual Block得到的不同ResNet。
在这里插入图片描述

在这里插入图片描述
ResNet的设计有如下特点:

  • 与plain net相比,ResNet多了很多“旁路”,即shortcut路径,其首尾圈出的layers构成一个Residual Block;
  • ResNet中,所有的Residual Block都没有pooling层,降采样是通过conv的stride实现的;分别在conv3_1、conv4_1和conv5_1 Residual Block,降采样1倍,同时feature map数量增加1倍,如图中虚线划定的block;
  • 通过Average Pooling得到最终的特征,而不是通过全连接层;
  • 每个卷积层之后都紧接着BatchNorm layer,为了简化,图中并没有标出;

ResNet结构非常容易修改和扩展,通过调整block内的channel数量以及堆叠的block数量,就可以很容易地调整网络的宽度和深度,来得到不同表达能力的网络,而不用过多地担心网络的“退化”问题,只要训练数据足够,逐步加深网络,就可以获得更好的性能表现。下面为网络的性能对比
在这里插入图片描述

作者对比18-layer和34-layer的网络效果,如下图所示。可以看到普通的网络出现退化现象,但是ResNet很好的解决了退化问题。
在这里插入图片描述
最后展示一下ResNet网络与其他网络在ImageNet上的对比结果,如下表所示。可以看到ResNet-152其误差降到了4.49%,当采用集成模型后,误差可以降到3.57%。
在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VGG16和ResNet50都是经典的深度学习模型,用于图像分类和特征提取。它们在架构和性能上有一些显著的区别。 首先,VGG16是一个由16个卷积层和3个全连接层组成的深度卷积神经网络。它的特点是层次结构简单、层次较深,所有的卷积层都使用相同大小的卷积核(3x3),并且在每个卷积层之后都有一个池化层。VGG16的模型参数较多,训练时间较长,但在训练集上表现良好。 而ResNet50是Residual Network的一个变种,它引入了残差连接(residual connections)来解决深层网络训练中的梯度消失问题。ResNet50由50个隐藏层组成,包括卷积层、批归一化层、全局平均池化层和全连接层。它的特点是使用了残差块(residual blocks),允许信息直接通过跳跃连接传递,从而有效地减少了梯度消失的影响。ResNet50的模型参数相对较少,训练时间相对较短,并且在训练集和测试集上都取得了很好的性能。 在性能方面,由于ResNet50的残差连接能够更好地捕捉图像的细节和特征,相比之下,ResNet50在更深的网络中具有更好的表现。因此,在许多图像分类和计算机视觉任务上,ResNet50通常比VGG16具有更高的准确率。 总结来说,VGG16和ResNet50都是强大的深度学习模型,但在设计上有一些区别。VGG16简单而直观,适合用于小规模图像分类任务;而ResNet50引入了残差连接,能够处理更深的网络结构,适用于更复杂的图像分类和特征提取任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值