《深度学习:主流框架和编程实战》——2.3.2 ResNet
2.3.2 ResNet
深度卷积神经网络在图像分类上有着一系列重大突破,但在深度学习发展历程中,当开始考虑更深层的网络的收敛问题时出现了一个退化的问题,即在不断加深的神经网络中会出现准确率先有一个上升的趋势,然后达到饱和,若再增加深度则会导致准确率下降。由于在训练集和测试集上都出现误差增大现象,因此得知并不是过拟合造成的影响。ResNet通过跨层特征融合使得其网络特征提取能力增强,网络性能随着网络的加深而逐渐提高。研究团队在可接受时间内测试更深层次的ResNet,并比较多种深度学习模型后,证明ResNet较其他模型分类性能更为优秀,并且能够通过增加相当的深度来提高准确率。
如图2-7右侧所示就是ResNet。与卷积神经网络不同的是,ResNet插入了跨层连接,即在不相邻网络层之间进行连接,如图2-7右侧所示黑色的箭头会跳过两个网络层直接作为另一个输入,叠加到不相邻两层的神经网络层,相当于在不相邻两层的网络层之间架设了一座高架桥,形成一个ResNet网络残差构件。图2-7左侧描述的是ResNet中的一个残差构件,其中每块包括两组组合网络层,每组网络层由一层批次正则化(Batch Norm)层、一层ReLU层和一层卷积层组成,最后一组的卷积层输出与原始的输入进行异或操作,得到输出。当维度增加时,可以考虑两种选择:1)跨层连接仍然使用自身映射,对于增加的维度用零来填补空缺,不会引入额外的参数;2)y = F(x,{Wi}) + Ws?X用来匹配维度。对于前一层输入的结果x,通过残差构造块函数F(x)会输出H(x)∶= F(x) + x。
F(x) + x在网络中是通过跨层连接和异或操作实现的,跨层连接可以跳过一个或多个神经网络层。
对于整个网络的训练,依然可以使用随机梯度下降(Stochastic Gradient Descend,SGD)算法和反向传播(Back Propagation,BP)算法,但是在卷积神经网络中,如果只是简单地增加网络深度作为恒等映射,则会导致梯度弥散或梯度爆炸的结果,从而造成退化问题。使用正则化初始值和中间的批次正则化层可以训练几十层的卷积神经网络,在很大程度上可以解决这一问题,因此退化问题说明了深度网络并不能依靠简单的网络层数增加来提高网络性能。在ResNet重构中,如果恒等映射是最优的,构造块可能会简单地将多个非线性层的权值逼近于零,从而逼近恒等映射。如果优化函数更接近于恒等映射,相比于直接学习一个新的函数,ResNet能够更容易地找出恒等映射有关的扰动,对特征的敏感性更强。对于ResNet的网络训练相当于同时对多个卷积神经网络进行并行训练,从而相较于传统卷积神经网络其有更高的效率。
ResNet残差构件有很多种,甚至可以根据项目要求自己定义。图2-8显示的就是本文使用的ResNet-34对应的残差构件,该结构很好地解决了退化问题。残差构件由两个卷积层再加一个恒等映射组成,卷积核大小都为3×3,因此残差构件输入与输出的维度大小也都是一样的,可以直接进行相加。当步长为1时,ResNet中的输入在残差构件中进行批次正则化、ReLU激活、卷积后,填充(padding)层即为原始的输入层;当步长为2时,ResNet的输入再进行同样的操作后,还会进行一次平均池化,再得到填充层,最后输出层的输入为填充层的输出加上残差构件后的输出。
图2-7 ResNet网络残差构件和ResNet网络结构
图2-8 ResNet-34残差构件
除了ResNet-34对应的残差构件,作者还提出了ResNet-50/101/152对应的残差构件,优化之后的残差构件相当于对于相同数量的层减少了参数量,因此可以拓展成更深的模型,50/101/152层ResNet比34层ResNet具有更高的精确度,并且也没有发现退化问题,因此可以通过大幅增加网络层深来获取显著的精确增益。
- 点赞
- 收藏
- 关注作者
评论(0)