仅供参考,如有翻译不到位的地方敬请指出。
论文地址:Identity Mappings in Deep Residual Networks
译文地址:http://blog.youkuaiyun.com/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))可以表示为:
其中 xl 和 xl+1 是第 l 个单元的输入和输出,
Fig.1 (a) 原始残差单元;(b) 本文提出的残差单元;右:1001层ResNets 在CIFAR-10上的训练曲线。实线对应测试误差(右侧的y轴),虚线对应训练损失(左侧的y轴)。本文提出的单元使得ResNet-1001的训练更简单。
超过100层的ResNets在ImageNet \cite{Russakovsky2015}和MSCOCO \cite{Lin2014}竞赛的许多识别挑战任务中展现出了极高的精度。ResNets的核心思想就是学习一个额外的对应于
本文中,我们不只是在残差单元内部,而是在整个网络中创建一个“直接”的计算传播路径来分析深度残差网络。我们的推导展示了:如果 h(xl) 和 f(yl) 都是恒等映射,那么在前向和反向阶段,信号可以直接的从一个单元传递到其他任意一个单元。我们的实验表明了,当框架接近于以上两种状态时,训练变得更加简单。
为了了解跳跃连接的作用,我们分析和比较了 h(xl) 的各种类型。我们发现了He2016中使用的恒等映射 h(xl)=xl 在我们所有研究的类型中,误差衰减最快,训练误差最低,而使用缩放、门控以及1 × 1 卷积的跳跃连接都产生了很高的训练损失和误差。这些实验表明,一个“干净”的信息通路 (Fig.1,2和4中的灰色箭头)对于简化优化是很有帮助的。
为了构建一个恒等映射 f(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):
其中 xl 是第 l 个残差单元的输入特征。
如果
f
也是一个恒等映射:
通过递归 (例如, xl+2=xl+1+F(xl+1,Wl+1)=xl+F(xl,Wl)+F(xl+1,Wl+1) 。),对于任意深的单元 L 和任意浅的单元
Eq.4展现了一些良好的特性。 (i) 对于任意深的单元 L 的特征
Eq.4同样也具有良好的反向传播特性。
假设损失函数为
E
,从反向传播的链式法则可以得到(Eq.5):
Eq.5表明了梯度 ∂E∂xl 可以被分解成两个部分:其中 ∂E∂xL 直接传递信息而不涉及任何权重层,而另一部分 ∂E∂xL(∂∑L−1i=lF∂xl) 表示通过权重层的传递。 ∂E∂xL 保证了信息能够直接传回任意浅层 l 。
Eq.5同样表明了在一个mini-batch中梯度
Discussions
Eq.4和 Eq.5表明了,在前向和反向阶段,信号都能够直接的从一个单元传递到其他任意一个单元。Eq.4的条件基础是两个恒等映射: (i) 恒等跳跃连接
h(xl)=xl
,和(ii)
f
也是一个恒等映射。
这些直接传递的信息流如Fig.1、2及4中灰色箭头所示。当这些灰色箭头不附带任何操作(有望增加),也就是“clean” 时,以上两个条件是成立的。在接下来两部分中,我们会分别研究这两个条件的作用。
On the Importance of Identity Skip Connections
设计一个简单的修改——
其中 λl 是一个调节标量(为了简单起见,我们仍然假设 f 是恒等映射)。通过方程的递归,我们可以得到类似于Eq.4的等式:
其中 F^ 将这些标量合并到残差函数中。
类似于 Eq.5,我们有以下形式的反向传播过程:
不像 Eq.5,在 Eq.8中,第一项由因子 ∏L−1i=lλi 进行调节。对于一个极深的网络( L 很大),如果对于所有的
在上述分析中,Eq.3中的原始恒等跳跃连接被替代为一个简单的缩放 h(xl)=λlxl 。 如果跳跃连接 h(xl) 代表更加复杂的变换(例如门控和1 × 的卷积),在Eq.8中第一项变成 ∏L−1i=lh′i ,其中 h′ 是 h 的导数。这种成绩同样可能阻碍信息的传递,妨碍整个训练过程,在接下来的实验中会证明这点。
3.1 Experiments on Skip Connections
我们在CIFAR-10上使用He2016中的110层ResNet进行实验。这个极深的ResNet-110含有54个2层残差单元(由3
虽然在上述分析中,
f
为恒等映射,但是本节的实验中都是基于
Constant scaling 对于所有的捷径连接,我们设置
Exclusive gating 根据采用门控机制的Highway Networks,我们设计一个门控函数 g(x)=σ(Wgx+bg) ,表示由权重 Wg 、偏置项 bg 以及sigmoid函数 σ(x)=11+e−x 组成的变换。在一个卷积网络中 g(x) 通过 1 ×1 的卷积层实现。门控函数通过元素乘法来调节信号。
我们对“exclusive”门控进行研究 — F 由 g(x) 进行缩放,捷径连接由 1−g(x) 进行缩放。如 Fig2.(c)所示。我们发现偏置项 bg 的初始化对于门控模型的训练是至关重要的,我们设置 bg 的初始值范围为0到-10,递减量为1,然后通过cross-validation来执行超参数搜索。然后使用最佳值(这里为 −6 )来在训练集上进行训练,测试错误率为 8.70% (Table1),这仍然落后于原始的ResNet-110。Fig.3(b)展示了训练曲线。Table1同样展示了使用了不同初始值的实验结果,注意到当 bg 的初始化不合理时,exclusive gating网络并不能收敛到一个好的结果。
Exclusive gating机制的影响是双面的。当 1−g(x) 接近1时,门控捷径连接接近于恒等映射,这有助于信息的传递;但是这种情况下, g(x) 接近于0,从而阻碍了函数 F 。 为了避免在捷径连接中门控函数的影响,我们在接下来研究一个non-exclusive的门控机制。
Shortcut-only gating 这种情况下,函数 F 不进行缩放;只有捷径连接由 1−g(x) 进行缩放。如Fig.2(d)所示。偏置项 bg 的初始值同样很重要。当 bg 的初始值为0时(即 1−g(x) 为 0.5),网络收敛到一个很差的结果 12.86% (Table1)。这同样产生了很高的训练错误率(Fig.3(c))。
当 bg 的初始值是负很多的数(例如, −6 )时, 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中的分析,两个公式都是基于连接后的激活函数
f
为恒等连接的假设。但是在上述实验中
我们希望通过重新安排激活函数(ReLU和/或BN)来使得
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 在将
f
调整至恒等映射之前,我们先反其道而行之,在加法后添加一个BN(Fig.4(b))。这样
ReLU before addition 使得
f
成为恒等映射的一个天真的选择就是将 ReLU 移到加法之前(Fig.4(c))。这导致了
Post-activation or pre-activation?
在原始的设计中(Eq.1和Eq.2),激活函数
xl+1=f(yl)
在两条路线上对下一个残差单元造成影响:
yl+1=f(yl)+F(f(yl),Wl+1)
。
接下来我们研究一种非对称的方式,能够让激活函数
f^
对于任意的
l
,只对
很容易的发现 Eq.9与 Eq.4很类似,因此能够得到与Eq.5类似的反向方程。对于如 Eq.9所示的新的残差单元,新的附加激活函数变成了一个恒等映射。
这个设计表明了,如果一个新的附加激活 f^ 是非对称的,这就等同于将 f^ 作为下一个残差单元的预激活(pre-activation)项,如Fig.5所示。
后激活(post-activation)与预激活(pre-activation)的区别是由元素级加法的存在而造成的。一个含有 N 层的平铺网络,包含有
我们使用以下两种设计进行实验:(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
我们发现预激活的影响具有两个方面。第一,由于
f
也是恒等映射,优化变得更加简单(与原始ResNet相比)。第二,在预激活中使用BN能够提高模型的正则化。
Ease of optimization 这个影响在我们训练1001层ResNet时尤为显著。Fig.1展示了训练和测试曲线。使用He2016中的原始结构时,训练错误率在一开始下降的特别慢。对于
我们同样发现如果ResNet层数不多时(例如,Fig.6(右)中的164层),
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]
的尺寸抖动(scale jittering),所以当
s=256
时,在224
×
224的裁切图像的测试上加了负的偏置。相反的,在所有原始的以及我们提出的ResNet上,我们从
s=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)时,我们特别关注整个网络的第一个和最后一个残差单元。对于第一个残差单元(接在一个独立的卷积层 conv 1 后面),我们在 conv 1 后面执行第一个激活,然后再分成两条路径;对于最后一个残差单元(后面接着平均池化层和一个全连接分类器),在它的元素加法后执行一个额外的激活。这两个特殊情况是我们通过Fig.5中的修改程序来获得预激活网络自然而然产生的结果。
瓶颈残差单元(对于CIFAR上的ResNet-164/1001)是根据 \cite{He2016}来构建的。例如ResNet-110中的替换成ResNet-164中的
,参数数量没有发生改变。对于瓶颈ResNets,当特征图的尺寸减少时,我们使用投影捷径连接(projection shortcuts)来增加维度,在预激活单元中,这些投影捷径连接同样适用。