论文研读笔记(五)—ResNet

论文研读系列汇总:

1.AlexNet论文研读

2.VGG论文研读

3.GoogLeNet论文研读

4.Faster RCNN论文研读

5.ResNet 论文研读

6.SENet 论文研读

7.CTPN 论文研读

8.CRNN 论文研读

 

论文基本信息:

论文题目:

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里的快捷分支。所以残差学习块并非师出无名。

论文研读笔记(五)—ResNet

 

深度残差学习:

如上图所示,上面算法的等式为:

y=F(x,wi)+x

这里的x是直接加到中间层里的残差块。当恒等映射(即之前的层)最优时,训练参数权重时,会把F(x,wi)里的wi推向0来实现。这样做既没有引入外部参数,也没有增加计算复杂度。

残差块使用方法:

论文研读笔记(五)—ResNet

 

如图所示,我们可以清楚的”实线“和”虚线“两种连接方式,

实线的的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

还有一点就是,随着网络深度的不断加深,作者用实验证明,更深的网络,各权重参数越小。当层数增加,单层的ResNet趋向于更少的修改信息。(这其实也是很好理解的,随着提取特征的不断抽象,同一个网络里层数越高能提取的信息越少。而层数越深的网络,提取信息的速度可以越慢,比浅层网络模型修改模型权重的更小)而由公式得,当不需要后一层时,只需要权重w值趋向于零即可,故残差块再深也能比浅层模型获得更好的精确度收益。

 

 

 

 

 

 

参考链接:

https://blog.csdn.net/lanran2/article/details/79057994