1. 简介

这篇文章[1]主要思想是将 shortcut 用在了神经网络模型中,从而在一定程度上缓解了深度神经网络训不动的问题(即网络深到一定程度反而性能下降)。shortcut 在 2020 年前的神经网络热潮中就被提出来了,作者从新将其用在了深度神经网络中,发现性能很好。

2. 框架

3. 实验

可以看到,加入 shortcut 后,34 层的网络在训练误差和测试误差上都要小于 18 层的网络;而在没有加入 shortcut 时,34 层的网络的误差是要高于 18 层的网络的。

4. 分析

我们以一个两层的残差网络模型为例,这两层分别用 f,gf, g 表示,输入用 h(x)h(\boldsymbol{x}) 表示(即表示来自浅层头处理后的输出),则加入 shortcut 后,每一层的梯度为:

  • 第一层:[f(h(x))+h(x)]x=f(h(x))x+h(x)x\frac{\partial [f(h(\boldsymbol{x})) + h(\boldsymbol{x})]}{\partial \boldsymbol{x}} = \frac{\partial f(h(\boldsymbol{x}))}{\partial \boldsymbol{x}} + \frac{\partial h(\boldsymbol{x})}{\partial \boldsymbol{x}}
  • 第二层:[g(f(h(x))+h(x))+f(h(x))+h(x)]x=g(f(h(x))+h(x))x+f(h(x))x+h(x)x\frac{\partial [g(f(h(\boldsymbol{x})) + h(\boldsymbol{x})) + f(h(\boldsymbol{x})) + h(\boldsymbol{x})]}{\partial \boldsymbol{x}} = \frac{\partial g(f(h(\boldsymbol{x})) + h(\boldsymbol{x}))}{\partial \boldsymbol{x}} + \frac{\partial f(h(\boldsymbol{x}))}{\partial \boldsymbol{x}} + \frac{\partial h(\boldsymbol{x})}{\partial \boldsymbol{x}}

可以看到,无论网络有多深,都不存在梯度消失的问题,因为梯度总是包含来自浅层网络的部分,因此很深的网络也能训得动。

附录


  1. He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 770-778). ↩︎