深度学习论文笔记(残差结构)——Deep Residual Learning for Image Recognition

文章目录

  • 解决的问题
    • 网络“退化”问题
  • 什么是残差结构
  • 残差结构灵感来源
    • 一个假设
    • 灵感来源
  • 如何维持残差结构特征图维度一致

解决的问题

需要注意的是,在何凯明大佬的论文中,并未提及残差结构解决了梯度弥散和梯度爆炸的问题,这个问题已经被BN以及初始化解决了,原论文中只说明了残差结构结构解决了网络深度增加导致的退化问题,并且介绍了残差结构结构的灵感来源,17年有一篇CVPR论文提出了残差结构解决的问题The Shattered Gradients Problem:
If resnets are the answer, then what is the question?,网上有部分文章说ResNet结构解决的是梯度弥散问题,并不靠谱


网络“退化”问题

网络深度的增加可以增强模型的表现能力,但是是不是网络深度越深越好呢?首先深度网络往往会由于梯度弥散或是梯度爆炸导致模型难以收敛,此类问题已经被BN和一系列的初始化方法解决了,上述算法使得深度网络得以收敛,但是随着网络深度的增加,准确率却下降了(不是过拟合)
深度学习论文笔记(残差结构)——Deep Residual Learning for Image Recognition_第1张图片
这篇论文通过残差结构解决了上述这种由于网络深度增加导致的退化问题,使得深层网络的表现优于浅层网络


什么是残差结构

如下图
深度学习论文笔记(残差结构)——Deep Residual Learning for Image Recognition_第2张图片
其实就是将底层的特征图与高层的特征图直接相加,假设F(x)与x的维度相同,如果不相同,则引入额外的线性投影W,此时模块变为F(x)+Wx,W用于匹配维度。


残差结构灵感来源

在介绍灵感来源前,先介绍一个假设

一个假设

假设多个非线性层直接连接形成的stack可以渐近逼近复杂函数H(x),那么应该也可以渐近逼近复杂函数H(x)-x,此时多个非线性层只需要拟合函数F(x)=H(x)-x,则这多个非线性层的输出为F(x)+x,即残差结构,这部分假设非线性层直接连接具有此种拟合效果,否则的话,残差结构就没用啦,后面会通过实验对此进行验证。

灵感来源

我们希望深层网络的表现不俗于浅层网络,该怎么做呢?假设浅层网络的输出为x,对浅层网络添加的层是直接映射层,即H(x)=x,那么深层网络的表现将完全等同于浅层网络,退化问题表明,假设浅层网络的输出x是最优的,新添加的多层可能很难拟合直接映射,通过残差结构,即H(x)=F(x)+x,假设浅层网络的输出x是最优的,那么只需要将F(x)置为0即可(一定可以做到),假设浅层网络不是最优的,可以通过新添加的层学习新的函数,进一步逼近真实的最优函数,这样一来,深层网络的表现能力应该不低于浅层网络,作者最终通过实验证明了这点


如何维持残差结构特征图维度一致

如何保证channel一致
方法一:采用1X1卷积,例如相加的两层特征图A、B的channel数目分别为64,128,则用1X1X128的卷积作用于A,即得到128张特征图,步伐数目自定义,看过的论文中,有定义为1的(ResNet50),也有为2的(Xception),定义为2主要用于保证特征图的空间分辨率一致

方法二:通过0填充补充多余的channel,例如相加的两层特征图A、B的channel数目分别为64,128,则A多出64张值全为零的特征图

如何保证空间分辨率一致
一般来说,进行卷积的时候,都是采用stride=1,padding=same的卷积,此时卷积前后空间分辨率是一致的,如果真的不一致,可以采用1X1的卷积进行调整,亦或是填充0

你可能感兴趣的:(深度学习)