Deep Residual Learning for Image Recognition
1.背景
深度学习发展过程中最有名的一个问题就是反向传播过程中梯度消失或爆炸的问题(往前回传梯度越来越小,导致前层参数不更新)。
但是目前也已经通过标准化输入(Normalized Initialization)以及中间层标准化(Batch Normalization),采用随机梯度下降解决了该问题。
虽然解决了梯度消失或爆炸的问题,但是作者通过实验发现了新问题,由经验来说网络越深,特征表示应该越好,学习效果应该越好。通过20层和56层网络的表现来看,网络越深train和test反而都很差,所以这个问题并不是由于过拟合而发生的退化。
图片取自论文原文作者提出假设:这个问题是一个优化问题,越深的模型越难优化,起码56层模型应该能和20层模型表现一样好,只需要56层模型的前20层和20层模型的参数一样,后面的网络层参数只执行一个恒等映射把x映射为x的策略就可以表现和20层模型效果一样好。
2.残差学习
作者基于恒等映射的思路提出了残差学习框架以解决退化问题。假设当前层输入为x,通过网络层之后映射为H(x),现在不直接学习映射为H(x)的权重,通过一个快捷连接把映射后的结果F(x)和输入x相加做为输出的H(x),这样学习的F(x)=H(x)-x,只需要学习一个残差即可与直接学习H(x)的映射参数达到一样的效果。只要F(x)趋近于0,就构成了一个映射H(x) = x. 把残差推至0和把此映射逼近另一个非线性层相比要容易的多。
图片取自论文原文作者在ImageNet数据集上做了很多实验来证实退化问题,并且基于残差学习的框架,评估自己的方法。发现很深的残差网络也是容易优化的,而且可以享受深度增加带来的精度增加,成功地解决了层数增加时的退化问题。
3.相关的工作
残差表示(Residual Representations):
在图像识别任务中,VLAD是基于词典的残差向量进行编码,被证明比编码原始向量效果更好。
在低级视觉和计算机图形学中,求解偏微分方程(PDE),通常是使用多重网格(Multigrid)法,把系统重建成多尺度的子问题,每个子问题负责求解出粗糙与精细尺度之间的残差,除此之外,另一种求解PDE的方法是基于表达两个尺度之间残差的向量进行的。结果证明了这些用残差的解法收敛速度都比不用残差的普通解法要快的多。
快捷连接(Shortcut Connections):
快捷连接相关的实验和理论由来已久。。在多层感知器网络的早期实践中就有添加少量的连接层用于解决梯度消失/爆炸的问题。
Highway networks也使用了带有门函数(gating functions)的快捷连接。但是这些门函数需要参数,而ResNet的快捷连接不需要参数。而且当Highway networks的门函数的快捷连接关闭时,相当于没有了残差函数,但是ResNet的快捷连接一直不会关闭,残差函数能不断学习,优化,当层数增加后ResNet的表现效果也很好。
4.两种恒等映射
自身连接:当输入输出维度一致时,构造块可这样定义:
简书不能敲数学公式差评,取自论文原文投影连接:当输入输出维度不一致时,可以对输入进行一个线性投影来匹配维度,构造块可这样定义:
5.网络结构
设计原则:
对于输出feature map大小相同的层,有相同数量的filters;
进行pooling操作后,filters数量翻倍;
维度匹配用实线表示,维度不匹配用虚线表示。维度不匹配时,可用zero padding来增加维度;或者乘以投影矩阵。
减少了FC全连接层,参数比VGG-Net少了很多,计算复杂度也降低了很多。
实现:
采用BN,大小为256的mini-batch进行随机梯度下降,学习率0.1,并进行范围搜索,迭代了600000次,权重衰减指数为0.0001,动量系数为0.9,没有使用dropout。
左图是标准的VGG19Net,中间是作者设计的plain-Net,右图是作者改进之后的residual-Net,在此结构上作者进行的实验对比6.更深的瓶颈结构
使用与GoogleNet相似的瓶颈层来提升效率。结合自己的理解举个例子说明一下(有错误的话请指正)。假如input为28*28*256,使用三层连接块的话,先用64个1*1*256的filters进行卷积降维,然后只用一个3*3的filter,最后用256个1*1*64的filters进行升维。
两种设计具有相似的时间复杂度,如果把自身连接换成投影连接,时间复杂度和模型尺寸都会翻倍,瓶颈设计可以为自身连接带来更高的效率。
左图是二层结构,右图是三层结构,取自论文原文7.想法
从AlexNet,VGGNet,GoogleNet,ResNet一些列进步可以看出认清问题并敢于尝试可能的解决办法才是进步的源泉,这个领域的实验当然离不开硬件设备的支持,否则都无法进行实验。虽然目前没有很好的理论来解释深度学习,但是可以不断通过实验结果来反馈算法细节的可行性,这个领域还有很大的空间去进行创新。
参考资料:
文章地址:《Deep Residual Learning for Image Recognition》 arXiv.1512.03385
CS231n的课程视频关于Resnet的一节 https://www.bilibili.com/video/av17204303/index_20.html?t=3629
网友评论