据我了解,ResNet 有一些身份映射层,其任务是创建与层输入相同的输出。ResNet 解决了精度下降的问题。但是在中间层中添加恒等映射层有什么好处呢?
这些身份层对将在网络的最后一层产生的特征向量有什么影响?网络为输入产生更好的表示是否有帮助?如果这个表达是正确的,原因是什么?
据我了解,ResNet 有一些身份映射层,其任务是创建与层输入相同的输出。ResNet 解决了精度下降的问题。但是在中间层中添加恒等映射层有什么好处呢?
这些身份层对将在网络的最后一层产生的特征向量有什么影响?网络为输入产生更好的表示是否有帮助?如果这个表达是正确的,原因是什么?
TL;DR:深度网络有一些跳过连接修复的问题。
要解决此声明:
据我了解,Resnet 有一些身份映射层,它们的任务是创建与层输入相同的输出
残差块没有严格学习恒等映射。他们只是能够学习这样的映射。也就是说,残差块使学习恒等函数变得容易。因此,至少,跳过连接不会损害性能(这在论文中正式解释过)。
从论文中:
观察:它从较早的层获取一些层输出,并将它们的输出进一步向下传递,并以元素方式将这些与跳过层的输出相加。这些块可能会学习不是身份映射的映射。
从纸上(一些好处):
Eqn.(1) 中的快捷连接既没有引入额外的参数,也没有引入计算复杂度。这不仅在实践中很有吸引力,而且在我们比较普通网络和残差网络时也很重要。我们可以公平地比较同时具有相同数量的参数、深度、宽度和计算成本的普通/残差网络(除了可忽略的元素加法)。
论文中残差映射的一个例子是
那是表示一组 i 个权重矩阵 (在示例中)发生在剩余(跳过)层的层中。“身份快捷方式”是指执行元素明智的添加与剩余层的输出。
因此,使用示例 (1) 中的残差映射变为:
简而言之,你把输出一层的向前跳过它,然后将它与残差映射的输出逐个元素相加,从而产生一个残差块。
论文中表达的深度网络的局限性:
当更深的网络能够开始收敛时,一个退化问题就暴露出来了:随着网络深度的增加,准确度变得饱和(这可能不足为奇),然后迅速退化。出乎意料的是,这种退化不是由过度拟合引起的,并且向适当深度的模型添加更多层会导致更高的训练误差,如 [11, 42] 中所述,并已通过我们的实验得到彻底验证。图 1 显示了一个典型的例子。
跳过连接和因此的残差块允许堆叠更深的网络,同时避免这种退化问题。
我希望这有帮助。
正如本文所解释的,恒等映射的主要好处是它使反向传播信号能够从输出(最后)层到达输入(第一)层。
您可以在第 2 节的论文中看到,它解决了在更深的网络中出现的梯度消失问题。
据我了解,Resnet 有一些身份映射层,它们的任务是创建与层输入相同的输出。resnet 解决了精度下降的问题。但是在中间层中添加恒等映射层有什么好处呢?
看到这适用于深度/非常深的网络。我们决定在模型输出未收敛到预期输出时添加层(这是由于收敛速度非常慢)。通过这种映射,作者建议可以直接用输入值调整模型的某些部分复杂度,只留下剩余值进行调整。输出通过恒等函数映射到输入 - 所以它是恒等映射。所以快捷恒等映射是在做普通神经网络中某些层的任务。
恒等映射仅在输出和输入具有相同形状时才适用,否则需要线性投影。
正如这里所解释的
只有当较大的函数类包含较小的函数类时,我们才能保证严格增加它们会增加网络的表达能力。对于深度神经网络,如果我们可以将新增的层训练成一个恒等函数,新模型将与原始模型一样有效。由于新模型可能会获得更好的解决方案来拟合训练数据集,因此添加的层可能更容易减少训练错误。