机器学习、深度学习与人工智能大数据,机器学习,人工智能深度学习·神经网络·计算机视觉

CNN经典模型——ResNet

2019-08-08  本文已影响16人  Ice_spring

ResNet(Residual Neural Network)简介

残差网络(ResNet) 是2015年由何恺明等人(微软研究团队人员)提出,并在2015年ImageNet比赛分类任务中获得第一名,ResNet的特点在于具有比以前的网络更深的结构和更好的性能。从深度学习的历史我们知道,VGG证实了网络深度的增加一定程度上能提升模型表达能力,凭着这一点,CNN分类网络自Alexnet的7层发展到了VGG的16、19层,Googlenet的22层。但是,后来的研究发现,过度加深网络层次不仅使计算更加耗时,还带不来性能的提升,反而使分类准确率下降。我们可以确定这不是overfit造成的(overfit的情况训练集准确率应该很高,实际却不是这样)。这实际是由于梯度消失导致的,梯度反向传播到前一层,重复相乘使梯度越来越小,这样的结果就是,随着网络的层数更深,其性能趋于饱和,甚至开始下降。
何恺明等人于 2015 年发表的论文Deep Residual Learning for Image Recognition中,认为堆叠的层不应该降低网络的性能,因为我们可以简单地在当前网络上堆叠恒等层,使所得到的结构性能不变(因为神经网络很轻松能学习到恒等函数)。这表明,较深的模型所产生的训练误差不应比较浅的模型的误差更高,也就是说加深网络网络导致的效果变差是因为训练过程更难优化而并非深层网络学不到东西。
当下Resnet和基于ResNet思想的其它性能更优的网络已经成为CV领域问题中的基础特征提取网络。

ResNet的结构

ResNet中,为了解决层次加深难以训练的问题,导入了一种跳跃连接的“快捷结构” (shortcut)。导入这个快捷结构后,就可以随着层的加深而不断提高性能了(不过层的加深仍是有限度的)。快捷结构跳过了输入数据的卷积层,将输入 x 合计到输出。

ResNet捷径

(这里的“weight layer”是指卷积层)
在连续2层的卷积层中,将输入x跳着连接至2层后的输出。这里的重点是,通过快捷结构,原来的2层卷积层的输出y=F(x)变成了y=F(x) + x。通过引入这种快捷结构,即使加深层,也能高效地学习。这是因为,通过快捷结构,反向传播时信号可以无衰减地传递,之前因为加深层次而导致的梯度变小的梯度消失问题就有望得到缓解。
如果F(x)x的channel个数不同则采用计算方式:y=F(x)+Wx其中W是1x1的卷积核实现的卷积操作,用来调整x的channel维度的。
Residual指的是什么
ResNet提出了两种mapping:一种是identity mapping,identity mapping顾名思义,就是指本身,也就是公式中的x,而residual mapping指的是“差”,也就是y−x,所以残差指的就是F(x)部分。
为什么ResNet可以解决“随着网络加深,准确率不下降”的问题
这是因为如果网络已经到达最优,继续加深网络,residual mapping将被训练为0,只剩下identity mapping,这样理论上网络一直处于最优状态。
不过真正在使用的ResNet快捷结构时并不是这么单一,原论文中就提出了两种方式:

快捷结构的方式

这两种结构分别针对ResNet34(左图)和ResNet50/101/152(右图),结构称为”building block“。其中右图的设计又称为”bottleneck design”,目的是为了降低参数的数目,方式是通过1x1的卷积核来完成通道的升维和降维。对于左图的方式,可以用于层数比较少的网络如34中,而Bottleneck Design的方式通常用于更深的如101这样的网络中以减少网络中参数数量。
残差网络结构与朴素网络结构

残差网络结构和朴素结构的对比

为了表明残差网络的有效性,原文使用了三种网络进行测试。其一为VGG19网络(这是VGG paper中最深的亦是最有效的一种网络结构),其二为继续加深层次而形成的另一种VGG网络,它共有34个含参层,最后一个则是在第二种网络中增加跳跃连接后对应的Resnet网络。

实验结果

根据实验的结果,可看出残差网络能够在网络层次增加的情况下维持不错的准确率增长,有效地避免了VGG网络中层数增加到一定程度,模型准确度不升反降的问题。
而且实验证实了即便加深到150层以上,ResNet识别精度也会持续提高。并且,在ILSVRC大赛中,ResNet的top5错误识别率仅为3.5%,令人称奇。

上一篇 下一篇

猜你喜欢

热点阅读