对残差块的高级理解

数据挖掘 深度学习
2021-09-19 13:34:34

我一直想知道残差块实际上做了什么以及为什么它们是深度卷积网络的必要条件。具体来说,为什么它们在某些生成器网络中如此有用?为了更好地提取特征?我想对这个概念有一个直觉,但在网上找不到可以理解的解释。

块末尾的总和是什么意思?它显示跳过块,但最后它还是单独添加它?x 和 F(x) 在这种情况下真正代表什么?F(x) 是给定输入的图像特征,x 是输入吗?

对我来说,它看起来像是用于特征检测/识别,因为它单独添加单独计算的子结果的方式,但我可能是错的。而且这种方式对我来说也不完全有意义,因为这种特殊方法如何帮助实现这一目标?这是一个重申的原则 - 网络单独计算一些特征,并通过这些手段确定某个纹理是它的本质而不是其他的东西(到处都是更少的错误)?但是然后 - 为什么不把这个也用于鉴别器呢?它从根本上需要同样的技术,不是吗?

仅仅是生成器需要比鉴别器改进更多吗?换句话说——如果鉴别器有这些块,它将开始只对输入图像的精确副本进行分类,而生成器永远不会愚弄鉴别器?但是然后 - 无论如何这有什么重要性 - 生成器无论如何都会在图像生成方面做得一样好。

1个回答

假设我们想要拟合一个函数f(x). 我们可以尝试学习一个神经网络模型F()以便F(x)f(x). 或者,在残差网络方法中,我们尝试学习一个神经网络模型R()以便x+R(x)f(x).

为什么后者更容易学习?一般来说,没有任何根本原因必须如此。这取决于具体的数据集。然而,一种可能的直觉是,我们可能期望在某些情况下,f()可能是近似线性的:即,作为一阶近似,f(x)x可能是一个合理的一阶近似。然后我们要对误差项进行建模:即,假设f(x)=x+r(x); 然后我们要建模r(x). 在某些设置中,误差项r(x)可能比建模更简单或更小f(x). 在这种情况下,残差网络架构可能会更好。

如果您愿意,您可以将其视为类似于泰勒级数近似。泰勒级数为f(x)

f(x)=c0+c1x+c2x2+

认为x很小(即,|x|1)。然后f(x)=c0是零阶近似;f(x)=c0+c1x是一阶近似;等等。在每一步,我们预计残差/误差项可能小于近似值。您可以将残差网络视为学习泰勒级数f(x), 在特殊情况下 c0=0c1=1.

还有其他更复杂的解释/直觉,但希望这提供了一种可能的观点。