目录
论文阅读与视频学习
ResNet
论文阅读
Deep Residual Learning for Image Recognition,CVPR2016
在深度神经网络中存在网络模型难以训练的问题,该论文提出了残差块来解决此问题。
网络的深度对于网络模型的效果来说非常重要,但是当更深的网络模型开始收敛时,产生退化问题,即随着深度增加,准确率达到饱和后下降。
在一个合适的深度模型上增加层数,会使得错误率提升。
此文通过利用残差学习来解决退化问题,对于每一组堆叠的若干层,无需直接拟合期望的底层映射H(x),而是让这些堆叠的分线性层去拟合F(x)=H(x)-x,则H(x)=F(x)+x。
在本文的残差网络结构层中,通过shortcut直接把输入x传到输出作为初始结果,输出结果为H(x)=F(x)+x,当F(x)=0时,H(x)=x,也就是上边的恒等映射,于是ResNet相当于改变学习目标,学习所谓的残差F(x)=H(x)-x,后边的训练目标是将残差结果逼近于0,使随着网络加深,准确率不下降。
如果添加额外的层可以构造恒等映射,那么更深的模型的training error应该不大于浅的模型,退化问题表明求解器难以利用多个非线性层逼近恒等映射,但是利用残差学习,求解器可以通过将多个非线性层的权值趋近于0来逼近恒等映射。
论文中一个残差块定义如下:
x和y分别为残差块的输入和输出向量,函数F(x, {Wi})代表要学习的残差映射,公式(1)中的F和x的维度必须相同,如果不同的话,可以用一个额外的矩阵Ws与x相乘,以匹配F的维度:
网络架构:
Plain Network是基于VGG来进行设计的,卷积核大小几乎都是3×3大小,对于每一个输出特征图大小相同的卷积层,其卷积核数目相同,每当输出特征图大小减半时,该卷积层卷积核数目增加为原来的二倍。
Residual Network是在Plain Network的基础上增加残差结构,这里有实线和虚线两种方式,实线表示的情况是该在经过主分支后的输出特征矩阵的大小和channel与block输入矩阵相同,可以直接相加,直接进行跳转,虚线表示的是主分支的输出特征矩阵大小或channel与该block的输入矩阵不同,所以需要0作为padding进行填充或者利用Ws映射即利用大小为1×1的卷积和适当的stride来对原始输入矩阵进行调节,使其形状与主分支输出的特征矩阵相同。
通过实验证明Residual Network相较于Plain Network可以更好的解决退化问题,因为在Plain Network使用了BN,所以可以证明退化问题不是因为梯度消失引起的,而可能是因为收敛速度低而导致难以优化。在对跳接方式进行实验时,可以发现对所有跳接都使用Ws映射的效果要优于使用0作为padding填充和仅维度增加时使用Ws映射的效果。