论文地址:https://arxiv.org/abs/1512.03385
摘要
重新定义了网络的学习方式
让网络直接学习输入信息与输出信息的差异(即残差)
比赛第一名
1 介绍
不同级别的特征可以通过网络堆叠的方式来进行丰富
梯度爆炸、梯度消失解决办法:1.网络参数的初始标准化2.网络中间层的标准化(BN)
退化的解决办法:残差模块shortcut可以跳过一层或者多次来进行实现恒等映射,且没有增加额外的参数,也没有增加计算的复杂度ResNet复杂度比VGG-16要低
2 相关工作
residual representations:shortcut connections:不带门功能
3 深度残差学习
3.1 残差学习残差函数 F(x)=H(x)-x很难将非线性的层训练成恒等映射但是在残差的框架下,如果恒等映射是最优的结果,那么网络只需要让新增加的非线性层的权重变为0,即可达到拟合恒等映射的目的。在实际的例子中,恒等映射或许不是最优的结果,但是却有助于解决训练退化的问题。(至少不会变差)
3.2 shortcut实现identity mapping
y=F(x,{Wi})+x解决x和F(x)维度不一样的问题:y=F(x,{Wi})+Ws*x (这种方法叫投影映射,会带来额外的参数和计算量)
3.3 网络结构
普通网络:残差网络:维度增加:(A) 新增的维度用0代替(zero-padding)(B) 线性投影(通过1x1卷积实现,会带来额外的参数和计算量)尺寸不一致:使用stridr=2的卷积来让他们统一。(下采样的一种,会带来额外的参数和计算量)
3.4 部署
在卷积和激活之间添加了BN(方差偏移)SGD优化器mini-batch size=256learning rate=0.1( The learning rate starts from 0.1 and is divided by 10 when the error plateaus)momentum=0.9没有使用dropout(与BN不兼容)
4 实验
4.1 ImageNet分类
训练集:128万验证集:5万测试:10万普通网络:观测到训练退化的问题:34层网络比18层网络有更高的训练误差这种退化现象不太可能是由梯度消失引起的:因为BN的使用,所以前向传播的过程中不会出现0方差的问题因为BN的使用,反向传播的过程中所展示出现的梯度也是健康的猜测是由于更深的普通网络就是有指数级的更低的收敛速度。(有待验证)残差网络:18层 34层对应增加的维度,使用0进行填充(方案A),所以相对于普通网络,没有增加新的参数发现:32层残差网络展示了相当低的训练误差,并且可以泛化到验证集说明:残差网络结构可以解决退化问题恒等映射VS投影映射:投影映射并不能在本质上解决退化的问题,而且引入了新的参数。所以为了减少内存使用,时间的复杂度和模型的大小,选择主要使用恒等映射(parameter-free),维度增加时,使用0进行填充。更深的瓶颈结构:无参数的恒等映射对应瓶颈结构来说尤其重要,轻量化。50层残差结构:101层和152层残差结构:和其他先进的方法比:
4.2 CIFAR-10数据集测试和分析
层响应分析开发大于1000层的网络
4.3 在PASCAL和MS coco上的目标检测
在其他的识别任务上也有很好的泛化能力。比赛第一名