resnet解决的是网络的退化问题。在vgg中提出,增加网络深度可以增加模型的表达能力。但是人们发现深度达到一定之后,CNN网络再一味增加层数并不能带来分类性能的提高,甚至会让网络收敛变慢,测试集精度下降。训练集精度下降可以说明这个不是过拟合的原因。因此resnet提出这是网络的“退化问题”。
深度神经网络可以拟合各种表示,按道理说,n+1层的cnn的解空间包含了n层的cnn的解空间,因此n+1层的精度不应该比n差,但是为什么精度反而下降呢?resnet认为网络中的表示方法可能存在问题。
resnet提出了 残差学习 的思想。
若将输入设置为X,将某一有参网络层设为H,那么以X为输入的此层的输出将为H(X)。一般的CNN网络的学习方法是直接学习H的表达,也就是学习X->H(X).
残差学习了输入、输出间的残差,也就是F(X)=H(X)-X,也就是最开始的H(X)=F(X)+X,这么做的原因是假设学习一个残差映射比学习H(X)要更加容易。从极端上来讲,如果某个映射是最优的,那么直接把残差部分置0相比于学习恒等映射更容易。