论文研读笔记(五)—ResNet
论文研读系列汇总:
论文基本信息:
论文题目:
Deep Residual Learning for Image Recognition
作者:
Kaiming He Xiangyu Zhang Shaoqing Ren Jian Sun
(膜一下,恺明大佬)
原文地址:
https://arxiv.org/pdf/1512.03385.pdf
论文研读:
摘要:
作者提出了一种残差学习框架来解决网络训练深度无法过深的问题。方法是将层变成学习关于层输入的残差函数(就是他加了个残差块在一个卷积层里),而不是学习未参考的函数(而这个残差块其实就是前面某层的输入,有点想该层的函数参考了前面某层的函数)
引言:
很多研究者都在网络深度的加深上做文章(VGG,GoogLeNet等),有一个障碍就是梯度消失和梯度爆炸问题。这个问题通过标准初始化,中间标准化在很大程度上解决了。这使反向传播的梯度下降开始收敛。
然而更深的时候,网络的深度增加无法带来更多的精确度收益。(paper称之为退化)。本paper认为较深的模型不应该产生比较浅模型更高的误差(卷积堆的越多,能识别的特征也应该更多啊,所有应该要有更高的准确度)。于是作者引入了残差学习框架。
相关工作:
以前的时候,有一些模型的中间层直接连接到辅助分类器,用于解决梯度消失问题,(应该指的就是GoogLeNet,文中说中间层对一些特征的精确度比更深层高,所以取辅助分类器的值加0.3权重放到最终结果里)。这个辅助分类器也可以算paper里的快捷分支。所以残差学习块并非师出无名。
深度残差学习:
如上图所示,上面算法的等式为:
y=F(x,wi)+x
这里的x是直接加到中间层里的残差块。当恒等映射(即之前的层)最优时,训练参数权重时,会把F(x,wi)里的wi推向0来实现。这样做既没有引入外部参数,也没有增加计算复杂度。
残差块使用方法:
如图所示,我们可以清楚的”实线“和”虚线“两种连接方式,
实线的的Connection部分(”第一个粉色矩形和第三个粉色矩形“)都是执行3x3x64的卷积,他们的channel个数一致,所以采用计算方式:
y=F(x)+x
虚线的的Connection部分(”第一个绿色矩形和第三个绿色矩形“)分别是3x3x64和3x3x128的卷积操作,他们的channel个数不同(64和128),所以采用计算方式:
y=F(x)+Wx
(因为卷积会改变通道数,卷积个数也不一定一样,所以残差函数的出现,很有可能会有x与F(x)的维度数不同)
当维度数不同时,会通过增加一个w的权重来匹配维度。
实验:
paper中设计的三层残差,是为了瓶颈设计(把这个形象化的认为)。1*1卷积为了减小维度(图中是把通道数缩小成64再扩大回256,右图),然后进行3*3卷积,然后再通过1*1卷积恢复维度。这样3*3卷积就成了有较小输入输出的瓶颈,对于残差块而言更有效。
还有一点就是,随着网络深度的不断加深,作者用实验证明,更深的网络,各权重参数越小。当层数增加,单层的ResNet趋向于更少的修改信息。(这其实也是很好理解的,随着提取特征的不断抽象,同一个网络里层数越高能提取的信息越少。而层数越深的网络,提取信息的速度可以越慢,比浅层网络模型修改模型权重的更小)而由公式得,当不需要后一层时,只需要权重w值趋向于零即可,故残差块再深也能比浅层模型获得更好的精确度收益。
参考链接:
https://blog.csdn.net/lanran2/article/details/79057994