Training and investigating Residual Nets

Training and investigating Residual Nets

Introduction

ResNet的核心想法是很简单明了的。本质上是使用一个标准的前向卷积网络,然后加入跳跃连接来绕过一些卷积层。每次捷连都是一个残差模块,卷积层本质上是预测一个残差然后加到模块的输入上。
残差模块的图示如下:
在这里插入图片描述
深度前向卷积网络受困于优化的难度。当网络超过一定的深度,加入额外的层会导致更高的train error和更高的val error,即使使用了BN。ResNet的作者讨论说欠拟合不太可能是由于梯度消失引起的,因为已经加入了BN了。残差网络结构是通过添加捷连来解决这个问题的。

Ablation studies (on CIFAR-10)

Effects of model depth. 原文图6简单地就网络深度进行了一系列实验,我们也在CIFAR-10上进行了基本的复现,结果与原文相似。
在这里插入图片描述

Residual block architecture.
在这里插入图片描述
在我们基本复现了原文结果后,我们开始思考略微不同的残差模块的影响,例如:

  • 将BN放在addition之后会不会更好? 如果BN放在addition之后,那么它会norm整个模块的输出。这个可能是有益的。但是,这会强制使每个捷连来对输出进行扰动。这就会有问题:在很多信息流通道里,数据会在没有任何处理的情况下经过多个连续的BN层。每个BN层会对该层的数据分布进行distortion,这会搅和原始输入。这对于模型来说会引入有害的影响:就实验结果而言,将BN放在addition之后会严重影响在CIFAR上的test error。
  • 上述结果告诉我们非常重要的一点就是,避免改变恒等连接中的数据流。对于这个原则我们再向前探究一步:残差模块最后的ReLU层可以去掉吗? ReLU层其实也对恒等映射的数据流进行了扰动,但是不同于BN,ReLU有幂等性,也就是不管数据经过多少个ReLU都和经过一个ReLU的结果一样。当我们移除模块最后的ReLU,我们发现了在test的表现上有了少许提升。但是,这个效果是很细微的,需要更多后续的探究。
    在这里插入图片描述

Alternate optimizers. 在尝试调整超参的时候,通常会尝试使用更加fancy的优化方法取代替带momentum的SGD。带有细微假设的更加复杂的优化方法,虽然可以加快训练,但是对于训练如此深的网络来说还是很有难度的。在实验中我们使用了RMSprop,Adadelta和Adagrad来与原文中使用的SGD+momentum进行对比。往往更加复杂的优化方法会在一开始更快的收敛,但是到最后SGD+momentum会比第二好的优化方法取得还低0.7%的test error。
在这里插入图片描述

SolverTesting error
Nsize=18, Original parper:Nesterov,1e-10.0697
Nsize=18, Best RMSprop (LR 1e-2)0.0768
Nsize=18, Adadelta0.0888
Nsize=18, Best Adagrad (LR 1e-1)0.1145
Training at a larger scale: ImageNet

我们在ImageNet分类数据集上,我们训练了ResNet 18,34,50和101。值得注意的是,我们使用不同的data augmentation方法得到了比原文更高的准确率。
我们使用了论文"Going Deeper with Convolutions"(GoogleNet)中的scale和aspect ratio的增广方法而不是原文中的。在ResNet-34中,top-1 error提高了1.2%。还使用了"Some Improvements on Deep Convolutional Neural Network Based Image Classification"中的颜色增广,但是效果很微小。

Model changes

我们将BN层从模块的最后一层卷积之后移到了addition之后。我们也实验了将步长2的下采样从瓶颈模块的第一个1x1卷积移动到了3x3卷积(ResNet-50和ResNet-101)。

ModelBatch NormStride-two layerTop-1 single-crop err(%)
ResNet-18after conv3x330.6
ResNet-18after add3x330.4
ResNet-34after conv3x326.9
ResNet-34after add3x327.0
ResNet-50after conv3x324.5
ResNet-50after add1x124.5
ResNet-50after add3x324.2
Conclusion

本篇博客在ResNet的基础上对于模型选择,优化方法以及工程优化进行了一系列的探索。该篇的结果略优于ResNet原文,他们开放了训练代码和预训练模型,很多后续使用ResNet的文章都使用了本篇的实现。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值