[2] Deep Residual Learning for Image Recognition ( CVPR 2016)
作者:Kaiming He Xiangyu Zhang Shaoqing Ren Jian Sun
单位:微软研究院
摘要:
更深层的神经网络更难训练。我们提出了一个残差学习框架,以减轻对比先前使用的深度更深的网络的训练。我们显式地将层重构为参考层输入的学习残差函数,而不是学习未参考的函数。我们提供了全面的经验证据,表明这些残差网络更容易优化,并且可以从大幅增加的深度中获得准确性。在ImageNet数据集上,我们评估了深度高达152层的残差网络- -比VGG网络[ 40 ]深8倍,但仍具有较低的复杂度。这些残差网络的集合在ImageNet测试集上达到3.57 %的误差。这个结果赢得了ILSVRC 2015分类任务的第一名。我们也提供了对100层和1000层CIFAR - 10的分析。
表示的深度对于许多视觉识别任务来说是至关重要的。由于我们非常深入的表示,我们在COCO目标检测数据集上获得了28 %的相对改进。深度残差网络是我们提交ILSVRC & COCO 2015竞赛1的基础,我们在ImageNet检测、ImageNet定位、COCO检测和COCO分割任务上也获得了第1名。
主要贡献:
(1)提出了残差块,通过跳跃连接解决深度网络训练中的退化问题。使得网络可以有效地加深至152层以上,而不出现性能下降。
(2)在ImageNet和COCO数据集上展示了残差网络在图像识别任务中的优越性能。
创新点:
引入了残差块的概念,使得网络能够学习输入与输出之间的残差,而不是直接学习期望映射,这大大简化了优化过程。提出了有效的网络训练策略,包括权重初始化和批归一化,进一步提高了模型的收敛速度和性能。
简介:
在本文中,我们通过引入深度残差学习框架来解决退化问题。为了拟合一个期望的底层映射,我们显式地让这些层拟合一个残差映射。在形式上,我们将期望的底层映射表示为H ( x ),并让堆叠的非线性层拟合F ( x )的另一个映射:F ( x )= H ( x ) - x。原始映射被重铸成F ( x ) + x。我们假设优化残差映射比优化原始的、未引用的映射更容易。在极端情况下,如果一个恒等映射是最优的,那么将残差推到零比用一堆非线性层拟合一个恒等映射更容易。
框图:
关于ResNet
疑问:
为什么更深层次的网络更难训练?
①梯度消失和爆炸:在反向传播过程中,梯度可能会逐层减小(消失)或增大(爆炸),导致更新不稳定,从而影响模型的学习。
②过拟合:深层网络具有更多参数,更容易在训练数据上过拟合,特别是在数据量不足的情况下。
③优化困难:随着网络深度增加,优化目标变得更加复杂,导致梯度更新变得更加困难。
④特征学习:深层网络需要逐层学习复杂的特征,浅层网络可能无法捕捉到所有重要信息,导致性能下降。
残差网络会使得深度更深的网络容易训练,为什么?
①残差学习:ResNet通过引入残差块,让网络学习输入与输出之间的残差而不是直接学习完整的映射。这种方式简化了学习过程,使得优化变得更容易。
②跳跃连接:跳跃连接允许信息在网络中更直接地流动,减少了梯度消失的问题,从而使得即使在深层网络中,梯度也能有效传播。
③恒等映射:如果某一层的最优映射是恒等映射,网络可以通过跳跃连接轻松地实现,而不需要重新学习复杂的功能,从而加快了收敛速度。
④特征复用:跳跃连接使得低层提取的特征可以被高层使用,从而提高了特征的利用效率,有助于更有效地学习复杂模式。
残差网络更容易优化,并且可以从大幅增加的深度中获得准确性,为什么?
同上
残差网络的深度增加,但是复杂度并不会大幅度增加
同上
特征的"层级"是什么意思
低层特征:
这些特征通常表示图像的基本元素,比如边缘、角点和简单的纹理。在网络的前几层中提取。
中层特征:
这些特征是低层特征的组合,能够捕捉到更复杂的形状或局部模式,例如物体的一部分(如车轮、花瓣)。
高层特征:
在网络的高层,特征表示更加抽象,通常能够识别完整的物体或更复杂的概念,如"汽车"或"人"。
随着特征层级的提高,特征的表现也会越来越复杂、抽象,但是所能表示的意义更丰富。
更深层的网络训练误差和测试误差会更高,为什么?
还是梯度消失、过拟合、优化困难等原因
归一化初始化和中间归一化层是什么?如何解决梯度消失或爆炸的问题的
归一化初始化和中间归一化层(如批归一化)是两种不同的技术,用于提高神经网络的训练效率,并解决梯度消失或爆炸的问题。
1. 归一化初始化
归一化初始化指的是在网络参数初始化时,使用特定的标准化方法来设置权重。这种初始化方法可以防止激活值在传递过程中变得过大或过小,从而减轻梯度消失或爆炸的风险。
常见方法:
Xavier初始化:适用于使用sigmoid或tanh激活函数的网络,使得每一层的输出方差与输入方差保持一致。
He初始化:特别适合ReLU激活函数,考虑了ReLU的非对称性,能够更好地保持激活分布。
2. 中间归一化层(Batch Normalization)
批归一化是在每个小批次上对层的输出进行标准化,使其均值为0,方差为1。
这有助于以下几个方面:
①稳定分布:通过减少输入分布的变化,确保每层在训练过程中接收到更稳定的输入,从而提高训练速度和稳定性。
②加速收敛:使得学习率可以设置得更高,从而加快模型收敛。
③缓解梯度消失/爆炸:保持激活值的范围,有助于避免梯度在反向传播过程中的消失或爆炸。
总结
通过归一化初始化和中间归一化层,神经网络可以更有效地训练,减少梯度消失或爆炸的风险,从而实现更深层网络的有效学习。
能够收敛的深层次的网络为什么比浅层网络误差率高?在排除过拟合的原因,还有哪些原因导致这样的情况?
同上(残差网络更容易优化)
为什么把上一层的输出与残差块后的输出相加,这样模型的性能就会更好?
缓解梯度消失...
举个例子解释一下残差网络的流程
shortcut快捷连接是什么意思
残差网络可以把一层作为一个残差块吗
可以,但是性能一般
投影是什么意思
ResNet网络结构图: