【发布时间】:2017-09-03 13:13:07
【问题描述】:
我正在阅读深度残差网络论文,论文中有一个我无法完全理解的概念:
问题:
“希望 2 个权重层适合 F(x)”是什么意思?
这里 F(x) 是用两个权重层(+ ReLu 非线性函数)处理 x,所以所需的映射是 H(x)=F(x)?残差在哪里?
【问题讨论】:
标签: deep-learning deep-residual-networks
我正在阅读深度残差网络论文,论文中有一个我无法完全理解的概念:
问题:
“希望 2 个权重层适合 F(x)”是什么意思?
这里 F(x) 是用两个权重层(+ ReLu 非线性函数)处理 x,所以所需的映射是 H(x)=F(x)?残差在哪里?
【问题讨论】:
标签: deep-learning deep-residual-networks
“希望 2 个权重层适合 F(x)”是什么意思?
所以显示的残差单元通过使用两个权重层处理x 获得F(x)。然后将x添加到F(x),得到H(x)。现在,假设H(x) 是您理想的预测输出,与您的基本事实相匹配。由于H(x) = F(x) + x,获得想要的H(x)取决于获得完美的F(x)。这意味着残差单元中的两个权重层实际上应该能够产生所需的F(x),然后保证得到理想的H(x)。
这里F(x)是用两个权重层(+ ReLu非线性函数)处理x,所以想要的映射是H(x)=F(x)?残差在哪里?
第一部分是正确的。 F(x)从x获取如下。
x -> weight_1 -> ReLU -> weight_2
H(x)从F(x)获取如下。
F(x) + x -> ReLU
所以,我不明白你问题的第二部分。残差为F(x)。
作者假设残差映射(即F(x))可能比H(x) 更容易优化。用一个简单的例子来说明,假设理想的H(x) = x。那么对于直接映射,很难学习恒等映射,因为有一堆非线性层,如下所示。
x -> weight_1 -> ReLU -> weight_2 -> ReLU -> ... -> x
因此,用所有这些权重和中间的 ReLU 来近似恒等映射是很困难的。
现在,如果我们定义了所需的映射H(x) = F(x) + x,那么我们只需要得到F(x) = 0,如下所示。
x -> weight_1 -> ReLU -> weight_2 -> ReLU -> ... -> 0 # look at the last 0
实现上述目标很容易。只需将任何权重设置为零,您将获得零输出。加回x 即可获得所需的映射。
残差网络成功的其他因素是从第一层到最后一层的不间断梯度流。这超出了您的问题的范围。您可以阅读论文:“深度残差网络中的身份映射”以获取更多信息。
【讨论】:
H(x) - x,因为那是通过构造实现的。你学习 F(x) 并添加 x 所以 H(x) - x 自动成为残差。这里的问题应该是为什么学习F(x) 可能比H(x) 更容易。我认为没有任何具体的答案,因为作者自己在原始论文中对此进行了假设。成功更多地归功于残差网络通过构建允许梯度不间断地流动,这与传统的非残差网络不同。