解密ResNet:Identity Mappings in Deep Residual Networks论文笔记

论文地址:Identity Mappings in Deep Residual Networks

在上一篇文章中,对MSRA何凯明团队的ResNet进行了介绍(地址),那篇文章中提到了,1202层的ResNet出现了过拟合的问题,有待进一步改进。第二年,何的团队就发表了“Identity Mappings in Deep Residual Networks”这篇文章,分析了ResNet成功的关键因素——residual block背后的算法,并对residual block以及after-addition activation进行改进,通过一系列的ablation experiments验证了,在residual block和after-addition activation上都使用identity mapping(恒等映射)时,能对模型训练产生很好的效果,通过这项改进,也成功的训练出了具有很好效果的ResNet-1001。

在原始的ResNet中,对于每一个residual building block: 
这里写图片描述 
可以表现为以下形式: 

yl=h(xl)+F(xl,Wl),xl+1=f(yl),

其中 h(xl) 为一个恒等映射, f(yl) 代表ReLU激活函数。

而本文提出了,如果h(x)和f(y)都是恒等映射,即 h(xl)=xl f(yl)=yl ,那么在训练的前向和反向传播阶段,信号可以直接从一个单元传递到另外一个单元,是训练变得更加简单。 
即上面的公式可以表达为: 

xl+1=xl+F(xl,Wl)

那么通过递归,可以得到任意深层单元L特征的表达: 
xL=xl+i=lL1F(xi,Wi),

文章分析了这个表达的优良特性: 
(1)对于任意深的单元 L 的特征  xL  可以表达为浅层单元 l  的特征  xl 加上一个形如  L1i=lF 的残差函数,这表明了任意单元 L l 之间都具有残差特性。 
(2)对于任意深的单元 L ,它的特征  xL=x0+L1i=0F(xi,Wi) ,即为之前所有残差函数输出的总和(加上 x0 )。而正好相反的是,“plain network”中的特征 xL 是一系列矩阵向量的乘积,也就是 L1i=0Wix0 ,而求和的计算量远远小于求积的计算量。

而对于反向传播,假设损失函数为 E ,根据反向传播的链式法则可以得到: 
这里写图片描述 
将梯度分成了两个部分:不通过权重层的传递这里写图片描述和通过权重层的传递这里写图片描述。其中这里写图片描述保证了信号能够直接传回到任意浅层 xl ,同时这个公式也保证了不会出现梯度消失的现象,因为这里写图片描述不可能为-1。

通过了以上分析,作者设计实验来进行验证。

首先,对于恒等跳跃连接 h(xl)=xl ,作者设计了constant scaling、exclusive gating、short-only gating、1*1 conv shortcut以及dropout shortcut来替代 h(xl)=xl ,如下图,经过实验发现, h(xl)=xl 的误差衰减最快、误差也最低,而其他形式的都产生了较大的损失和误差。 
这里写图片描述 
这里写图片描述

作者认为,捷径连接中的操作 (缩放、门控、1 × 1 的卷积以及 dropout) 会阻碍信息的传递,以致于对优化造成困难。 
而且虽然1 × 1的卷积捷径连接引入了更多的参数,本应该比恒等捷径连接具有更加强大的表达能力。但是它的效果并不好,这表明了这些模型退化问题的原因是优化问题,而不是表达能力的问题。

接下来,对于激活函数,作者设计了以下几种形式: 
这里写图片描述 
实际上只是激活函数(ReLU/BN)的位置有所不同,由于作者希望构建一个恒等的 f(yl)=yl ,将激活项分为了预激活(pre-activation)和后激活(post-activation)。实验发现,将ReLU和BN都放在预激活中,即full pre-activation在ResNet-110和ResNet-164上的效果都最好。 
这里写图片描述 
甚至在1001层的ResNet上也克服了过拟合的问题: 
这里写图片描述 
作者认为这是由两方面引起的:第一,由于 f 也是恒等映射,优化变得更加简单(与原始ResNet相比)。第二,在预激活中使用BN能够提高模型的正则化,从而减少了过拟合的影响。

这篇文章为深层模型的训练提供了很好的方式和思路,也促进了深层模型的进一步发展,接下来我将会把这篇文章的译文提供给大家,也欢迎大家的批评指正。

猜你喜欢

转载自blog.csdn.net/woddle/article/details/78855737