ResNet(Residual Network,残差网络)模型是由微软亚洲研究院的何凯明等人在2015年提出的一种深度神经网络结构。其核心原理在于通过残差连接(residual connections)解决了深层网络训练中的梯度消失和梯度爆炸问题,使得网络可以训练得更深,性能更强。以下是ResNet模型原理的详细解析:
一、背景与挑战
在深度学习中,随着神经网络层数的增加,通常认为网络能够学习到更复杂的特征表示,从而提高模型的性能。然而,在实际应用中,过深的网络往往会导致梯度消失、梯度爆炸、过拟合以及低级特征丢失等问题,进而引发性能退化。梯度消失问题尤为严重,它指的是在网络训练过程中,梯度在反向传播过程中可能会逐渐变小,导致网络无法进行有效的参数更新,从而影响模型的性能。
二、残差学习
为了解决上述问题,ResNet引入了残差学习的概念。残差学习的基本思想是,网络的输入和输出之间的差异(即残差)可以通过添加一个残差块来学习。残差块的设计允许输入信号直接传递到块的输出端,与经过卷积层处理后的信号相加。这样,残差块的目标就变成了学习一个残差函数,即输入到输出之间的差异,而不是整个映射函数。
三、残差块结构
ResNet的核心是残差块(Residual Block),一个标准的残差块包含两个或更多的卷积层,以及一个从输入直接连接到块输出的“捷径连接”(Shortcut Connection)。这个捷径连接允许输入信号直接传递到块的输出端,与经过卷积层处理后的信号相加。残差块可以表示为:
y=F(x,{ Wi})+x y = F(x, \{W_i\}) + x y=F(x,{ Wi})+x
其中,xxx 是输入,yyy 是输出,F(x,{ Wi})F(x, \{W_i\})F(x,{ Wi}) 是残差块中卷积层对输入 xxx 的变换(包括卷积、归一化、激活等操作),WiW_iWi