论文笔记:ResNet v2

ResNet v2

1、四个问题

  1. 要解决什么问题?
    • 进一步提高ResNet的性能。
    • 解释为何Identity mapping(恒等映射)的效果会比较好。
  2. 用了什么方法解决?
    • 提出了一个新的残差单元结构。
    • 从理论和实验上分析了identity mapping的有效性。
  3. 效果如何?
    • 使用1001层的ResNet,在CIFAR-10数据集上错误率为4.62%,在CIFAR-100数据集上错误率为22.71%。都是目前最好的结果。
    • ImageNet 2012数据集上,top-1错误率为20.1%,top-5错误率为4.8%,超过Inception v3,也是最优结果。
  4. 还存在什么问题?
    • ResNet模型可以有极深的深度,更强大的学习能力,同时也会带来更多的参数,更大的计算量,如何对其进行压缩,降低计算成本也是个需要考虑的问题。

2、论文概述

2.1、简介

在这里插入图片描述

  • 上式是原始残差单元,公式参数说明:
    • x l x_l xl x l + 1 x_{l+1} xl+1分别是第 l l l层网络的输入和输出。
    • F F F表示残差函数。
    • h ( x l ) = x l h(x_l) = x_l h(xl)=xl表示恒等映射(identity mapping)。
    • f f f表示ReLU函数。
    • 后面默认认为 h ( x l ) = x l h(x_l) = x_l h(xl)=xl f ( y l ) = y l f(y_l) = y_l f(yl)=yl

在这里插入图片描述

  • 原始残差单元结构如a图所示,改进的残差单元结构如b图所示。
  • 为了理解跳跃连接(skip connection)的作用,作者实验了各种不同的 h ( x ) h(x) h(x)(identity mapping),即图中的灰色线部分。最终的实验结果表明,保持一个clean information path有助于提升效果。
  • 提出了预激活(pre-activation)和后激活(post-activation)。
    • 预激活:bn -> relu -> conv
    • 后激活:conv -> bn -> relu
  • 在新的残差结构中改进如下:
    1. 将激活函数放到旁路,从shortcut中移除,保证clean information path。
    2. 旁路中的结构从 conv-bn-relu(后激活) 转换为 bn-relu-conv(预激活)。

2.2、关于深度残差网络结构的分析

  • 原始残差单元的数学表示,符号意义不做赘述。

在这里插入图片描述

  • 假设 h ( x l ) = x l h(x_l) = x_l h(xl)=xl(恒等映射), f ( y l ) = y l f(y_l) = y_l f(yl)=yl(激活函数也是一个恒等映射)。

在这里插入图片描述

  • 循环套用 x l + 2 = x l + 1 + F ( x l + 1 , W l + 1 ) = x l + F ( x l , W l ) + F ( x l + 1 , W l + 1 ) x_{l+2} = x_{l+1} + F(x_{l+1}, W_{l+1}) = x_l + F(x_l, W_l) + F(x_{l+1}, W_{l+1}) xl+2=xl+1+F(xl+1,Wl+1)=xl+F(xl,Wl)+F(xl+1,Wl+1),可以得到下式:

在这里插入图片描述

  • 按照链式法则求导:

在这里插入图片描述

  • 公式说明:
    1. ϵ \epsilon ϵ是loss函数值。
    2. 根据链式求导法则,可以求出梯度,如上式所示。
    3. 梯度 ∂ ϵ ∂ x l \frac{\partial \epsilon}{\partial x_l} xlϵ可以拆分成两部分:对于第 L L L层的梯度, ∂ ϵ ∂ x L \frac{\partial \epsilon}{\partial x_L} xLϵ;以及每一层卷积层所拟合的残差函数对应的梯度, ∂ ϵ ∂ x L ∂ ∂ x l ∑ i = l L − 1 F ( x i , W i ) \frac{\partial \epsilon}{\partial x_L} \frac{\partial}{\partial x_l} \sum_{i=l}^{L-1}F(x_i, W_i) xLϵxli=lL1F(xi,Wi)
    4. 对于普通的没有shortcut连接的网络来说,只存在 ∂ ϵ ∂ x L ∂ ∂ x l ∑ i = l L − 1 F ( x i , W i ) \frac{\partial \epsilon}{\partial x_L} \frac{\partial}{\partial x_l} \sum_{i=l}^{L-1}F(x_i, W_i) xLϵxli=lL1F(xi,Wi)这一项,而对于ResNet来说,则额外引入了 ∂ ϵ ∂ x L \frac{\partial \epsilon}{\partial x_L} xLϵ ∂ ϵ ∂ x L \frac{\partial \epsilon}{\partial x_L} xLϵ的存在确保了较深层网络的梯度可以传递到较浅层网络去。
    5. 其实另外还有一点,引入了shortcut还减少了梯度消散的可能性。因为除非 ∂ ϵ ∂ x L ∂ ∂ x l ∑ i = l L − 1 F ( x i , W i ) \frac{\partial \epsilon}{\partial x_L} \frac{\partial}{\partial x_l} \sum_{i=l}^{L-1}F(x_i, W_i) xLϵxli=lL1F(xi,Wi)总是等于-1,梯度才会为0,然而残差函数不太可能全部为-1。
  • 作者还给出了一个反例,说明为何要选择恒等映射。这里就直接贴图了,细节请参考论文。
  • 大致意思是:如果这个 λ i &gt; 1 \lambda_i &gt; 1 λi>1,随着梯度传播会以指数级数增长;如果 λ i &lt; 1 \lambda_i &lt; 1 λi<1,随着梯度传播会以指数级数衰减。只有在 λ i = 1 \lambda_i = 1 λi=1,即恒等映射(identity mapping)的情况下,梯度才可以较好的保持,避免梯度消失和梯度爆炸。

在这里插入图片描述

2.3、实验

2.3.1、验证恒等映射的有效性
  • 作者使用下面的这些结构分别进行了实验,最后发现恒等映射的结果最好,实验结果见table1。

在这里插入图片描述

在这里插入图片描述

2.3.2、验证预激活的有效性
  • 预激活结构和后激活对比实验,从实验结果可以看出预激活的效果是最好的。

在这里插入图片描述

2.3.3、在一些benchmark数据集上的效果
  • CIFAR-10和CIFAR-100

在这里插入图片描述

  • imagenet 2012

在这里插入图片描述

3、参考资料

  1. 原文
  2. 译文
  3. https://zhuanlan.zhihu.com/p/33486357
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值