赞
踩
Deep Residual Learning for Image Recognition(ResNet)
用于图像识别的深度残差学习
摘要
由于越深的神经网络训练起来越来困难,所以本文提出了一种残差学习框架,用于简化网络层次比较深的模型。这个ResNet框架使得网络层次可能根据输入来学习残差函数而非原始函数(unreferenced functions),本文已经证明,这些残差网络的优化更加简单,并且可以是的更深的层来获得更高的准确率,这些残差组合模型在ImageNet测试集上的错误率仅3.57%,这个结果在2015年的ILSVRC分类任务上获得了第一名的成绩。
一、introduction
1、随着网络越来越深,梯度就会出现爆炸或者消失。
解决的办法:
2、深入讲述深度增加之后精度也会变差
图1
如图1所示:要学的东西叫做H(x)(红色),假设现在已经有了一个浅的神经网络(蓝色),它的输出是x,然后要在这个浅的神经网络上面再新加一些层,让它变得更深。新加的那些层不要直接去学H(x),而是应该去学H(x)-x,x是原始的浅层神经网络已经学到的一些东西,新加的层不要重新去学习,而是去学习学到的东西和真实的东西之间的残差,最后整个神经网络的输出等价于浅层神经网络的输出x和新加的神经网络学习残差的输出之和,将优化目标从H(x)转变成为了H(x)-x。这样的好处是:只是加了一个东西进来,没有任何可以学的参数,不会增加任何的模型复杂度,也不会使计算变得更加复杂,而且这个网络跟之前一样,也是可以训练的,没有任何改变。
解释:什么是残差????
ResNet提出了两种mapping:
一种是identity mapping,指的就是图1中”弯弯的曲线”,
另一种residual mapping,指的就是除了”弯弯的曲线“那部分,所以最后的输出是 y=F(x)+x
二、相关工作(relateed work)
1、残差连接如何处理输入和输出的形状是不同的情况:
2、implementation中讲了实验的一些细节
把短边随机的采样到256和480
使用了颜色的增强(AlexNet上用的是PCA,现在我们所使用的是比较简单的RGB上面的,调节各个地方的亮度、饱和度等)类似PS的工作批量大小是56,学习率是0.1,然后每一次当错误率比较平的时候除以10。
模型训练了60*10^4个批量
在测试的时候使用了标准的10个crop-testing(给定一张测试图片,会在里面随机的或者是按照一定规则的去采样10个图片出来,然后再每个子图上面做预测,最后将结果做平均)
图二
三、Experiments
图三
怎样构建更深的ResNet
图六
图七
在整个残差连接,如果后面新加上的层不能让模型变得更好的时候,因为有残差连接的存在,新加的那些层应该是不会学到任何东西,应该都是靠近0的,这样就等价于就算是训练了1000层的ResNet,但是可能就前100层有用,后面的900层基本上因为没有什么东西可以学的,基本上就不会动了。
mAP:目标检测上最常见的一个精度,锚框的平均精度,越高越好
为什么ResNet训练起来比较快?
因为梯度上保持的比较好,新加一些层的话,加的层越多,梯度的乘法就越多,因为梯度比较小,一般是在0附近的高斯分布,所以就会导致在很深的时候就会比较小(梯度消失)。虽然batch normalization或者其他东西能够对这种状况进行改善,但是实际上相对来说还是比较小,但是如果加了一个ResNet的话,它的好处就是在原有的基础上加上了浅层网络的梯度,深层的网络梯度很小没有关系,浅层网络可以进行训练,变成了加法,一个小的数加上一个大的数,相对来说梯度还是会比较大的。也就是说,不管后面新加的层数有多少,前面浅层网络的梯度始终是有用的,这就是从误差反向传播的角度来解释为什么训练的比较快。
参考链接
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。