Identity Mappings in Deep Residual Networks(译) 转载

 

 

论文地址:Identity Mappings in Deep Residual Networks

译文地址:http://blog.csdn.net/wspba/article/details/60750007

摘要

深度残差网络作为一种极深的网络框架,在精度和收敛等方面都展现出了很好的特性。在本文中,我们分析了残差块(residual building blocks)背后的计算传播方式,表明了当跳跃连接(skip connections)以及附加激活项都使用恒等映射(identity mappings)时,前向和后向的信号能够直接的从一个block 传递到其他任意一个block。一系列的“消融”实验(ablation experiments)也验证了这些恒等映射的重要性。这促使我们提出了一个新的残差单元,它使得训练变得更简单,同时也提高了网络的泛化能力。我们报告了1001层ResNet在CIFAR-10(4.62\% error) 和CIFAR-100上的结果,以及200层ResNet在ImageNet上的结果。代码可在 https://github.com/KaimingHe/resnet-1k-layers上下载。

介绍

深度残差网络(ResNets)由很多个“残差单元”组成。每一个单元(Fig.1 (a))可以表示为:

其中 xlxl 和 xl+1xl+1 是第ll 个单元的输入和输出, FF 表示一个残差函数。在He2016中, h(xl)=xlh(xl)=xl 代表一个恒等映射,ff 代表 ReLU。

 

 

这里写图片描述


Fig.1 (a) 原始残差单元;(b) 本文提出的残差单元;右:1001层ResNets 在CIFAR-10上的训练曲线。实线对应测试误差(右侧的y轴),虚线对应训练损失(左侧的y轴)。本文提出的单元使得ResNet-1001的训练更简单。

 

超过100层的ResNets在ImageNet \cite{Russakovsky2015}和MSCOCO \cite{Lin2014}竞赛的许多识别挑战任务中展现出了极高的精度。ResNets的核心思想就是学习一个额外的对应于h(xl)h(xl) 的残差函数 FF ,而这个思想的关键就是恒等映射h(xl)=xlh(xl)=xl 。这是通过一个恒等的跳跃连接(“捷径”)来实现的。

本文中,我们不只是在残差单元内部,而是在整个网络中创建一个“直接”的计算传播路径来分析深度残差网络。我们的推导展示了:如果h(xl)h(xl) 和 f(yl)f(yl) 都是恒等映射,那么在前向和反向阶段,信号可以直接的从一个单元传递到其他任意一个单元。我们的实验表明了,当框架接近于以上两种状态时,训练变得更加简单。

为了了解跳跃连接的作用,我们分析和比较了 h(xl)h(xl) 的各种类型。我们发现了He2016中使用的恒等映射h(xl)=xlh(xl)=xl 在我们所有研究的类型中,误差衰减最快,训练误差最低,而使用缩放、门控以及1×× 1 卷积的跳跃连接都产生了很高的训练损失和误差。这些实验表明,一个“干净”的信息通路 (Fig.1,2和4中的灰色箭头)对于简化优化是很有帮助的。

为了构建一个恒等映射 f(yl)=ylf(yl)=yl ,我们将激活函数(ReLU 和 BN) 看作是权重层的 “pre-activation”,而不是传统的“post-activation”。通过这个观点产生了一个新的残差单元,如(Fig.1(b))所示。基于这个单元构建的1001层ResNet在CIFAR-10/100上展现了更具竞争力的结果,并且与原始的ResNet相比,也更容易训练,泛化能力更强。针对200层ResNet在ImageNet上出现的过拟合现象,我们进一步展示了使用改进后网络的结果。这些结果表明了,作为深度学习成功的关键,模型的深度仍然具有很大的可拓展空间。

Analysis of Deep Residual Networks

He2016中的ResNets是通过将相同连接形状的blocks进行堆叠的模块化框架。本文中,我们将这些blocks称为“残差单元(Residual Units)”。He2016中的原始残差单元执行以下计算(Eq.1,Eq.2):

 


其中xlxl 是第ll 个残差单元的输入特征。Wl={Wl,k|1≤k≤K}Wl={Wl,k|1≤k≤K} 是一组与第ll 个残差单元相关的权重(偏置项),KK 是每一个残差单元中的层数( He2016中KK 为2或者3)。FF 代表残差函数,形如He2016中两个3×× 3卷积层的堆叠。函数ff 是元素相加后的操作,在 He2016 ff 是ReLU。函数 hh 被设置为恒等映射: h(xl)=xlh(xl)=xl 。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这里写图片描述
这里写图片描述

3.1 Experiments on Skip Connections
我们在CIFAR-10上使用He2016中的110层ResNet进行实验。这个极深的ResNet-110含有54个2层残差单元(由3×× 3的卷积层组成),这对优化造成了一定的挑战。我们的实现细节(见附录)与He2016中的相同。为了避免随机变量的影响,本文中我们的结果为在CIFAR上每个框架运行5次得到的准确率的中位数。

虽然在上述分析中,ff 为恒等映射,但是本节的实验中都是基于f=f= ReLU;我们在下一节中对恒等映射 ff 进行分析。在测试集上我们的原始ResNet-110的错误率为6.61% 。与其他变形的比较 (Fig.2和 Table1)总结如下:

Constant scaling 对于所有的捷径连接,我们设置λ=0.5λ=0.5 (Fig.2(b))。我们进一步考虑FF 的两种缩放情况: (i) FF 不被缩放; (ii) FF 有常数标量 1−λ=0.51−λ=0.5 进行缩放,这与highway门控类似,但是它是冷冻门控。前一种情况不能很好的收敛;后一种可以收敛,但是测试错误率(Table1, 12.35%)比原始的ResNet-110高得多。Fig.3(a) 显示了训练错误率比原始ResNet-110的要高,表明了当捷径信号被缩放时,优化变得更加困难。

Exclusive gating 根据采用门控机制的Highway Networks,我们设计一个门控函数g(x)=σ(Wgx+bg)g(x)=σ(Wgx+bg) ,表示由权重WgWg 、偏置项bgbg 以及sigmoid函数σ(x)=11+e−xσ(x)=11+e−x 组成的变换。在一个卷积网络中g(x)g(x) 通过 1×1×1 的卷积层实现。门控函数通过元素乘法来调节信号。

我们对“exclusive”门控进行研究 — FF 由 g(x)g(x) 进行缩放,捷径连接由1−g(x)1−g(x) 进行缩放。如 Fig2.(c)所示。我们发现偏置项bgbg 的初始化对于门控模型的训练是至关重要的,我们设置bgbg 的初始值范围为0到-10,递减量为1,然后通过cross-validation来执行超参数搜索。然后使用最佳值(这里为−6−6 )来在训练集上进行训练,测试错误率为 8.70% (Table1),这仍然落后于原始的ResNet-110。Fig.3(b)展示了训练曲线。Table1同样展示了使用了不同初始值的实验结果,注意到当bgbg 的初始化不合理时,exclusive gating网络并不能收敛到一个好的结果。

Exclusive gating机制的影响是双面的。当 1−g(x)1−g(x) 接近1时,门控捷径连接接近于恒等映射,这有助于信息的传递;但是这种情况下,g(x)g(x) 接近于0,从而阻碍了函数FF 。 为了避免在捷径连接中门控函数的影响,我们在接下来研究一个non-exclusive的门控机制。

Shortcut-only gating 这种情况下,函数FF 不进行缩放;只有捷径连接由1−g(x)1−g(x) 进行缩放。如Fig.2(d)所示。偏置项bgbg 的初始值同样很重要。当bgbg 的初始值为0时(即1−g(x)1−g(x) 为 0.5),网络收敛到一个很差的结果 12.86% (Table1)。这同样产生了很高的训练错误率(Fig.3(c))。

当bgbg 的初始值是负很多的数(例如, −6−6 )时,1−g(x)1−g(x) 的值接近于1,捷径连接接近于恒等映射。因此,结果(6.91%, Table1)与原始ResNet-110的结果很接近。

1×× 1 convolutional shortcut 接下来我们使用 1×× 1 的卷积捷径连接替代恒等连接在进行实验。这种方案在He2016中使用在34层的ResNet(16个残差单元)上(即方案C),并展现除了很好的结果,表明了1×× 1 卷积捷径连接是有效果的。但是我们发现当残差单元有很多时,这并不能起到特别好的效果。当使用1×× 1 的卷积捷径连接时,110 层的ResNet的结果很差(12.22%, Table1)。同样的训练误差也变得很高 (Fig.3(d))。当堆叠了如此多的残差单元时(ResNet-110 中有54个),即便是最短的路径可能也会对信号的传播造成阻碍。当在ImageNet上使用1×× 1卷积捷径连接的ResNet-110时,出现了类似的结果。

Dropout shortcut 最后我们在恒等捷径连接上添加Dropout(比率为0.5) 来进行实验(Fig.2(f))。网络并没有收敛到一个很好的结果。Dropout在统计学上相当于给捷径连接强加了一个λλ 为0.5的缩放,这和0.5的constant scaling很类似,同样的阻碍了信号的传播。

这里写图片描述

3.2 Discussions
如Fig.2中灰色箭头所示,捷径连接是信息传递最直接的路径。 捷径连接中的操作 (缩放、门控、1×× 1 的卷积以及 dropout) 会阻碍信息的传递,以致于对优化造成困难。

值得注意的是1×× 1的卷积捷径连接引入了更多的参数,本应该比恒等捷径连接具有更加强大的表达能力。事实上,shortcut-only gating 和1×× 1的卷积涵盖了恒等捷径连接的解空间(即,他们能够以恒等捷径连接的形式进行优化)。然而,它们的训练误差比恒等捷径连接的训练误差要高得多,这表明了这些模型退化问题的原因是优化问题,而不是表达能力的问题。

On the Usage of Activation Functions

以上的实验内容验证了Eq.5和Eq.8中的分析,两个公式都是基于连接后的激活函数 ff 为恒等连接的假设。但是在上述实验中ff 是以He2016中的ReLU设计的,因此,Eq.5和8只是以上实验的估计。接下来我们研究ff 的影响。

我们希望通过重新安排激活函数(ReLU和/或BN)来使得 ff 为一个恒等映射。He2016中的原始残差连接的形状如Fig.4(a) — BN在每一个权重层之后使用,之后再接一个ReLU,在最后的元素相加之后还有最后一个ReLU(即f=f= ReLU)。 Fig.4(b-e)展示了我们研究的其他形式,解释如下。
这里写图片描述
这里写图片描述

4.1 Experiments on Activation
本章,我们使用He2016中的ResNet-110和164层瓶颈结构(称为ResNet-164)来进行实验。瓶颈残差单元包含一个1×× 1的层来降维,一个3×× 3的层,还有一个1×× 1的层来恢复维度。正如He2016中所述,它的计算复杂度和包含两个3×× 3的层的残差单元相同。更多细节参见附录。ResNet-164的基本结构在CIFAR-10上具有很好的结果——5.93%(Table2)。

BN after addition 在将ff 调整至恒等映射之前,我们先反其道而行之,在加法后添加一个BN(Fig.4(b))。这样ff 就包含了BN和ReLU。这样的结果比基本结构的结果要差很多(Table2)。不像原始的设计,目前的BN层改变了流经捷径连接的信号,并阻碍了信息的传递,这从训练一开始降低训练误差的困难就可以看出(Fig.6 left)。

 

 

 

 

 

这里写图片描述


后激活(post-activation)与预激活(pre-activation)的区别是由元素级加法的存在而造成的。一个含有NN 层的平铺网络,包含有N−1N−1 个激活层(BN/ReLU),而我们如何考虑它们是否是后激活或者预激活都不要紧。但是对附加的分支层来说,激活函数的位置就变得很重要了。

 

我们使用以下两种设计进行实验:(i) 只使用ReLU的预激活(Fig.4(d)),和(ii) 全预激活 (Fig.4(e)) ,它的BN和ReLU全都放置在权重层的前面。Table2表明了,只使用ReLU预激活的结果与原始ResNet-110/164的很接近。这个ReLU层不与BN层连接使用,因此无法共享BN所带来的好处。
 

这里写图片描述

然而,令人惊讶的是,当BN和ReLU都用在预激活上,结果得到了很可观的提高(Table2与Table3)。在Table3中,展示了使用不同结构的结果:(i) ResNet-110,(ii) ResNet-164,(iii) 一个110层的ResNet结构,其中每一个捷径连接跳过1层(即,每一个残差单元只包含一层),称它为“ResNet-110(1layer)”,以及(iv) 一个含有333个残差单元的1001层瓶颈结构(对应于每一种尺寸特征图有111个残差单元),称它为“ResNet-1001”。我们同样在CIFAR-100上进行实验。Table3表明了我们的“预激活”模型比原始的模型的性能要好得多。分析过程如下。

4.2 Analysis
我们发现预激活的影响具有两个方面。第一,由于ff也是恒等映射,优化变得更加简单(与原始ResNet相比)。第二,在预激活中使用BN能够提高模型的正则化。

Ease of optimization 这个影响在我们训练1001层ResNet时尤为显著。Fig.1展示了训练和测试曲线。使用He2016中的原始结构时,训练错误率在一开始下降的特别慢。对于f=f= ReLU,如果信号是负的时候会造成一定的影响,而当残差单元很多时,这个影响将会变得尤为突出,所以Eq.3(Eq.5也是)并不是一个好的估计。另一方面,当ff时一个恒等映射时,信号在两个单元之间能够很直接的进行传递。我们的1001层网络的训练误差能够降低的特别快(Fig.1)。它同样达到了所有我们研究的模型中最低的误差,表明了在优化上的成功。

我们同样发现如果ResNet层数不多时(例如,Fig.6(右)中的164层),f=f= ReLU 的影响并不是很强烈。在训练初期,训练曲线似乎收到了一点影响,但是马上回归到良好的状态。通过监控模型的响应,我们观测到,这是因为在经过一定的训练后,权重被调整到使得 Eq.1中的ylyl总是大于0的,因此ff并不会截断它(由于先前ReLU的存在,xlxl 总是非负的,因此只有当F是非常负的时候,ylyl才会小于0)。当时在使用1000层的模型时,这种截断就会更加频繁。

Reducing overfitting 使用这个预激活单元的另一个影响就是正则化,如Fig.6(右)所示。预激活版本的模型达到收敛时产生了稍高的训练损失,但是却只产生了最低的的测试错误率。这个现象在CIFAR-10和100上的ResNet-110,ResNet-110(1-layer)以及ResNet-164上都观测到了。这可能是由BN的正则化效应引起的。在原始残差单元中(Fig.4(a)),尽管BN对信号进行了标准化,但是它很快就被合并到捷径连接上,组合的信号并不是被标准化的。这个非标准化的信号又被用作下一个权重层的输入。恰恰相反的是,在我们的预激活版本的模型中,权重层的输入总是标准化的。
 

这里写图片描述

Results

这里写图片描述


 

这里写图片描述

Comparisons on CIFAR-10/100
Table4在 CIFAR-10/100上比较了目前最好的方法,我们的模型取得了非常有竞争性的结果。我们发现对于这些小数据集,我们并不需要特意剪裁网络的宽度和深度,也不需要使用正则化技术(例如dropout)来保证模型的效果。我们只通过一个简单却有效的方式——加深网络。这些结果展示了推进深度极限的潜力。

Comparisons on ImageNet
接下来我们展示在1000类的ImageNet数据集上的实验结果。我们使用含有Fig.2& 3中跳跃连接的ResNet-101在ImageNet上进行了初步的实验,也同样遇到了优化难题。在第一个学习率上,这些非恒等捷径连接网络的训练误差显然比原始的ResNet高得多(与Fig.3类似),由于资源有限,我们决定停止训练。但是我们完成了“BN在加法后”版本的ResNet的实验(Fig.4(b))。这个模型的单一裁切(single-crop)(224××224)的验证错误率为24.6%/7.5%,而原始ResNet-101的为23.6%/7.1%。这和Fig.6(左) 中CIFAR上的结果一致。

Table5展示了ResNet-152和 ResNet-200的结果,所有训练从头开始。我们注意到原始的ResNet论文中在训练模型时,使用了图像较短边s∈[256,480]s∈[256,480]的尺寸抖动(scale jittering),所以当s=256s=256时,在224××224的裁切图像的测试上加了负的偏置。相反的,在所有原始的以及我们提出的ResNet上,我们从s=320s=320的图像中裁切一个单一的320××320图像进行测试。
即使ResNets是在更小的裁切图像上进行训练的,但是由于ResNets的全卷积设计,在更大的裁切图像上它们也能够很容易的进行测试。这和Inception v3使用的299××299的尺寸很接近,因此是一个更公平的比较。

原始 ResNet-152在320××320裁切图像上的top-1错误率为21.3%,而我们的与激活版本的错误率为21.1%。在ResNet-152上的增益并不是很大,因为这个模型并没有表现出很严重的泛化困难。然而原始的ResNet-200的错误率比ResNet-152的要高,为21.8%。但是我们发现原始 ResNet-200 的训练误差比ResNet-152的更低,表明受到了过拟合的问题。

我们的预激活ResNet-200的错误率为20.7%,比原始ResNet-200的要低1.1%,并且比两个版本的ResNet-152都要低。当使用尺寸和纵横比增强方案时,我们的ResNet-200比Inception v3的结果更好 (Table5),与我们同期的工作中,Inception-ResNet-v2 模型单一裁切的结果为19.9%/4.9%。我们期望我们的观测以及提出的残差单元将会有助于这种类型以及其他泛化类型ResNets的训练。

Computational Cost
我们模型的计算复杂度和深度呈线性关系(所以1001层网络的复杂度为100层网络的近10倍)。在CIFAR上,ResNet-1001使用2块GPU花费了27个小时的训练时间;在ImageNet上,ResNet-200使用8块GPU花费了将近3周的训练时间 (这是可以和VGG媲美的)。

Conclusions

本文研究了深度残差网了的连接机制背后的传播方式。我们的推导表明了恒等捷径连接和恒等附加激活对于信息的顺利传播是至关重要的。“消融”实验(Ablation experiments)展示了和我们推导一致的现象。我们同时也提出二来1000层的深度网络,能够容易的训练并达到了更好的准确率。

Appendix: Implementation Details

本文的实现细节和超参数和He2016中的一致。在CIFAR上我们只是用了He2016中的平移和翻转的增强方案。初始学习率为0.1,在第32k和48k时学习率除以10。根据He2016,对于所有在CIFAR上的实验,我们在前400个迭代使用一个更小的学习率0.01来预热训练,之后再将学习率调回0.1,尽管我们认为这对本文提出的残差单元并不是必要的。在2块GPU上mini-batch的大小为128(每一块上各64),权重衰减为0.001,动量为0.9,权重按照He2015进行初始化。

在ImageNet上,我们使用He2016一样的数据增强方案来训练模型。初始学习率为0.1(没有预热),然后在第30和60个epochs时学习率除以10。在8块GPU上的大小为256(每一块上个32)。权重衰减、动量和权重初始化和上述一致。

当使用预激活残差单元(Fig.4(d)(e) 和 Fig.5)时,我们特别关注整个网络的第一个和最后一个残差单元。对于第一个残差单元(接在一个独立的卷积层 conv11 后面),我们在 conv11 后面执行第一个激活,然后再分成两条路径;对于最后一个残差单元(后面接着平均池化层和一个全连接分类器),在它的元素加法后执行一个额外的激活。这两个特殊情况是我们通过Fig.5中的修改程序来获得预激活网络自然而然产生的结果。

瓶颈残差单元(对于CIFAR上的ResNet-164/1001)是根据 \cite{He2016}来构建的。例如ResNet-110中的这里写图片描述替换成ResNet-164中的这里写图片描述,参数数量没有发生改变。对于瓶颈ResNets,当特征图的尺寸减少时,我们使用投影捷径连接(projection shortcuts)来增加维度,在预激活单元中,这些投影捷径连接同样适用。

 

转自:https://blog.csdn.net/wspba/article/details/60750007

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章