残差网络

什么是残差网络(ResNet)?

残差网络(ResNet)是一种深度学习模型,其中权重层学习相对于层输入的残差函数。残差网络是一种开放式高速公路网络,其特点是具有执行身份映射的跳过连接,这些连接通过加法与层输出合并。这使得具有数十或数百层的深度学习模型能够轻松训练并在深入时获得更好的准确性。身份跳过连接,通常被称为“残差连接”,也用于长短期记忆LSTM),变压器模型(例如,BERTGPT模型如ChatGPT),AlphaGo Zero系统,AlphaStar系统和AlphaFold系统。

残差学习

在多层神经网络模型中,考虑具有一定数量(例如,2或3)堆叠层的子网络。将此子网络执行的基础函数表示为H(x),其中x是此子网络的输入。"残差学习"的思想重新参数化了这个子网络,并让参数层表示一个残差函数F(x) := H(x) - x。这个子网络的输出y表示为:y = F(x) + x。这是LSTM内部单元计算的函数,用于克服1991年首次分析的梯度消失问题。

残差块

这个子网络被称为"残差块"。深度残差网络是通过堆叠一系列残差块构建的。在"y = F(x) + x"中,"+"操作通过执行身份映射的跳过连接来实现,该连接将残差块的输入与其输出连接。这种连接在后续工作中通常被称为"残差连接"。

残差块的变体

  1. 基本块:基本块是原始ResNet中研究的最简单的构建块。这个块由两个顺序的3x3卷积层和一个残差连接组成。两个层的输入和输出维度都是相等的。

  2. 瓶颈块:瓶颈块由三个顺序的卷积层和一个残差连接组成。这个块的第一层是一个1x1的卷积,用于降维,例如,到输入维度的1/4;第二层执行一个3x3的卷积;最后一层是另一个1x1的卷积,用于恢复维度。

  3. 预激活块:预激活块是一种更先进的设计,其中在每个卷积层之前都有批量归一化和ReLU激活函数。这种设计被认为可以更好地保持梯度流,从而使网络更容易训练。

残差网络的优点

  1. 解决梯度消失问题:由于残差连接,我们可以将较大的梯度传播到初始层,这些层也可以像最后的层一样快速学习,使我们能够训练更深的网络。

  2. 解决退化问题:在深度神经网络中,如果我们继续增加层数,我们会看到准确性在某一点上会饱和,然后逐渐降低。这通常不是由过拟合引起的。通过使用跳过连接,我们可以跳过一些额外的层,至少可以匹配浅层子网络的准确性。

  3. 动态调整层数:通过在网络中添加跳过连接,我们允许网络跳过对那些不有用且不增加整体准确性的层的训练。这样,跳过连接使我们的神经网络在训练过程中能够动态地优化层数。

残差网络的历史

跳过连接层之间的想法最初是在高速公路网络中引入的。高速公路网络有跳过连接,这些连接有门控制通过它们的信息量,这些门可以被训练成选择性开放。这个想法也在LSTM网络中看到,这些网络控制了从过去的数据点看到的信息流量。这些门的工作方式类似于控制从先前看到的数据点的记忆流动。

残差网络的应用

残差网络已经在各种任务中展示了最先进的性能,包括图像分类、物体检测和语义分割等。此外,它们也被用于许多大规模的深度学习系统,如AlphaGo Zero、AlphaStar和AlphaFold。

总的来说,残差网络是一种强大的深度学习模型,它通过引入残差连接来解决深度神经网络中的一些关键问题,如梯度消失和网络退化。这使得我们能够训练更深、更复杂的模型,从而在各种任务上获得更好的性能。


本文作者:Maeiee

本文链接:残差网络

版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!


喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!