[CVPR2020]网络设计空间,论文地址:https://arxiv.org/pdf/2003.13678.pdf
目录
Abstract
在这项工作中,author提出了一个新的网络设计范式。author目标是帮助提高对网络设计的理解,并发现跨领域(settings)的通用设计原则。我们不是专注于设计单个网络实例,而是设计“网络设计空间”来将网络整体进行参数化。整个过程类似于经典的网络手工设计,但是提升到了设计空间的层次。利用我们的方法,我们探索了网络设计的结构方面,得到了一个由简单的、规则的网络组成的低维设计空间,我们称之为RegNet。RegNet参数化的核心思想非常简单:好的网络的宽度和深度可以用量化的线性函数来解释。我们分析了RegNet的设计空间,得出了与当前网络设计实践不匹配的有趣发现。RegNet设计空间提供了简单而快速的网络,这些网络可以很好地在各种各样的平台下工作。在可比较的训练设置和平台(flop?)情况下,RegNet模型的性能优于流行的EfficientNet模型,同时在gpu上的速度高达5倍。
1.Introduction
深度卷积神经网络是视觉识别的引擎。在过去的几年中,更好的架构在许多视觉识别任务中取得了长足的进步。例如LeNet[15]、AlexNet[13]、VGG[26]和ResNet[8]。这种形式的work既提高了神经网络的有效性,也提高了我们对网络设计的理解。特别是,上述工作序列分别证明了卷积、网络和数据大小、深度和残差的重要性。这些工作的outcome不仅是特定的网络实例,而且是可以推广并应用于许多设置的设计原则。
虽然手动网络设计带来了巨大的进步,但手动寻找优化良好的网络可能是一项挑战,特别是随着设计选择的增多。解决这一限制的一种流行方法是神经架构搜索(NAS)。给定一个可能的固定搜索网络空间,NAS会在搜索空间中自动找到一个好的模型。近年来,NAS受到了广泛的关注,并取得了很好的效果[34,18,29]。
尽管NAS是有效的,但这种模式还是有局限性的。搜索的结果是根据特定环境(例如,硬件平台)调整的单个网络实例。这在某些情况下是足够的;然而,它不能使我们发现网络设计原则,加深我们的理解,并允许我们概括到新的设置。特别是,我们的目标是找到易于理解、构建和概括的简单模型。
在这项工作中,我们提出了一个新的网络设计范式,结合了人工设计和NAS的优点。我们不是专注于设计单个网络实例,而是设计参数化网络总体的设计空间(我们使用[21]后面的术语design space而不是search space来强调我们不是在空间内搜索网络实例。相反,我们正在设计空间本身)。类似于手动设计,我们的目标是可解释性,并发现描述网络的一般设计原则,这些原则简单、工作良好,并在不同的设置环境中进行泛化。与在NAS中一样,我们的目标是利用半自动化程序来帮助实现这些目标。
我们采用的一般策略是逐步设计一个比原始版本更简化的版本,同时保持或提高其质量(图1)。整个过程类似于人工设计,提升到整体水平,并通过网络设计空间的分布估计来指导。
作为这个范例的试验台,我们的重点是探索网络结构(例如,宽度、深度、组等),假设标准模型族包括VGG[26]、ResNet[8]和ResNeXt[31]。我们从一个相对不受约束的设计空间开始,我们称之为AnyNet(例如,宽度和深度在各个阶段自由变化),并应用我们的human-in-the-loop方法,得到一个由简单的“规则”网络组成的低维设计空间,我们称之为RegNet。RegNet设计空间的核心很简单:宽度和深度由量化的线性函数决定。与AnyNet相比,RegNet设计空间具有模型更简单、更易于解释、优秀模型更集中的特点。
图1.Design space design.我们建议设计网路设计空间,其中设计空间是可能的模型架构的参数化集合。设计空间设计类似于人工网络设计,但提升到了总体层次。在我们流程的每个步骤中,输入是一个初始设计空间,输出是一个更简单或更好模型的优化设计空间。在[21]之后,我们通过抽样模型和检查其误差分布来描述设计空间的质量。例如,在上图中,我们从一个初始设计空间A开始,应用两个优化步骤来产生设计空间B然后C。在这种情况下,C⊆B⊆A(左),并且误差分布从A到B到C(右)逐步改善。希望应用于模型总体的设计原则更有可能是鲁棒的和通用的。
我们使用ImageNet上的单个网络块类型,在低计算、低epoch体质中设计RegNet设计空间[3]。然后,我们证明RegNet设计空间可以推广到更大的计算区域、调度长度和网络块类型。此外,设计空间设计的一个重要特性是它更具解释性,并能带来我们可以学习的见解。我们分析了RegNet的设计空间,得出了与当前网络设计实践不匹配的有趣发现。例如,最佳模型的深度在计算区域(∼20个块)内是稳定的,the best models do not use either a bottleneck or inverted bottleneck。
我们将top REGNET模型与不同设置下的现有网络进行比较。首先,REGNET模型在移动领域出奇地有效。我们希望这些简单的模型可以作为今后工作的有力baseline。接下来,REGNET模型在所有指标上都比标准ResNe(X)t8,31]模型有了很大的改进。我们强调了对固定激活函数的改进,这具有很高的实用价值,因为激活函数的数量会强烈影响gpu等加速器上的运行时。接下来,我们将比较计算系统中最先进的EFFICIENTNET[29]模型。在可比较的训练设置和环境情况下,REGNET模型的性能优于EFFICIENTNET模型,而gpu的速度高达5倍。我们在ImageNetV2[24]上进一步测试了泛化能力。
我们注意到,网络结构可以说是设计空间设计中最简单的一种形式。专注于设计更丰富的设计空间(例如,包括运算符)可能会导致更好的网络。尽管如此,该结构仍可能是此类设计空间的核心组成部分。
2. Related Work
Manual network design. AlexNet[13]的引入使网络设计进入了一个蓬勃发展的研究领域。在接下来的几年中,提出了改进的网络设计;示例包括VGG[26]、Inception[27,28]、ResNet[8]、ResNeXt[31]、DenseNet[11]和MobileNet[9,25]。这些网络背后的设计过程主要是手工的,集中在发现新的设计选择,以提高精确度,例如,使用更深的模型或残差。同样,我们的共同目标是发现新的设计原则。实际上,我们的方法类似于手动设计,但在设计空间级别执行。
Automated network design. 近年来,网络设计过程已经从人工探索转向更自动化的网络设计,并在NAS中得到推广。NAS已被证明是一种有效的工具,可用于查找好的模型,例如[35、23、17、20、18、29]。NAS的大部分工作集中在搜索算法上,即在一个固定的、手工设计的搜索空间(我们称之为设计空间)内有效地找到最佳的网络实例。相反,我们关注的是设计新颖设计空间的范例。两者是互补的:更好的设计空间可以提高NAS搜索算法的效率,也可以通过丰富设计空间而导致更好的模型的存在。
Network scaling. 手动和半自动网络设计通常都侧重于为特定区域寻找性能最佳的网络实例(例如,与ResNet-50相当的flops)。由于此过程的结果是单个网络实例,因此不清楚如何使该实例适应不同的状态(例如,更少的flops)。一种常见的做法是应用网络缩放规则,例如改变网络深度[8]、宽度[32]、分辨率[9]或三者一起应用[29]。相反,我们的目标是发现跨平台的通用设计原则,并允许在任何目标区域中有效地调整最佳网络。
Comparing networks. 考虑到大量可能的网络设计空间,必须使用可靠的比较度量来指导我们的设计过程。最近,[21]的作者提出了一种比较和分析从设计空间采样的网络总体的方法。这个distribution-level 视角完全符合我们寻找一般设计原则的目标。因此,我们采用这种方法,并证明它可以作为一个有用的工具,为设计空间的设计过程。
Parameterization. 我们的最终量化线性参数化与之前的工作相同,例如如何设置宽度[26,7,32,11,9]。然而,有两个关键的区别。首先,我们提供了一个实证研究来证明我们所做的设计选择是正确的。第二,我们深入了解以前不了解的结构设计选择(例如,如何设置每个阶段的块数)。
Design Space Design
我们的目标是为视觉识别设计更好的网络。我们研究模型总体的特征,而不是在特定环境下设计或搜索单个最佳模型。我们的目标是发现适用于和改进整个模型总体的一般设计原则。这种设计原则可以提供对网络设计的洞察,并且更可能推广到新的场景(不像针对特定场景调整的单个模型)。
我们依赖于Radosavovic等人引入的网络设计空间概念[21]。设计空间是一个巨大的,可能是无限的,模型结构的总体。[21]的核心观点是,我们可以从一个设计空间对模型进行抽样,产生一个模型分布,然后使用经典统计的工具来分析设计空间。我们注意到这与架构搜索不同,架构搜索的目标是从空间中找到单个最佳模型。
在这项工作中,我们建议设计一个初始的、无约束的设计空间的逐步简化版本。我们把这个过程称为设计空间设计。设计空间设计类似于顺序的人工网络设计,但提升到了人口层次。具体来说,在我们设计过程的每个步骤中,输入是一个初始设计空间,输出是一个优化设计空间,每个设计步骤的目的是发现设计原则,从而产生更简单或性能更好的模型。
我们首先在第3.1节中描述了我们用于设计空间设计的基本工具。接下来,在第3.2节中,我们将我们的方法应用于一个设计空间,称为AnyNet,它允许无约束的网络结构。在第3.3节中,经过一系列的设计步骤,我们得到了一个简化的设计空间,其中只有我们称之为RegNet的规则网络结构。最后,由于我们的目标不是为单个设置设计一个设计空间,而是发现网络设计的一般原则,从而推广到新的设置,因此在第3.4节中,我们测试了RegNet设计空间的推广到新的领域。
相对于AnyNet设计空间,RegNet设计空间是:
(1)在其尺寸和允许的网络配置类型方面都进行了简化,
(2)包含更加高度集中的最佳表现模型,并且
(3)更易于分析和解释。
3.1. Tools for Design Space Design
我们从设计空间设计工具的概述开始。为了评估和比较设计空间,我们使用Radosavovic等人介绍的工具。[21],他提议通过从设计空间采样一组模型并描述由此产生的模型误差分布来量化设计空间的质量。这种方法背后的关键是,与使用搜索(手动或自动)和比较两个设计空间中的最佳发现模型相比,比较分布更加可靠和信息量更大。
图2.用n=500个抽样模型计算的AnyNetX设计空间的统计。左:误差经验分布函数(EDF)是我们可视化设计空间质量的基本工具。在图例中,我们显示最小误差和平均误差(对应于曲线下的区域)。中间:网络深度d(块数)与误差的分布。右:第四阶段(w4)的块宽度分布与误差。蓝色阴影区域包含95%置信度的最佳模型(通过经验引导获得),黑色垂直线是最有可能的最佳值。
为了得到模型的分布,我们从设计空间对n个模型进行采样和训练。为了提高效率,我们主要在低计算、低epoch的训练模式下进行。特别是,在本节中,我们使用4 million flop(400MF)模式(按照惯例,我们用flops来表示乘法和。此外,我们使用MF和GF分别表示
1
0
6
10^6
106和
1
0
9
10^9
109个flops。),并在ImageNet数据集[3]上为10个阶段训练每个采样模型。我们注意到,虽然我们训练了许多模型,但每次训练都很快:在400MF下训练100个模型,训练10个epoch,这与在4GF下训练单个ResNet-50[8]模型,训练100个epoch大致相当。
与文献[21]一样,我们分析设计空间质量的主要工具是误差经验分布函数(EDF)。n个模型的误差EDF和误差
e
i
e_i
ei由以下公式给出:
F
(
e
)
=
1
n
∑
i
=
1
n
1
[
e
i
<
e
]
.
F(e)=\frac{1}{n}\sum_{i=1}^n1[e_i<e].
F(e)=n1i=1∑n1[ei<e].
F
(
e
)
F(e)
F(e)给出了误差小于
e
e
e的模型分数。我们在图2(左)中显示了AnyNetX设计空间(详细见3.2节)中n=500个采样模型的误差EDF。
给定一组经过训练的模型,我们可以绘制和分析各种网络特性与网络误差的关系,请参见图2(中间)和图2(右侧)中来自AnyNetX设计空间的两个示例。这种可视化显示了复杂的高维空间的一维投影,有助于深入了解设计空间。对于这些图,我们使用经验bootstrap(给定N对
(
x
i
,
e
i
)
(x_i,e_i)
(xi,ei),其中模型统计
x
i
x_i
xi(例如深度)和相应的误差
e
i
e_i
ei,我们计算经验引导程序:(1)对样本的替换25%,(2)选择样本中的最小误差对,(3)重复这
1
0
4
10^4
104次,最后(4)计算最小x值的95% CI。中值给出了最有可能的最佳值。)[5]来估计最佳模型下降的可能范围。
总结如下:
(1)我们从设计空间中抽样和训练n个模型,得到模型的分布;
(2)我们计算并绘制误差EDFs,以总结设计空间质量;
(3)我们可视化设计空间的各种属性,并使用经验引导获得观测结果;
(4)我们使用这些观测结果来细化设计空间。
图3.设计空间中模型的一般网络结构。(a) 每个网络由一个主干(stride=2的3×3 卷积,
w
0
=
32
w_0=32
w0=32输出通道)+执行大量计算的网络主体+预测n个输出类的head(平均池和完全连接层)组成。(b) 网络主体由一系列以逐渐降低的分辨率
r
i
r_i
ri组成。(c)除了第一个块使用stride=2de的卷积网络外, 每个阶段由一系列相同的块组成。虽然总体结构简单,但可能的网络配置总数很大。
3.2. The AnyNet Design Space
接下来介绍我们最初的AnyNet设计空间。我们的重点是探索神经网络的结构,假设标准的、固定的网络块(例如,残差bottleneck块)。在本文的术语中,网络的结构包括诸如:块的数目(即网络深度)、块的宽度(即channel的数目)和bottleneck比率或group widths等元素。网络的结构决定了计算、参数和内存在整个网络计算图中的分布,是决定其准确性和效率的关键。
在我们的AnyNet设计空间中,网络的基本设计是简单的。给定一个输入图像,一个网络由一个简单的stem、执行大部分计算的网络主体(body)和一个预测输出类的最终网络主体(head)组成,如图3a所示。我们将stem和head保持固定并尽可能简单,而将重点放在确定网络计算和精度。
网络主体由4个阶段组成,以逐渐降低分辨率,见图3b(我们在第3.4节中探讨了改变阶段(stage)的数量)。每个阶段(stage)由一系列相同的块组成,见图3c。总的来说,每个阶段
i
i
i的自由度包括块数
d
i
d_i
di、块宽度
w
i
w_i
wi和任何其他块参数。虽然总体结构简单,但是AnyNet设计空间中可能的网络总数是巨大的。
我们的大多数实验使用标准的残差瓶颈块和组卷积[31]1,如图4所示。我们将其称为X块,并将其上构建的AnyNet设计空间称为AnyNetX(我们在第3.4节中探索其他块)。虽然X块是相当初级的,但我们表明,当网络结构优化时,它可以出奇地有效。
图4.X块基于具有组卷积的标准残差瓶颈块[31]。(a) 每个X块由1×1 conv、3×3 group conv和最后1×1 conv组成,其中1×1 conv改变channel宽度.BatchNorm[12]和ReLUfollow每个conv。块有3个参数:宽度
w
i
w_i
wi、bottleneck比率
b
i
b_i
bi和组宽度
g
i
g_i
gi.(b) stride=2(s=2)版本。
AnyNetX设计空间有16个自由度,因为每个网络由4个stage组成,每个stage
i
i
i有4个参数:块数
d
i
d_i
di、块宽度
w
i
w_i
wi、bottleneck比率
b
i
b_i
bi和组宽度
g
i
g_i
gi。除非另有说明,否则我们固定输入分辨率r=224。为了得到有效的模型,我们对
d
i
≤
16
,
w
i
≤
1024
d_i≤16,wi≤1024
di≤16,wi≤1024并且可被8整除,
b
i
∈
1
,
2
,
4
,
g
i
∈
1
,
2
,
.
.
.
,
32
b_i∈{1,2,4},g_i∈{1,2,...,32}
bi∈1,2,4,gi∈1,2,...,32(稍后测试这些范围)。我们重复采样,直到在我们的目标复杂度范围(360MF到400MF)中获得n=500个模型,并对每个模型进行10个epoch的训练。图2显示了AnyNetX的5个基本统计数据。
AnyNetX设计空间中有
(
16
⋅
128
⋅
3
⋅
6
)
4
≈
1018
(16·128·3·6)4≈1018
(16⋅128⋅3⋅6)4≈1018种可能的模型配置。与其从这些∼
1
0
18
10^{18}
1018配置中寻找单一的最佳模型,不如探索是否有通用的设计原则可以帮助我们理解和完善这个设计空间。为此,我们应用我们的设计空间的方法,在这一方法的每一步中,我们的目标是:
1.为了简化设计空间的结构,
2.为了提高设计空间的可解释性,
3.为了提高或保持设计空间的质量,
4.保持设计空间中的模型多样性。
我们现在将此方法应用于AnyNetX设计空间。
A
n
y
N
e
t
X
A
AnyNetX_A
AnyNetXA 为了清楚起见,我们将最初的无约束
A
n
y
N
e
t
X
AnyNetX
AnyNetX设计空间称为
A
n
y
N
e
t
X
A
AnyNetX_A
AnyNetXA。
A
n
y
N
e
t
X
B
AnyNetX_B
AnyNetXB 我们首先测试
A
n
y
N
e
t
X
A
AnyNetX_A
AnyNetXA设计空间的所有阶段i的共享瓶颈比率(bottleneck ratio)
b
i
=
b
b_i=b
bi=b,并将得到的设计空间称为
A
n
y
N
e
t
X
B
AnyNetX_B
AnyNetXB。和以前一样,我们在相同的设置下对来自
A
n
y
N
e
t
X
B
AnyNetX_B
AnyNetXB的500个模型进行采样和训练。图5(左)所示的
A
n
y
N
e
t
X
A
AnyNetX_A
AnyNetXA和
A
n
y
N
e
t
X
B
AnyNetX_B
AnyNetXB的EDF在平均和最佳情况下几乎相同。这表明耦合
b
i
b_i
bi时精度没有损失。除了更简单之外,
A
n
y
N
e
t
X
B
AnyNetX_B
AnyNetXB更易于分析,如图5(右)所示。
A
n
y
N
e
t
X
C
AnyNetX_C
AnyNetXC 我们的第二个改进步骤紧跟第一步。从
A
n
y
N
e
t
X
B
AnyNetX_B
AnyNetXB开始,我们还为所有阶段使用共享组宽度
g
i
=
g
g_i=g
gi=g来获得
A
n
y
N
e
t
X
C
AnyNetX_C
AnyNetXC。和以前一样,EDFs几乎没有变化,见图5(中间)。总的来说,
A
n
y
N
e
t
X
C
AnyNetX_C
AnyNetXC比
A
n
y
N
e
t
X
A
AnyNetX_A
AnyNetXA少了6个自由度,并将设计空间大小减少了近四个数量级。有趣的是,我们发现
g
>
1
g>1
g>1是最好的(未显示);我们在第4节中对此进行了更详细的分析.
A
n
y
N
e
t
X
D
AnyNetX_D
AnyNetXD 接下来,我们检查图6中来自
A
n
y
N
e
t
X
C
AnyNetX_C
AnyNetXC的好网络和坏网络的典型网络结构。一种模式出现了:好的网络有越来越多的宽度。我们测试了
w
i
+
1
≥
w
i
w_i+1≥w_i
wi+1≥wi的设计原理,并将具有此约束的设计空间称为
A
n
y
N
e
t
X
D
AnyNetX_D
AnyNetXD。在图7(左)中,我们看到这大大改善了EDF。我们将很快回到检查控制宽度的其他选项。
A
n
y
N
e
t
X
E
AnyNetX_E
AnyNetXE 在对许多模型(未显示)进行进一步检查后,我们观察到另一个有趣的趋势。除了宽度会随着i的增加而增加,深度
d
i
d_i
di也会随着最佳模型的增加而增加,尽管不一定是在最后阶段。尽管如此,我们测试了一个设计空间变量
A
n
y
N
e
t
X
E
AnyNetX_E
AnyNetXE,其
d
i
+
1
≥
d
i
d_i+1≥d_i
di+1≥di如图7(右)所示,并看到它也改善了结果。最后,我们注意到
w
i
w_i
wi和
d
i
d_i
di每一个上的约束使设计空间减少了4!,并从
A
n
y
N
e
t
X
A
AnyNetX_A
AnyNetXA中累积减少
O
(
1
0
7
)
O(10^7)
O(107)。
3.3. The RegNet Design Space
为了进一步了解模型结构,我们在一个图中展示了AnyNetXE中最好的20个模型,见图8(左上角)。对于每个模型,我们绘制每个块j到网络深度d的每个块宽度wjof(我们分别使用i和j索引阶段和块)。关于我们的模型可视化的参考,请参见图6。