核心思想
将层表示为学习残差函数。实验表明,残差网络更容易优化。解决了增加网络深度带来的副作用(退化问题),这样能够通过单纯地增加网络深度,来提高网络性能。
问题来源
增加网络深度的重要性
CNN能够提取low/mid/high-level的特征,网络的层数越多,意味着能够提取到不同level的特征越丰富。并且,越深的网络提取的特征越抽象,越具有语义信息。
简单增加网络深度存在的问题
- 梯度弥散或梯度爆炸
解决办法:正则化初始化和中间的正则化层(Batch Normalization),这样的话可以训练几十层的网络。 - 退化问题(degradation)
按照一般经验,只要网络不训飞,而且不过拟合,那应该是越深越好。但是有时会发现,网络加深了,accuracy却下降了,称这种情况为degradation。如下图所示:
怎么解释呢?是因为深度网络不能简单地被很好地优化,当模型变复杂时,SGD的优化变得更加困难,导致了模型达不到好的学习效果。
为了证实,作者做了一个实验,通过浅层网络+等同映射(y=x)构造深层模型,结果深层模型并没有比浅层网络有等同或更低的错误率。说明退化问题可能是因为深层的网络并不是那么好训练,也就是求解器很难拟合多层网络中的等同函数(y=x