梯度消失是指在网络反向传播时,梯度值逐渐变小,导致靠近输入层的权重更新非常缓慢甚至停止更新。模型退化则是指随着网络层数的增加,训练误差反而上升的现象。
ResNet的关键思想是在网络中添加一个从输入到输出的“短路”连接(即恒等映射),使得网络可以学习输入和输出之间的“残差”函数。具体来说,残差连接通过将输入直接加到卷积层的输出来实现。
ResNet的核心思想是引入残差块(Residual Block),它通过跳过连接(Shortcut Connection)或恒等映射(Identity Mapping)来连接块的输入和输出。这种结构可以使网络在反向传播时,梯度直接通过跳过连接流回前面的层,从而缓解梯度消失问题。同时,由于残差块学习的是输入与输出之间的残差,因此当残差为0时,网络至少可以保持与浅层网络相同的性能,从而避免模型退化。
残差块不是直接学习输入到输出的映射,而是学习输入与输出之间的“残差”(即差值)。这意味着,对于残差块F(x),它的实际映射关系是H(x) = F(x) + x,其中x是输入,F(x)是学习的残差函数,H(x)是目标输出。当残差为0时,H(x)等于x,这构成了一个恒等映射,网络性能至少不会下降,从而缓解了模型退化的问题。
假设我们有一个输入图像,经过一个卷积层后得到中间特征图。然后,我们将这个中间特征图分为两路:一路继续通过卷积层进行变换,得到残差部分;另一路则直接通过跳过连接与残差部分相加,得到最终的输出特征图。假设输入为X,第一个卷积层的输出为F(X),那么残差块的输出就是F(X) + X。在训练过程中,网络会学习到如何调整权重,使得F(X)尽可能地接近目标输出与X之间的差值,即残差。这样,即使网络很深,也能够有效地进行训练,并保持良好的性能。
以下是残差神经网络的主要优势:
- 缓解梯度消失问题:由于残差连接的存在,梯度可以直接通过短路连接回流到较浅的层,从而避免了在深层网络中梯度消失的问题。这允许我们训练更深的网络。
- 减少模型退化:传统的深度网络在增加层数时,由于优化困难,可能会出现模型退化现象。而残差网络通过引入残差学习,使得网络在增加层数时至少能保持与浅层网络相当的性能,从而避免了模型退化。
- 加速训练:由于梯度能够更有效地回流,残差网络通常比同等深度的非残差网络收敛得更快。
- 提高模型性能:通过引入残差连接,网络可以更容易地学习输入和输出之间的复杂映射关系,从而提高模型的性能。
- 灵活性:残差块的设计非常灵活,可以很容易地与其他类型的层(如卷积层、池化层等)结合使用,构建出各种复杂的网络结构。
通过多个残差块的堆叠,可以构建出非常深的网络结构,同时保持较高的训练效率和性能。