RNN 中的“残差连接”是什么?

机器算法验证 神经网络 lstm 循环神经网络 残差网络 机器翻译
2022-01-24 07:21:17

在 Google 的论文Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation中指出

我们的 LSTM RNN 有层,层之间有残差连接......8

什么是残差连接为什么层间有残差连接?

理想情况下,我首先寻找一个简单直观的解释,可能伴随着示意图。

当然,细节可以在原始论文中找到,但我认为这个问题会对社区有益。

4个回答

剩余连接与“跳过连接”相同。它们用于允许梯度直接流过网络,而不通过非线性激活函数。非线性激活函数本质上是非线性的,会导致梯度爆炸或消失(取决于权重)。

跳过连接在概念上形成了一条“总线”,它直接通过网络,相反,梯度也可以沿着它向后流动。

网络层的每个“块”,例如卷积层、池化等,都会在总线上的某个点处挖掘值,然后在总线上添加/减去值。这意味着块确实会影响梯度,相反,也会影响前向输出值。但是,通过网络可以直接连接。

实际上,resnets(“残差网络”)还没有被完全理解。他们显然是凭经验工作的。一些论文表明它们就像一组较浅的网络。有各种各样的理论:)它们不一定是自相矛盾的。但无论哪种方式,对它们工作的确切原因的解释超出了交叉验证问题的范围,这是一个开放的研究问题:)

在较早的答案中,我在Gradient backpropagation through ResNet skip connections中绘制了一张关于我如何在脑海中看到 resnet 的图表这是我制作的图表,转载:

在此处输入图像描述

我理解了主要概念,但是这些残差连接通常是如何实现的?它们让我想起了 LSTM 单元的工作原理。

所以,想象一个网络,在每一层你有两个并行的卷积块: - 输入进入每个块 - 输出相加

现在,用直接连接替换其中一个块。如果您愿意,可以使用身份块,或者根本没有块。这是一个剩余/跳过连接。

实际上,剩余的转换单元可能是两个串联的单元,中间有一个激活层。

关于图像识别的深度残差学习,我认为说 ResNet 包含残差连接和跳过连接是正确的,它们不是一回事。

以下是论文中的一段引文:

我们假设优化残差映射比优化原始的、未引用的映射更容易。极端情况下,如果恒等映射是最优的,则将残差推至零要比通过一堆非线性层拟合恒等映射更容易。

将残差推到零的概念表明残差连接对应于学习的层而不是跳跃连接。我认为最好将“ResNet”理解为学习残差的网络。

在下图中(论文中的图 2),通过权重层和 relu 激活的路径是残差连接,而身份路径是跳过连接。

在此处输入图像描述

Squeeze-and-Excitation Networks的作者似乎也基于他们论文中的图 3 有这种理解。

在此处输入图像描述


参考

  1. https://arxiv.org/pdf/1512.03385.pdf
  2. https://arxiv.org/pdf/1709.01507.pdf
  3. https://tim.cogan.dev/residual-connections

为了更好和更深入地理解残差连接概念,您可能还想阅读这篇论文:用于图像识别的深度残差学习这篇论文在解释Transformers架构中的编码器元素时也被“ Attention Is All You Need ”论文引用。

在超分辨率中,有许多带有残差连接的网络架构。如果你有一张低分辨率的图片 x 并且你想重建一张高分辨率的图片 y,那么网络不仅要学习从 y 中预测丢失的像素,还必须学习 x 的表示。

因为 x 和 y 具有高相关性 -> y 是 x 的更高分辨率表示,所以您可以添加从输入到最后一层输出的跳过连接。这意味着,网络中发生的所有事情都只会集中在学习 yx 上。因为在最后,x 被添加到输出中。