深度学习初步:火与文字 ResNet

前言

自2011年至2017年至,依托于Google庞大的ImageNet数据集,每年一度的ILSVRC(ImageNet大规模视觉识别挑战赛)比赛汇聚了诸多英豪同台竞技,思想激荡之间,网络的分类精度一路走高。

深度学习初步:火与文字 ResNet

但随着时间向2014年推进,一个制约传统卷积网络的问题渐渐浮出水面,网络的深度。

2014年盛赛,VGG一路过关斩将,虽最后惜败于googLeNet,屈居次席,但它的出现彻底将该问题拉入到诸多研究者面前:传统CNN已经被榨干了它的最后一丝潜力。即使如VGG将深度增加至16乃至19,它的分类性能也不会提高,反而其收敛变得更慢,test dataset的分类准确率也变得更差,排除模型过拟合等问题后,其分类准确度也随着网络深度的增加出现下降。难道有如VGG和googLeNet之类的网络就是深度学习在分类方向的终点了吗?

历史告诉我们,不,显然不是。

变局

2015年ILSVRC的赛场上,ResNet横空出世。为了解决传统网络存在的故有问题,继续加深网络深度,ResNet使用了存在于计算机视觉中residual representation的概念,将其应用入CNN的构建中,创造性的建立了残差模块和深度残差网络。

深度学习初步:火与文字 ResNet
如果说AlexNet是CNN中创世主神,那ResNet便是创造了全新交流方式的仓颉。

ResNet网络简述

残差学习

若将输入设为X,将某一有参网络层设为H,那么以X为输入的此层的输出将为H(X)。一般的CNN网络如Alexnet/VGG等会直接通过训练学习出参数函数H的表达,从而直接学习X -> H(X)。

而残差学习则是致力于使用多个有参网络层来学习输入、输出之间的参差即H(X) - X即学习X -> (H(X) - X) + X。其中X这一部分为直接的identity mapping,而H(X) - X则为有参网络层要学习的输入输出间残差。如上图。

通常,ResNet有两种Block:

深度学习初步:火与文字 ResNet

残差学习的优势

博主manofmountain描述了其优势:

1.假设网络输入是x,经学习的输出是F(x),最终拟合目标是H(x)。

2.深层网络相比浅层网络有一些层是多余的,若让多余层学习恒等变换H(x)=x,那么网络性能不该比浅层网络要差。
传统网络训练目标H(x)=F(x),残差网络训练目标H(x)=F(x)+x。

3.为了学习恒等变换,传统网络要求网络学习F(x)=H(x)=x,残差网络只需学习F(x)=H(x)−x=x−x=0。残差学习之所以有效是因为让网络学习F(x)=0比学习F(x)=x要容易。

残差学习的极限

既然传统意义上的CNN有极限,那ResNet的模型深度是不是也有极限,极限又在哪呢?

传统CNN出现极限的原因是在优化中近似了模型的最优解,残差网络虽然在block中扩展了模型的深度,但受限于数据集等因素,仍然有其极限。

ResNet的作者在CIFAR10数据集上尝试了更深的Resnet网络,其深度最多达到了1202层。发现其分类性能终于开始有一定的下降。
深度学习初步:火与文字 ResNet
针对该结果有两种猜想:一种是数据集过小,导致网络很快出现了过拟合;另一种是当网络过深的时候,残差的block造成的输出差异被稀释,与传统CNN面临着一样的问题。