(ResNet v2)Identity Mappings in Deep Residual Networks论文阅读笔记
(ResNet v2)Identity Mappings in Deep Residual Networks论文阅读笔记2016
Abstract
深度残差网络作为一种及其深的网络结构已经取得了很好的准确率和收敛能力。本文中,我们分析了残差building block的传播公式,且表明当使用identity mapping作为跳跃连接以及加上之后的**之后,前向和反向传播信号可以直接从一个block传播到另一个block中。我们做了一系列实验来验证这些identity mapping的重要性。这激励我们提出了一个新的残差单元,可以使得训练更贱大,提升了generalization。我们使用1001层的ResNet在CIFAR-10和CIFAR-100上提升了结果,使用200层ResNet在ImageNet上提升了效果。
1. Introduction
ResNet由许多堆叠的残差单元来组成,每个单元(图1a)可以以一个通用的表达式来表示:
这里xl和是第l个单元的输入和输出,F是残差函数,在ResNet中h(xl) =xl
是identity mapping,f是ReLU函数。
超过100层的ResNet已经取得了SOTA的准确率,在ImageNet和COCO的一些挑战中。ResNet的核心想法是使用identity mapping h(xl) =xl
来学习相对于h(xl)的加性残差函数F,这通过连接一个identity skip connection(shortcut)来实现。
本文中,我们分析了深度残差网络,==聚焦在创造一个direct
的路径来传递信息(不仅是在残差单元之间,同时可以在整个网络之间传播)。我们的推导表明,如果h和f都是identity mapping的话,信号在正向和反向传播的时候就可以直接在unit之间传播。==我们实验表明这样训练会更加容易。
为了理解shortcut的作用,我们分析并比较了不同种类的h(xl),我们发现ResNet中的h(xl) =xl
这种形式取得最快的错误reduction和最低的训练loss,其他的比如scaling、gating、1 * 1卷积的loss和错误率都更高。这些实验表明使用更简洁的path对于优化来说更容易。
构建identity mapping时候,我们把**函数(ReLU和BN)看作前**,与传统的后**相反。这种想法让我们提出了一个新的残差单元设计,如图1b所示。基于这种单元,我们使用1001层ResNet在CIFAR-10/100上取得了与原来ResNet相当的结果,且更容易训练,概括的更好。之后我们又使用200层ResNet在ImageNet上训练,这时原来的模型就开始过拟合了。这些结果表明扩展网络深度方面,还有许多提升空间。
2. Analysis of Deep Residual Networks
原来的ResNet是由许多残差单元堆叠而成,每个单元进行如下计算:
这里xl是第l个残差单元的输入特征。是与第l个残差单元相关联的一系列权重和偏置,K为该残差单元的层数,原ResNet中通常为2或3。F表示残差函数,f函数是在逐元素相加之后的操作,原ResNet中为ReLU,h函数为identity mapping
h(xl) =xl
。
如果f也为identity mapping的话,即xl+1恒等于yl。那么我们可以将上面两个公式组合成:
递归进行,我们可以得到:
对于任意更深层的L和浅层l,公式4有如下优点:
- 任意深层L的特征可以通过任意浅层l加上残差函数和来表示,这相当于模型在任意两个单元L和l都是残差的。
- 任意深层L的特征都是所有前面的残差函数之和。这与“plaine network”相反,那里特征是一系列矩阵向量的积。
公式4同样展现出好的反向传播特性,我们使用链式法则可以得到反向传播过程为:
公式5表示梯度可以分解成两个加法项,第一项没有考虑任何权重层,直接反向传播信息;第二项
在权重层进行反向传播。
保证有信息可以直接回传到任意浅层单元l。公式5同样表明这个梯度值在mini-batch中不太可能消失。因为通常来说
不可能对mini-batch中所有的样本都为-1,因此即使某一层权重非常小,它的梯度也不会消失。
Discussions。
公式4和5表明,无论前向传播还是反向传播,信号可以直接从一个单元传播到另一个单元。公式4中有两个identity mapping,即h和f都是。
这些直接信息传播在图1、2、4中由灰色箭头表示。当这些灰色箭头不包含任何操作(除了加法),h和f就都是identity mapping,因此是clean的。接下来两部分,我们分别研究h和f的影响。
3. On the Importance of Identity Skip Connections
下面我们考虑一种对h的简单修正,打破了identity,h(xl) = λlxl,这样就变为:
这里λ是一个修正尺度,我们仍假设f是identity的,递归应用,我们就得到了与公式4相似的公式:
式子中的F吸收了各个残差单元中的λ长度,我们的反向传播公式如下,与式子5类似:
与式子5不同的是,第一个相加项有一个参数来修正,为λ的乘积和,对于一个非常深的网络(L很大),如果对于所有的i,λ都大于1,这个参数就会非常的大;如果所有i的λ都小于1,这个参数又会非常小甚至消失,这阻断了从shortcuts中传播信号,而强迫从权重层传播,这回导致优化的困难。
上面的分析中,使用简单的尺度来修改h:,如果h使用更复杂的变换(比如gating或1 * 1卷积),那么式子8中的第一项就变成了:
如下面的实验所示,这个乘积会阻碍信息的传播,对训练过程是有害的。
3.1 Experiments on Skip Connections
我们在CIFAR-10上使用110层的ResNet进行实验,这个网络有54个两层的残差单元,比较难优化。本文中我们的实验结果是5次实验取中位数,减少随机变化的影响。
本部分的实验中,f=ReLU,我们将在下一部分探究f的影响。我们的Baseline在测试集上取得6.61%错误率,其他变体的结果对比(图2和表1)总结如下。(所有权重层之后都加了BN)
Constant scaling
我们把所有的shortcut参数设置为λ=0.5(图2b),然后进一步对F也进行一些尺度变换:
- 一种是F不变换尺度
- 另一种是将F变换尺度参数为1-λ = 0.5,这与highway gating相似
前者不能够很好的收敛,后者可以收敛,但是测试错误率(12.35%)比原来的ResNet要高,这表示当shortcut进行尺度改变时,优化比较困难。
Exclusive gating.
我们使用了一个门函数,,使用权重Wg和偏置bg求值,之后使用sigmoid函数
进行处理。在卷积网络中,g(x)使用1 * 1卷积层来实现。这个门函数使用逐元素相乘来调制信号。
**F使用g(x)尺度变换,shortcut被1-g(x)尺度变换,**如图2c。**我们发现偏置bg的设置是至关重要的,我们发现最好的初始bg,是-6,取得了8.70%的错误率,仍然比baseline高。**图3b展示了训练曲线,表1也展示了使用其他初始值的结果,注意到当bg初始不好的时候,网络无法收敛到好的结果。
额外的门函数的影响是双重的。当1-g(x)接近于1,带门的shortcut接近identity,会帮助传播,但是这种情况g(x)接近0,抑制了F。为了分离这种影响,只关注gate对shorcut的影响,我们做了下面的实验。
Shortcut-only gating.
这种情况下,F没有改变尺度,只有shortcut使用1-g(x)改变了尺度,见图2d。这种情况下bg的初值仍然很关键。当bg=0,网络收敛到一个较差的结果(12.86%错误率)。
当初始bg是较大的赋值,比如-6,1-g(x)接近于1,shortcut接近于identity mapping。因此效果更接近baseline。
1 * 1 convolutional shortcut.
接下来我们使用 1 * 1卷积的shortcut来取代identity。这个在原来的ResNet论文中证明有一定作用,但是我们发现当残差单元很多的时候,这种方法效果不好。这种情况取得了12.22%的错误率,且训练错误率也更高。当堆叠了很多残差单元的时候,即使是最短的path也会阻止信号传播。
Dropout shortcut.
最后我们对identity shortcut的输出使用了dropout(0.5概率)。网络无法收敛到一个好的结果。Dopout相当于引入了一个λ=0.5的尺度参数,期望概率0.5,因此与λ常数尺度变换一样,阻碍了信号传播。
3.2 Discussions
如图2中的灰色箭头所示,shortcut连接是信息传播的最直接path。在shortcut上增加操作(scaleing、gating、1 * 1卷积和dropout)会阻碍信息的传播,会导致优化困难。
值得注意的是,gating和1 * 1卷积引入了更多的参数,有比identity的更强的表示能力。实际上,shortcut-only gating和1 * 1卷积包括了identity(即它们可以被优化到identity)。然而,它们的训练错误比identity更高,这表明这两个模型的退化是由优化因素引起的,而不是表示能力的问题。
4. On the Usage of Activation Functions
上面部分的实验支撑了公式5和公式8的分析,都是基于在加法之后进行f**的基础上。下面我们来研究f函数的影响。
我们想要将f置为identity mapping,通过重新安排**函数(ReLU或BN)来完成。原来的残差单元如图4a,BN在每个权重层之后使用,ReLU在BN之后使用,除了残差单元的最后的ReLU是在逐元素相加之后使用。图4(b-e)展示了我们研究的其他方法,接下来进行解释。
4.1 Experiments on Activation
本部分,我们使用ResNet-110和一个164层的Bottleneck(ResNet-164)。Bottleneck的ResNet残差单元包括1 * 1卷积来降低维度,一个3 * 3层和一个1 * 1卷积来恢复维度。它的计算复杂度与两个原来的3 * 3残差单元相当。baseline的ResNet-164在CIFAR-10取得了5.93%的错误率。
BN after addition.
在将f转换为identity之前,我们尝试相反的方法,在addition之后加BN(图4b)。这种情况f就包含了BN和ReLU,结果比baseline差。与原始设计不同,现在BN层改变了通过shortcut的信号,阻止了信息传播,会影响在训练开始的时降低训练loss。
ReLU before addition.
最简单的将f变为identity mapping的方法是把ReLU移到addition之前(图4c)。**然而,这导致了F的输出为非负的,而实际上残差函数应该是(-∞,+∞)的。**这导致了前向传播信号单调递增,可能会影响表示能力,效果比baseline差。
Post-activation or pre-activation?
在原来的设计中,影响下一个残差单元的两个paths:
,下面我们提出非对称的形式,使得**函数f只影响F path:
对于任意l,我们与下面的形式:
很容易看出,公式9与公式4相似,可以得到一个与公式5相似的反向传播公式。**使用这种新的残差单元,addition之后进行**,它就是identity mapping形式。这种设计意味着如果新的after-addition**f^ 是非对称的,等价于将它当作下一个残差单元的pre-activation,**如图5所示:
post-activation/pre-activation之间的区别是由于逐元素相加的存在引起的。对于一个有着N层的plain work,有N-1个**,那么我们不需要考虑前还是后。但是对于addition来说,**的位置就很重要。
我们使用了两种设计进行实验,(i) ReLU-only pre-activation (Fig. 4(d)),和 (ii) full pre-activation (Fig. 4(e)) ,即在权重层之前使用BN+ReLU。表2展示了出前者取得了与baseline相近的效果,由于没使用BN相连,没有享受到BN的好处。
令人有些惊讶的是,当我们使用ReLU+BN时,取得了更好的效果。表3中我们使用了不同的网络结构进行实验,我们发现我们的pre-activation模型均取得了超越baseline的效果。我们下面进行分析。
4.2 Analysis
我们发现pre-activation的影响是双重的。首先,因为f是identity mapping,所以优化被进一步简化了。第二,使用BN可以对模型进行正则化。
Ease of optimization.
当训练1001层ResNet的时候这种影响十分明显,图1展示了曲线,使用原来的设计,训练错误率刚开始降低得很慢。当f = ReLU,如果信号是负的,就被影响了,当有很多残差单元时,这种影响就很大了。另外,当f是identity mapping的时候,信号可以直接在两个单元之间传播,我们的1001层网络也可以很快降低训练loss。
我们同样发现,当层数比较小的时候(图6右),f=ReLU的影响不严重,训练曲线刚开始有点差,之后可以正常进行。通过监视响应我们观察到这是因为在训练一段时间之后,权重调整得更好,使得式子中的yl更大概率是正值,因此f不会将它截断。当层数有1000层的时候,很容易发生截断的现象。
Reducing overfitting.
另一个影响是在正则化上(图6右)。我们收敛的时候的loss更好,但是错误率更低。这种现象在多个模型上都观察到了。这主要是由于BN的正则化效果引起。原来的残差单元中(图4a),尽管BN将信号归一化,但是很快被加到shortcut上,因此融合的信号不是归一化的,这个信号当作下一层的输入。相反,我们的版本使得所有权重层的输入都是经过归一化的。
5. Results
表4展示了SOTA模型在CIFAR10/100上的结果对比。我们注意到我们没有特别定制网络的宽度或filter尺寸,也没有使用正则化技巧(比如dropout)。我们获得这些结果只是通过——更深的网络。这些结果证明了将网络继续变深的潜力。
接下来我们报告在1000类的ImageNet数据集上的结果。我们在图2图3中做了初步试验,发现优化的困难。这些non-identity的shortcut的训练错误率明显高于原ResNet。我们完成了“BN after addition”在ImageNet上的实验,观察到更高的loss和错误。
表5展示了ResNet-152和ResNet-200的从头训练的结果。我们使用320 * 320进行测试。尽管ResNet使用更小的crop进行训练,它们可以应用在更大的crops因为ResNet是全卷积的。
原来的ResNet-152取得21.3% top-1错误率,我们的取得21.1%。这个提升不高是因为在152层上没有遇到概括困难。然而原来的ResNet-200取得21.8%错误率,比ResNet-152更高,但是它比ResNet-152的训练错误更低,这说明它过拟合了。
我们的ResNet-200取得20.7%的错误率。当使用了尺度和长宽比增强,我们的网络比Inception v3更低。
我们的模型的计算复杂度与深度成线性。
6. Conclusions
本文研究了深度残差网络背后的传播公式。我们发现identity shortcut和identity after-addition activation对于使得信息传播平滑十分重要。我们提出了一个1000层的深度网络,可以很容易的训练,并取得更高的准确率。