随着网络深度加深,人们认识到在CNN中,网络深度(depth) 是至关重要的。但是人们又发现随意的增加网络深度会导致退化问题(degradation problem)。随后学者们(何凯明团队)提出了一个Residual框架,使可以训练非常深的网络。
ResNet
论文地址:ResNet论文地址
1、退化问题
当增加网络深度时,网络在训练集与测试集上的表现都不如原本较浅的网络。从下图也可以明显的看到这种现象,这被称作退化问题(degradation problem)。
学者们认为,当在一个较浅的网络上增加网络层数,即使无法让网络表现变得更好,但也应该与较浅的网络保持相当的结果。但是从实验结果来看,并不是这样,这说明后面增加的网络无法较好的拟合一个恒等变换。
2、Residual Learning
假设网络后面的几层拟合了一个隐式函数H(x),记F(x) = H(x) - x。那么有H(x) = F(x) + x,有前面讨论知道H(x)是比较难是一个恒等变换的,假设H(x)是恒等映射时网络是最优的(虽然实际中不太可能),若用原来的结构是无法达到的,但是通过这个残差训练可以教容易的去逼近,因为可以直接令F(x)趋近于零,即让F(x)中训练的参数趋近于零。下面这张图指的是一个小的残差模块。
3、利用bottleneck architecture构建更深的网络
通过使用1×1的卷积(pointwise convolution)进行降维和升维操作,即减少了计算量,又维持了通道数的数量,使模型有较好的表示能力。
4、ResNet-50、ResNet-152模型表现(ImageNet上)
在测试集上的表现
在验证集上的表现
5、总结
总的来说就是提出了一个残差框架,通过构建残差块,并进行堆叠构建残差网络,使网络可以训练的很深;另外在相同网络层数的前提下,添加了残差结构的网络的准确率不会有太大的提升,但是训练速度会变快。