ResNet----论文笔记

这篇论文,一个主要的目的就是把网络变深,变得更深。因此有了残差连接的诞生。

从两个方面记录笔记:为什么会用残差连接,什么是残差学习。

为什么会用残差连接

作者提出一个网络训练过程中出现的问题,叫做“degradation”。

      训练过程中,梯度消失/爆炸问题已经解决了,通过精心的初始化以及加上batch normalization层,可以用SGD优化算法训练。但是随着层数的增加,准确率会达到饱和,甚至会降低。通过训练分析,这并不是过拟合造成的,因为训练的误差也会增加(如果是过拟合,训练误差应该继续降低,测试误差会增加),那么这个就叫做“degradation”。

       基于此,作者提出“deep residual learning framework”来解决这个问题。

什么是残差学习

       提前思考这么一个问题,一个深度网络A,在A后面加上几层非线性层变成B,那么B的效果应该不会比A差,因为理论上,A的解空间应该是B解空间的一个子集。只需要B后面新加的几层是一个identity mapping(恒等变换),那么B的结果就是A的结果,但是现在B的精度比A差,则得出一个结论:几层非线性层无法优化成一个恒等变换。

       几个非线性层优化为0相对优化为一个恒等变换简单的多。因此看下图(过滤掉我的PS技术)

ResNet----论文笔记

假设网络层关系应该是H(x),把 H(x) 分解为 F(x)+x,这样让几个非线性层去拟合 F(x) 即残差函数 H(x) - x,假如H(x) 只是一个恒等变换即 H(x) = x,那么 F(x) 只需要去拟合0即可,简单很多。这就是残差学习。

残差连接注意问题

如果x与F(x)维度一样,则直接相加即可

ResNet----论文笔记

如果x与F(x)维度不一样,有两种方案

第一种,直接填充0,优点就是不会增加额外的参数

第二种,用1*1卷积提升维度,但增加额外的参数学习

ResNet----论文笔记

根据作者的实验结果分析,第二种算法精确度高,但计算资源需求大。


对ResNet的另一个解读

有一篇论文叫做:Residual Networks Behave Like Ensembles of Relatively Shallow Networks,这是从另一个角度解读ResNet,从论文名字也可以看出,作者认为ResNet就像多个网络的集合,论文中一张图解释的很清楚。

ResNet----论文笔记

有兴趣的大家可以去看原论文,后面我可能也会做笔记。

参考

https://blog.csdn.net/u011534057/article/details/51819968

https://blog.csdn.net/Love_wanling/article/details/64906206