一、ResNet解决的问题
- 在公共数据集打榜结果可以看出,图像分类问题中,往往是越深的网络取得的成绩越好。在深度重要性的驱动下,一个问题产生了:学习更好的网络就像堆叠更多层一样容易吗?结果显然是NO。
- 深层网络面临最大的问题就是梯度消失或者梯度爆炸问题,二者从一开始就阻碍了收敛,但是这个问题在很大程度上已经通过归一化初始化和中间归一化层来解决。
- 于是分别进行不同深度网络的训练和测试发现更深层的网络更易出现精度饱和后迅速降级的现象,我们称这种现象为——退化,并且发现退化产生的原因不是过度拟合,而是层数变多引起的训练误差更高,随之测试误差也会更高。
- 现存的解决方法是Identity Mapping(恒等映射),这种结构理论上来说深层网络结构相比于浅层网络不会产生更多的误差,但是实验表明并非如此。
- 这个概念出自论文Identity Mapping in Deep Residual Networks这篇论文也主要分析的是resnet中使用identity mapping效果好的原因。
使用skip connect的原因
- 在深度学习中,网络越深表达能力越强,性能越好。但随着网络深度的加深,一些其他的问题也会产生,比如梯度消失,梯度爆炸,解决这些问题也有一些方法,比如BN层,Relu等各种激活函数,这些方法的改善能力有限。
- 如上图所示就是论文中的resnet网络的skip block的示意图。我们可以使用一个非线性变化函数来描述一个网络的输入输出,即输入为X,输出为F(x),F通常包括了卷积,激活等操作。
- 当我们强行将一个输入添加到函数的输出的时候,虽然我们仍然可以用G(x)来描述输入输出的关系,但是这个G(x)却可以明确的拆分为F(x)和X的线性叠加。这就是skip connect的思想,将输出表述为输入和输入的一个非线性变换的线性叠加,没用新的公式,没有新的理论,只是换了一种新的表达。它解决了深层网络的训练问题。
几个关键问题
ResNet的核心思想
上面我们说到深层网络并不是我们想的一定比浅层网络产生更好的效果。下面是ResNet的核心Idea:
假如有一个最完美网络N,那么相比于这个网络,我们所训练的网络一定有一些层是多余(不起作用或者起反作用)的,如果处理好这些冗余的层,我们的网络是不是就可以无限接近N了。
所以ResNet提出了恒等映射的概念,就是将这些冗余层恒等映射,(我理解的)分