Wide Residual Networks
author
Sergey Zagoruyko:sergey.zagoruyko@enpc.fr
Nikos Komodakis:nikos.komodakis@enpc.fr
(Université Paris-Est, École des Ponts
ParisTech
Paris, France)
摘要
深度残差网络被证明能够扩展到数千层,并且仍然具有改进的性能。然而,每一个百分之一的提高精度的成本几乎是层数的两倍,所以训练非常深的残差网络有一个特征重用的问题,。针对这些问题,本文对ResNet块的结构进行了详细的实验研究,在此基础上提出了一种新的体系结构,了残差网络的深度,增加了残差网络的宽度。我们称这种网络结构为宽残差网络(WRNs),并指出这种网络结构效果远远优于常用的那些更深的网络(它们相对窄一些)。例如,我们证明,即使是一个简单的16层深宽残差网络,其精度和效率都优于所有以前的深度残差网络,包括千层深度网络。它在CIFAR、SVHN、COCO上取得了最优效果State-of-the-art,并对ImageNet结果进行了重大改进。我们的代码和模型可在https://github.com/szagoruyko/wide-residual-networks 上找到
1. 引言
在过去的几年里,卷积神经网络的层数逐渐增加,从AlexNet[16]、VGG[26]、Inception[30]到残差[11]网络,这与许多图像识别任务的改进相对应。近年来,一些研究发现了深层网络的优越性[3,22]。然而,深层神经网络的训练有几个困难,包括梯度的爆炸/消失和退化。人们提出了各种技术来训练更深层的神经网络,例如设计良好的初始化策略[1,12]、更好的优化器[29]、跳过连接[19,23]、知识转移[4,24]和分层训练[25]。
最新的残差网络[11]在ImageNet和COCO 2015竞赛中取得了巨大成功,并在多个基准测试中实现了最新水平,包括ImageNet和CIFAR上的对象分类、PASCAL VOC和MS COCO上的目标检测和分割。与初始体系结构相比,它们表现出更好的泛化能力,这意味着这些特征可以在迁移学习中得到更有效的利用。此外,后续工作表明,残差链接加速了深度网络的收敛[31]。最近的后续工作探索了残差网络中激活的顺序,提出了残差块中的identity映射[13],并改进了深层网络的训练。通过使用highway networks[28],可以成功地训练非常深的网络[28],这是在残差网络之前提出的一种体系结构。残差网和公路网的本质区别在于,后者的残差路段是门控的,这些门的权值是学习的。
因此,到目前为止,残差网络的研究主要集中在ResNet块内部的激活顺序和残差网络的深度上。在这项工作中,我们试图进行一项超越上述观点的实验研究。通过这样做,我们的目标是探索一组更丰富的ResNet块网络架构,并彻底检查除了激活顺序之外的其他几个不同方面是如何影响性能的。正如我们在下面解释的那样,这种对体系结构的探索导致了关于残差网络的新的有趣的发现,具有非常重要的实际意义。
Width vs depth in residual networks. 残差网络中的宽度与深度对比
在机器学习中,浅网络与深网络的问题已经讨论了很长时间[2,18],并指出链路复杂性理论文献表明,浅层链路比深层链路需要指数级更多的元件。残余网络的作者试图使其尽可能薄,以增加其深度和参数较少,甚至引入了“瓶颈”块,使ResNet块更薄。
然而,我们注意到,具有身份映射的残差块允许训练非常深的网络,同时也是残差网络的一个弱点。当梯度流经网络,没有什么可以强迫它通过残差块权重,并且它可以避免在训练过程中学习任何东西,所以可能只有少数块学习有用的表示,或者许多块共享很少的信息,对最终目标的贡献很小。在这个问题中,28被表述为“减少重用”。[14]的作者试图通过在训练过程中随机地禁用残差块的思想来解决这个问题。这种方法可以看作是一种特殊的丢失情况[27],其中每个残差块都有一个单位标量权重,在这个权重上应用了dropout。这种方法的有效性证明了上述假设。
基于上述观察结果,我们的工作建立在[13]的基础上,试图回答深度残差网络应该有多宽的问题,并解决训练问题。在这种情况下,我们表明,与增加深度相比,ResNet块的扩展(如果处理得当)提供了一种更有效的方法来改善残差网络的性能。特别是,我们提出了比[13]有显著改进的更广泛的深层残差网络,层数减少了50倍,速度提高了2倍以上。我们称其为广域残差网络。例如,我们的宽16层深网络具有与1000层薄深网络相同的精度和相当数量的参数,训练速度快了几倍。因此,这类实验似乎表明深部残差网络的主要效果在残差块体中,深度的影响是补充的。我们注意到,我们可以训练出更好的宽残差网络,其参数是原来的两倍(甚至更多),如果在传统网络采用增加深度来进一步提高性能,在这种情况下需要添加到数千层。
Figure 1:Various residual blocks used in the paper. Batch normalization and ReLU precede each convolution (omitted for clarity)
图1. 论文中使用的各种残余块。批量归一化和ReLU在每个卷积之前(为清楚起见,省略)
Use of dropout in ResNet blocks.在ResNet块中使用dropout。
Dropout在[27]中首先被引入,后来被[16,26]等许多成功的架构所采用,它主要应用于具有大量参数的网络顶层,以防止特征的协同适应和过度拟合。然后,它主要被批量标准化[15]所取代,这是一种通过将神经网络激活归一化为具有特定分布来减少内部协变量偏移的技术。它也是一个正则化器,作者实验表明,批量归一化的网络比有丢失的网络具有更好的精度。在我们的例子中,由于残差块的扩大导致参数个数的增加,我们研究了dropout对正则化训练和防止过度拟合的影响。以前,在[13]中研究了残差网络中的丢失,在块的标识部分插入了dropout,作者展示了这种情况的负面影响。相反,我们认为在卷积层之间应该插入dropout。在宽残差网络上的实验结果表明,这导致了一致的增益,甚至产生了新的最新结果(例如,具有丢失的16层深宽残差网络在SVHN上的误差为1.64%)。
总之,这项工作的贡献如下:
我们提出了一个详细的实验研究残余网络结构,彻底检查了几个重要方面的ResNet块结构。
我们为ResNet块提出了一种新的扩展架构,允许残差网络具有显著提高的性能。
我们提出了一种新的方法来利用深度残差网络中的dropout现象,以便对其进行适当的正则化,防止训练过程中的过度拟合。
最后,我们展示了我们提出的ResNet架构在多个数据集上取得了最新的结果,显著提高了残差网络的精度和速度。
2. 宽度残差网络
具有标识映射的残差块可以用以下公式表示:
其中xl+1 和xl 是网络中第 l单元的输入和输出, F 是残差函数 Wl 是块的参数。残差网络由按顺序叠加的残差块组成。
在[ He et al. (2016) He,Zhang,Ren,and Sun ]中残差网络由两种类型的块组成:
基本块basic- 具有两个连续的3×3卷积,具有批处理标准化和ReLU前卷积:conv3×3-conv3×3图1(a)
瓶颈块 bottleneck- 一个3×3卷积被降维和扩展1×1卷积层包围:conv1×1-conv3×3-conv1×1图1(b)
与[13]中的原始架构[11]相比,残差块中批处理规范化、激活和卷积的顺序从conv BN ReLU更改为BN-ReLU-conv。由于后者的训练速度更快,效果更好,因此我们不考虑原始版本。此外,所谓的“瓶颈”块最初用于降低块的计算成本,以增加层的数量。由于我们想研究加宽的影响以及“瓶颈”被用来使网络变薄,我们不考虑它,而是关注“基本”残余结构。
基本上有三种简单的方法来增加残差块的表示能力:
- 为每个块添加更多的卷积层
- 通过添加更多的特征平面来加宽卷积层
- 增加卷积层中的滤波器尺寸
- 由于小型滤波器在包括[26,31]在内的多个工程中被证明是非常有效的,我们不考虑使用大于3×3的滤波器。我们还引入两个因子,加深因子l和加宽因子k,其中l是块中卷积的数量,k乘以卷积层中的特征数,因此基线«basic»块对应于l=2,k=1。图1(a)和1(c)分别显示了«basic»和«basic wide»块的示意示例。
我们的残差网络的一般结构如表1所示:它由一个初始卷积层conv1组成,接着是3组残差块conv2、conv3和conv4(每个大小为N),然后是平均池和最终分类层。在我们的所有实验中,conv1的大小是固定的,而引入的加宽因子k缩放了三组conv2-4中残差块的宽度(例如,原始的“basic”架构相当于k=1)。我们想研究残差块的表现力的影响,为此,我们对«basic»架构进行了几次修改并进行了测试,这些修改将在下面的小节中详细介绍。
表1. 宽残差网络的结构。网络宽度由系数k决定。原始体系结构[13]相当于k=1。卷积组显示在括号中,其中N是组中的块数,由conv3和conv4组中的第一层执行下采样。最后的分类层被省略为间隙。在所示的特定示例中,网络使用类型为B(3,3)的ResNet块
2.1 残差块中卷积的类型
设B(M)表示残差块结构,其中M是块中卷积层的核大小的列表。例如,B(3,1)表示具有3×3和1×1卷积层的残差块(我们总是假设空间核是正方形的)。请注意,由于我们没有考虑前面解释的«瓶颈»块,特征平面的数量在整个块中始终保持不变。我们想回答的问题是«basic»残差架构的3×3卷积层各有多重要,以及它们是否可以被计算成本较低的1×1层甚至1×1和3×3卷积层的组合(例如B(1,3)或B(1,3))所取代。这可以增加或减少块的表示力。因此,我们对以下组合进行了实验(注意最后一个组合,即B(3,1,1)与网络[20]体系结构中的有效网络相似):
- B(3,3)- 原始«basic»块
- B(3,1,3)- 额外1×1层
- B(1,3,1)- 具有相同维数的下降卷积,«拉直»瓶颈
- B(1,3)- 网络处处有交替的1×1-3×3卷积
- B(3,1)- 网络处处有交替的3×3-1×1卷积
- B(3,1,1)- NIN中的网络
2.2 每个残差块的卷积层数
我们还对块加深因子 l 进行了实验,看看它是如何影响性能的。必须在参数数目相同的网络之间进行比较,因此在这种情况下,我们需要构建具有不同的 l 和 d (其中 d 表示块的总数)的网络,同时确保网络复杂度大致保持不变。这意味着,例如,d 应该随着 l 的增加而减少。
2.3 残差块宽度
除上述修改外,我们还对块体的加宽因子k进行了实验。当参数个数随l(深化因子)和d(ResNet块数)线性增加时,参数个数和计算复杂度在k中是二次方的,由于GPU在大型张量上的并行计算效率更高,因此我们对最佳d/k比感兴趣。
更广泛的残差网络的一个论据是,与[13]相比,残差网络之前的几乎所有架构,包括最成功的初始[30]和VGG[26]都要宽得多。例如,残差网络WRN-22-8和WRN-16-10(关于这个符号的解释见下一段)在宽度、深度和参数数量上与VGG架构非常相似。
我们进一步将k=1的原始残差网络称为“薄”网络,将k>1的网络称为“宽”网络。在本文的其余部分中,我们使用以下符号:WRN-n-k表示具有卷积层总数n和加宽因子k的残差网络(例如,具有40层且k=2倍于原始层的网络将被表示为WRN-40-2)。此外,如果适用,我们附加块类型,例如WRN-40-2-B(3,3)。
2.4 残差块中的Dropout
随着参数的增加,我们想研究正则化的方法。残差网络已经有了批量标准化,提供了一个正则化的效果,但是它需要大量的数据扩充,这是我们想要避免的,而且这并不总是可能的。如图1(d)所示,在ReLU之后,我们在卷积之间的每个残差块中添加一个dropout层,以扰动下一个残差块中的批标准化并防止其过度拟合。在非常深的残差网络中,这应该有助于处理减少的特征重用问题,在不同的残差块中强制学习。
3. 实验结果
在实验中,我们选择了著名的CIFAR-10、CIFAR-100、SVHN和ImageNet图像分类数据集。CIFAR-10和CIFAR-100数据集[17]由从10个和100个等级中提取的32×32个彩色图像组成,这些图像分为50000个训练图像和10000个测试图像。对于数据增强,我们做水平翻转,并从每边4个像素填充的图像中随机裁剪,用原始图像的反射填充缺失的像素。我们没有使用[9]中提出的重数据扩充。SVHN是谷歌街景房屋编号图片的一个数据集,包含大约60万个数字图像,来自一个明显更困难的现实世界问题。在SVHN上的实验中,我们不做任何图像预处理,除了将图像除以255以提供[0,1]范围内的图像作为输入。除了ImageNet之外,我们所有的实验都是基于[13]架构的预激活残差块,我们使用它作为基线模型。对于ImageNet,我们发现在少于100层的网络中使用预激活不会产生任何显著的差异,因此我们决定在本例中使用原始的ResNet架构。除非另有说明,对于CIFAR,我们遵循[8]的图像预处理和ZCA白化。然而,对于一些CIFAR实验,我们使用简单的mean/std标准化,这样我们就可以直接与[13]和其他使用这种预处理的ResNet相关工作进行比较。
在下文中,我们描述了我们对不同ResNet块结构的发现,并分析了我们提出的宽残差网络的性能。我们注意到,对于所有实验,效果都与如下两者相关:“块中卷积的类型”和“每个块包含的卷积数”,为了加快训练速度,我们使用k=2和与[13]相比减少的深度。
Table 2: Test error (%, median over 5 runs) on CIFAR-10 of residual networks with k=2 and different block types. Time column measures one training epoch.Table 3: Test error (%, median over 5 runs) on CIFAR-10 of WRN-40-2 (2.2M) with various l.
表2. k=2和不同块类型的残差网络在CIFAR-10上的测试误差(%,5次运行的中值)。时间列测量一个训练epoch
块中卷积的类型
我们首先比较了使用不同块类型B的结果(在CIFAR-10上):我们将WRN-40-2用于块B(1,3,1)、B(3,1)、B(1,3)和B(3,1,1),因为这些块只有一个3×3卷积。为了保持参数数目的可比性,我们训练了其他具有较少层数的网络:WRN-28-2-B(3,3)和WRN-22-2-B(3,1,3)。我们在表2中提供了测试结果,包括平均5次测试的准确度和每个训练阶段的时间。B(3,3)块的精度与B(3,1,3)非常接近,参数少,层数少。B(3,1,3)比其他方法快一点。
基于上述结果,具有可比较数量参数的块得到的结果或多或少是相同的。由于这个事实,我们将注意力限制在仅具有3×3卷积的WRNs上,以便与其他方法保持一致。
每个块的卷积数
接下来,我们继续进行与改变加深因子l(表示每个块的卷积层数)有关的实验。我们在表3中给出了指示性结果,在这个例子中,我们使用3×3卷积的WRN-40-2,训练了几个具有不同加深因子l∈[1,2,3,4],相同数量参数(2.2×106)和相同卷积层数的网络。
可以注意到,B(3,3)的性能最好,而B(3,3,3)和B(3,3,3,3)的性能最差。我们推测这可能是由于在最后两种情况下,由于残差连接数的减少,优化难度增加。此外,B(3)的情况更糟。结论是B(3,3)在每个块的卷积数方面是最优的。因此,在剩下的实验中,我们只考虑具有B(3,3)型块的宽残差网络。
l | CIFAR-10 |
---|---|
1 | 6.69 |
2 | 5.43 |
3 | 5.65 |
4 | 5.93 |
Table 3: Test error (%, median over 5 runs) on CIFAR-10 of WRN-40-2 (2.2M) with various
表3. WRN-40-2(2.2M)CIFAR-10在不同l下的试验误差(%,5次试验的中值)
残差块的宽度
当我们试图增加加宽参数k时,我们必须减少总层数。为了找到一个最佳的比率,我们用k从2到12,深度从16到40进行了实验。结果见表4。可以看出,当宽度增加1到12倍时,所有具有40、22和16层的网络都能看到一致的增益。另一方面,当保持相同的固定加宽系数k=8或k=10并将深度从16变为28时,会有一致的改善,但是当我们进一步将深度增加到40时,精度会降低(例如,WRN-40-8的精度会降低到WRN-22-8)。
我们在表5中显示了其他结果,在表5中,我们比较了细残差网络和宽残差网络。可以观察到,wide WRN-40-4比thin ResNet-1001更好,因为它在CIFAR-10和CIFAR-100上都获得了更好的精度。然而,有趣的是,这些网络具有可比较数量的参数,8.9×106和10.2×106,这表明在这个水平上,深度与宽度相比没有增加正则化效应。正如我们在基准点上进一步显示的那样,WRN-40-4的训练速度是原来的8倍,因此很明显原始的薄残差网络的深宽比远远不是最优的。
此外,wide WRN-28-10在CIFAR-10上的性能优于thin ResNet-1001 0.92%(在训练期间具有相同的小批量大小),而在CIFAR-100上,wide WRN-28-10比thin ResNet-1001高出3.46%,层数少36倍(见表5)。我们注意到,ResNet-1001的结果为4.64%,批次大小为64,而我们在所有实验中使用的批次大小为128(即,表5中报告的所有其他结果的批次大小为128)。这些网络的训练曲线如图2所示。
depth | k | # params | CIFAR-10 | CIFAR-100 |
---|---|---|---|---|
40 | 1 | 0.6M | 6.85 | 30.89 |
40 | 2 | 2.2M | 5.33 | 26.04 |
40 | 4 | 8.9M | 4.97 | 22.89 |
40 | 8 | 35.7M | 4.66 | - |
28 | 10 | 36.5M | 4.17 | 20.50 |
28 | 12 | 52.5M | 4.33 | 20.43 |
22 | 8 | 17.2M | 4.38 | 21.22 |
22 | 10 | 26.8M | 4.44 | 20.75 |
16 | 8 | 11.0M | 4.81 | 22.07 |
16 | 10 | 17.1M | 4.56 | 21.59 |
Table 4: Test error (%) of various wide networks on CIFAR-10 and CIFAR-100 (ZCA preprocessing).
表4. CIFAR-10和CIFAR-100上各种宽网的测试误差(%)(ZCA预处理)
尽管之前有观点认为深度会产生正则化效果,而宽度会导致网络过度拟合,但我们成功地用比ResNet-1001多几倍的参数训练网络。例如,wide WRN-28-10(表5)和wide WRN-40-10(表9)的参数分别是ResNet-1001的3.6倍和5倍,而且两者的表现都明显优于ResNet-1001。
Table 5: Test error of different methods on CIFAR-10 and CIFAR-100 with moderate data augmentation (flip/translation) and mean/std normalzation. We don’t use dropout for these results. In the second column k is a widening factor. Results for [[He et al.(2016)He, Zhang, Ren, and Sun] are shown with minibatch size 128 (as ours), and 64 in parenthesis.