深度残差网络(ResNet):解决深度神经网络训练难题的关键创新
深度残差网络(ResNet):解决深度神经网络训练难题的关键创新
深度残差网络(Deep Residual Network,简称ResNet)是深度学习领域的一个重要里程碑,它首次成功地训练出了超过100层的深度神经网络,彻底改变了计算机视觉领域的格局。ResNet的核心创新在于引入了残差连接,这种结构不仅解决了深层网络训练中的梯度消失和梯度爆炸问题,还使得网络能够学习更复杂的特征表示。本文将详细介绍ResNet的背景、原理及其如何解决深度神经网络训练中的关键问题。
开发背景
残差神经网络(ResNet)是由微软研究院的何恺明、张祥雨、任少卿、孙剑等人提出的,该模型在2015年ImageNet竞赛中取得了分类任务和目标检测任务的第一名。ResNet的主要贡献是发现了“退化现象”(Degradation),并针对这一现象发明了“直连边/短连接(Shortcut connection)”,极大地消除了深度过大的神经网络训练困难问题。这一创新使得神经网络的“深度”首次突破了100层,最大的神经网络甚至超过了1000层。
梯度消失与梯度爆炸
在深度神经网络的训练过程中,梯度消失和梯度爆炸是两个主要问题。梯度消失发生在反向传播时,靠近输入层的网络层计算得到的偏导数近乎零,导致权重几乎无法更新。而梯度爆炸则相反,靠近输入层的网络层计算得到的偏导数极其大,导致权重更新过大。这些问题都源于反向传播中的链式法则,当乘积项过多时,结果要么趋近于零,要么变得非常大。
退化现象
随着CNN的发展和普及,人们发现增加神经网络的层数可以提高训练精度。但是,如果只是单纯地增加网络的深度,梯度在反向传播过程中可能会变得非常小(梯度消失)或非常大(梯度爆炸),导致网络训练变得非常困难甚至不可行。传统的解决方法是权重的初始化(normalized initialization)和批标准化(batch normalization),虽然解决了梯度问题,但深度加深后却带来了网络性能退化现象,即随着网络层数的增加,网络的效果反而下降了。
批标准化(Batch Normalization,简称 BN)是一种用来提高深度神经网络训练速度和稳定性的技术。它在神经网络的每一层的输入上进行标准化处理,使得网络在训练过程中每一层的输入分布保持稳定,从而加快网络的收敛速度。具体步骤包括计算批次统计量、标准化输入、调整和缩放以及应用到网络中。
深度过大导致训练困难的原因
深度过大的神经网络难以训练的主要原因是梯度消失和梯度爆炸。虽然可以通过GPU集群解决计算资源消耗问题,通过采集海量数据集和Dropout正则化解决过拟合问题,但梯度消失和爆炸问题仍然需要专门的解决方案。
残差网络的解决方案
ResNet通过引入残差学习的概念,即在神经网络的某些层中引入跳跃连接(skip connection),使得网络可以学习残差函数(即输入和期望输出之间的差异)。这种设计使得即使是在深层网络中,模型也可以更轻松地学习恒等映射,而不会受到梯度消失或梯度爆炸的影响,从而加速了训练过程,并且提高了网络的整体性能和收敛速度。
恒等映射的作用主要体现在三个方面:
- 简化优化问题:通过引入恒等映射,残差块的设计变得更为灵活。恒等映射确保了即使在残差块内部进行了一些非线性变换(如卷积、批量归一化等),仍然能够通过跳跃连接将原始输入直接传递到输出。
- 缓解梯度消失:由于恒等映射保证了至少有一条直接的路径让梯度能够传播回去,它有效地缓解了梯度消失问题。
- 促进更有效的学习:跨层直接连接使得网络可以更快速地学习到残差(即输入与输出之间的差异),而不是直接学习完整的映射关系。
总结
残差学习能够缓解退化问题、梯度爆炸和消失问题的原因主要包括:
- 保留特征信息:残差学习的核心思想是学习残差,即学习输入和期望输出之间的差异。通过残差块中的跨层直接连接,网络可以直接传递输入的特征信息到后续层,使得这些信息不容易在深层网络中丢失。
- 简化梯度传播:在传统的深层网络中,梯度通常需要通过多个层逐步传播,容易出现梯度消失或梯度爆炸的问题。残差学习的跨层直接连接可以让梯度更直接地传播回较早的层次,从而缓解了这些梯度问题。
- 促进更有效的学习:跨层直接连接使得网络可以更快速地学习到残差(即输入与输出之间的差异),而不是重新学习整个映射。这种方式在网络深度增加时特别有利,因为它允许网络集中精力学习对原始输入进行增量式的改进。