近期特斯拉自动驾驶技术大火,经过对技术发布会的了解,特斯拉基于纯视觉技术所用的特征提取骨干为:RegNet,因此对相关的论文进行了研读。
论文下载: https://arxiv.org/abs/2003.13678
论文代码: https://github.com/facebookresearch/pycls
在这项工作中,作者提出了一种新的网络设计范式。目标是帮助提高对网络设计的理解,并发现跨设置的设计原则。此文不是专注于设计单独的网络实例,而是设计网络设计空间,使网络群体参数化。整个过程类似于经典的手工网络设计,但提升到设计空间层面。作者探索网络设计的结构方面,并到达一个低维的设计空间,由简单,规则的网络组成,称之为RegNet。RegNet参数化的核心观点非常简单:好的网络的宽度和深度可以用量化的线性函数来解释。此外作者分析了RegNet设计空间,并得出了与当前网络设计实践不匹配的有趣发现。RegNet的设计空间提供了简单、快速的网络,可以很好地跨越各种机制。在类似的训练设置和参数的情况下,RegNet模型的表现优于流行的EfficientNet模型,同时在gpu上的速度提高了5倍。
一、引言
在这项工作中,作者提出了一种新的网络设计范式,它结合了手动设计和NAS的优点。不是专注于设计单个网络实例,而是设计参数化网络种群的设计空间就像在手工设计中一样,作者的目标是可解释性,并发现描述网络的一般设计原则,这些原则简单,工作良好,并且可以在各种设置中推广。与NAS一样,是利用半自动程序来帮助实现这些目标。
作者采用的策略是逐步设计初始的、相对无约束的设计空间的简化版本,同时保持或提高其质量(下图)。整个过程类似于人工设计,提升到总体水平,并通过网络设计空间的分布估计进行指导。
在上图中,从初始设计空间A开始,通过两个细化步骤得到设计空间B和C。在这种情况下,C≥B≥A(左),误差分布从A→B→C(右)严格改进。希望应用于模型总体的设计原则更有可能是健壮的和一般化的。
作为该范式的测试平台,作者的重点是探索网络结构(例如,宽度,深度,分组等),假设标准模型族包括VGG, ResNet和ResNeXt。作者从一个相对不受约束的设计空间开始,称之为AnyNet(例如,宽度和深度在各个阶段自由变化),并应用人机协作的方法来达到一个由简单的“规则”网络组成的低维设计空间,称之为RegNet。RegNet设计空间的核心很简单:阶段性的宽度和深度由量化线性函数决定。与AnyNet相比,RegNet设计空间具有更简单的模型,更容易解释,并且具有更高的好模型集中度。
作者首先使用ImageNet上的单一网络块类型,在低计算、低训练轮次的情况下设计RegNet设计空间。然后将RegNet设计空间推广到更大的计算体系、训练轮次和网络块类型。此外,设计空间设计的一个重要属性是它更具可解释性,并且可以推导出可以学习的见解。作者分析了RegNet设计空间,并得出了与当前网络设计实践不匹配的有趣发现。例如,最佳模型的深度在计算机制(~ 20个块)中是稳定的,并且最佳模型不使用瓶颈或反向瓶颈。
作者将最优的RegNet模型与各种设置下的现有网络进行比较。首先,RegNet模型在移动领域出奇地有效。作者希望这些简单的模型可以作为未来工作的有力基础。
其次,RegNet模型在所有指标上都比标准ResNet模型有了相当大的改进。作者强调了固定激活函数数量的改进,这是非常实用的,因为激活函数的数量会强烈影响gpu等加速器的运行时间。作者跨计算体系比较最先进的effentnet模型。在类似的训练设置和参数量情况下,RegNet模型的性能优于efficientnet模型,同时在gpu上的速度提高了5倍。在ImageNetV2上进一步测试了模型的泛化能力。
作者注意到,网络结构可以说是设计空间设计中最简单的形式。专注于设计更丰富的设计空间(例如,各种操作算子)可能会带来更好的网络。然而,这种结构可能仍然是这种设计空间的核心组成部分。
作者的方法类似于手工设计,但在设计空间级别执行。同时作者的重点是设计新颖设计空间的范例。更好的设计空间可以提高NAS搜索算法的效率,也可以通过丰富设计空间发现更好模型的存在。作者最终的量化线性参数与之前的工作有相似之处,例如如何设置每一个阶段的宽度。然而,有两个关键的区别。首先,本文提供了一个实证研究来证明所做的设计选择。其次,提供了以前不理解的结构设计选择的见解(例如,如何设置每个阶段的块数量)。
二、设计空间设计
设计空间是一个巨大的、可能是无限的模型架构的集合。可以从设计空间中采样模型,从而产生模型分布,并转向经典统计学工具来分析设计空间。这与架构搜索不同,架构搜索的目标是从空间中找到单一的最佳模型。在这项工作中,作者建议设计一个初始的、不受约束的设计空间的逐步简化版本。这个过程称为设计空间设计。设计空间设计类似于连续的人工网络设计,但提升到流行的水平。具体来说,在设计过程的每个步骤中,输入是初始设计空间,输出是精炼设计空间,其中每个设计步骤的目的是发现产生更简单或性能更好的模型的设计原则。相对于AnyNet设计空间,RegNet设计空间:(1)在其维度和允许的网络配置类型方面进行了简化,(2)包含了更高的顶级性能模型集中度,(3)更易于分析和解释。
(一)、设计空间设计工具
设计空间设计的工具。为了评估和比较设计空间,使用Radosavovic等人引入的工具,他们建议通过从设计空间中抽取一组模型并描述所得到的模型误差分布来量化设计空间的质量。这种方法背后的关键直觉是,比较分布比使用搜索(手动或自动)和比较从两个设计空间中找到的最佳模型更健壮,信息更丰富。为了获得模型的分布,作者从一个设计空间中采样和训练n个模型。为了提高效率,主要采用低计算、低轮次的训练模式。特别是,在本节中,作者使用4亿flop(400MF)模式,并在ImageNet数据集上训练每个采样模型10个epoch。虽然训练了许多模型,但每次训练运行速度都很快:以400MF训练100个模型10次,其次数大致相当于以4GF训练单个ResNet-50模型100次。作者分析设计空间质量的主要工具是误差经验分布函数(EDF)。n个误差为
e
i
e_i
ei的模型的误差EDF为:
F
(
e
)
F(e)
F(e)给出误差小于e的模型的比例。在下图(左)中显示了来自AnyNetX设计空间的n = 500个采样模型的误差EDF。
给定一组训练好的模型,可以绘制和分析各种网络属性和网络误差,如上图(中)和(右),其中有两个来自AnyNetX设计空间的示例。这种可视化显示了一个复杂的高维空间的一维投影,可以帮助我们深入了解设计空间。对于这些图,我们采用empirical bootstrap来估计最佳模型落在其中的可能范围。
综上所述:(1)从设计空间中采样和训练n个模型,生成模型的分布;(2)计算和绘制误差edf,以总结设计空间的质量;(3)将设计空间的各种属性可视化,并使用empirical bootstrap来获得洞察力;(4)使用这些洞察力来改进设计空间。
(二)、AnyNet设计空间
接下来介绍最初的AnyNet设计空间。重点是探索假设标准的、固定的网络块(例如,残差瓶颈块)的神经网络结构。在本文的术语中,网络的结构包括一些元素,如区块的数量(即网络深度),块宽度(即通道数量)和其他块参数,如瓶颈比率或分组宽度。网络的结构决定了整个网络计算中计算量、参数和内存的分布,是决定其准确性和效率的关键。
在的AnyNet设计空间中,网络的基本设计是直接的。给定一个输入图像,网络由一个简单的骨干组成,接着是执行大部分计算的网络主体,最后是预测输出类的网络头,见下图a。保持茎和头的固定和尽可能的简单,而把重点放在网络体的结构上,这是决定网络计算和精度的核心。
网络主体由4个以逐渐降低的分辨率运行的阶段组成,见上3b。每个阶段由一系列相同的块组成,见上图c。总的来说,对于每个阶段i,自由度包括块数
d
i
d_i
di,块宽度
w
i
w_i
wi和任何其他块参数。虽然总体结构很简单,但AnyNet设计空间中可能的网络总数是巨大的。
本文们的大多数实验使用标准的残差瓶颈块与分组卷积,如下图所示。将其称为X块,并将AnyNet设计空间建立在AnyNetX上。
虽然X块相当初级,但当网络结构得到优化时,它可以出奇地有效。
AnyNetX的设计空间有16个自由度,每个网络由4个阶段组成,每个阶段
i
i
i有4个参数:块数
d
i
d_i
di、块宽度
w
i
w_i
wi、瓶颈比
b
i
b_i
bi、组宽度
g
i
g_i
gi。除非另有说明,否则固定输入分辨率r = 224。为了得到有效的模型,对于
d
i
d_i
di≤16,
w
i
w_i
wi≤1024且能被8整除,
b
i
b_i
bi∈{1,2,4},
g
i
g_i
gi∈{1,2, 32}进行对数均匀抽样。重复采样,直到获得n = 500个模型(在目标复杂性度360MF到400MF),并训练每个模型10个epoch。AnyNetX的基本统计数据如下图所示
在AnyNetX设计空间中有
(
16
⋅
128
⋅
3
⋅
6
)
4
≈
1018
(16·128·3·6)4≈1018
(16⋅128⋅3⋅6)4≈1018种可能的模型配置。作者并不是在这1018种配置中寻找单一的最佳模型,而是探索是否存在可以帮助我们理解和完善这一设计空间的一般设计原则。为此,作者运用设计设计空间的方法。在这种方法的每一步中,作者的目标是:
1。简化设计空间的结构;
2 .提高设计空间的可解释性;
3 .提高或保持设计空间的质量;
4.保持设计空间中模型的多样性。
我们现在将这种方法应用于AnyNetX设计空间。为了清晰起见,将最初的、不受约束的AnyNetX设计空间称为 A n y N e t X A AnyNetX_A AnyNetXA
首先为
A
n
y
N
e
t
X
A
AnyNetX_A
AnyNetXA设计空间的所有阶段
i
i
i测试共享瓶颈比率
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个模型进行采样和训练。如下图(左)所示,
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还更易于分析,参见下图(右)。
第二个细化步骤紧跟第一个步骤。从
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。和前面一样,edf几乎没有变化,参见上图(中间)。总体而言,
A
n
y
N
e
t
X
C
AnyNetX_C
AnyNetXC的自由度比
A
n
y
N
e
t
X
A
AnyNetX_A
AnyNetXA少6个,并且将设计空间大小减少了近4个数量级。有趣的是,g > 1是最好的。
接下来,下图中展示了来自
A
n
y
N
e
t
X
C
AnyNetX_C
AnyNetXC的好网络和坏网络的典型网络结构。一种模式出现了:好的网络宽度越来越大。
上图展示了,好的和坏的
A
n
y
N
e
t
X
C
AnyNetX_C
AnyNetXC网络,分别显示在顶部和底部的行中。对于每个网络,绘制了每个块
j
j
j到网络深度
d
d
d的宽度
w
j
w_j
wj。这些每个块宽度
w
j
w_j
wj是从每个阶段的块深度
d
i
d_i
di和块宽度
w
i
w_i
wi计算出来的(在图例中列出以供参考)。
根据
w
i
+
1
≥
w
i
w_{i+1}≥w_i
wi+1≥wi的设计原则,并将此约束下的设计空间称为
A
n
y
N
e
t
X
D
AnyNetX_D
AnyNetXD。在下图(左)中,看到这大大提高了EDF。
在进一步检查许多模型之后,作者观察到另一个有趣的趋势。除了阶段块的宽度随
i
i
i增加外,最佳模型的阶段深度
d
i
d_i
di也有增加的趋势,尽管不一定是在最后阶段。然而,在上图(右)中测试了
d
i
+
1
≥
d
i
d_{i+1}≥d_i
di+1≥di的设计空间变体
A
n
y
N
e
t
X
E
AnyNetX_E
AnyNetXE,并看到它的结果也得到了改善。最后,
w
i
w_i
wi和
d
i
d_i
di的约束分别减少了4个设计空间。
(三)、RegNet设计空间
为了进一步了解模型结构,在下图中显示了
A
n
y
N
e
t
X
E
AnyNetX_E
AnyNetXE中最好的20个模型,参见下图(左上角)。对于每个模型,绘制每个块
j
j
j的每个块宽度
w
j
w_j
wj,以及网络深度d,使用
i
i
i和
j
j
j分别对阶段和块进行索引。
虽然个别模型(灰色曲线)存在显著差异,但在总体上出现了一种模式。特别是,在同一张图中,当
0
≤
j
≤
20
0≤j≤20
0≤j≤20时,显示了直线
w
j
=
48
⋅
(
j
+
1
)
wj = 48·(j+1)
wj=48⋅(j+1)(实黑色曲线,请注意y轴是对数)。值得注意的是,这种微不足道的线性拟合似乎解释了顶级模型的网络宽度增长的流行趋势。然而,这种线性拟合为每个块分配了不同的宽度
w
j
w_j
wj,而单个模型具有量化的宽度(分段常数函数)。
为了查看类似的模式是否适用于单个模型,需要一种策略来将一条线量化为分段常数函数。受
A
n
y
N
e
t
X
D
AnyNetX_D
AnyNetXD和
A
n
y
N
e
t
X
E
AnyNetX_E
AnyNetXE的启发,作者提出了以下方法。首先,引入了块宽度的线性参数化:
该参数化有三个参数:深度
d
d
d,初始宽度
w
0
>
0
w_0 > 0
w0>0,坡度
w
a
>
0
w_a > 0
wa>0,并为每个块
j
<
d
j < d
j<d生成不同的块宽度
u
j
u_j
uj。为了量化
u
j
u_j
uj,作者引入一个额外的参数
w
m
>
0
w_m > 0
wm>0来控制量化,如下所示。为每个块
j
j
j计算
s
j
s_j
sj,使以下条件成立:
然后,为了量化
u
j
u_j
uj,只需将
s
j
s_j
sj(用KaTeX parse error: Expected group after '_' at position 3: sj_̲表示)四舍五入,并通过以下方式计算量化的每块宽度
w
j
w_j
wj:
可以将每块
w
j
w_j
wj转换为的每阶段格式,只需计算具有恒定宽度的块的数量,即每个阶段
i
i
i的块宽度
w
i
=
w
0
⋅
w
m
i
w_i = w_0·w^i_m
wi=w0⋅wmi,块数量为:
当只考虑四阶段网络时,忽略了产生不同阶段数的参数组合。
通过拟合
A
n
y
N
e
t
X
AnyNet_X
AnyNetX的模型来测试这种参数化。特别是,给定一个模型,通过将d设置为网络深度并在
w
0
w_0
w0,
w
a
w_a
wa和
w
m
w_m
wm上执行网格搜索来计算拟合,以最小化预测到观察到的每个块宽度的平均对数比(用
e
f
i
t
e_{fit}
efit表示)。
图8(右上)显示了
A
n
y
N
e
t
X
E
AnyNetX_E
AnyNetXE中两个顶级网络的结果。量化线性拟合(虚线曲线)很好地拟合了这些最佳模型(实线曲线)。
为了进一步测试线性参数化,设计了一个只包含具有这种线性结构的模型的设计空间。通过6个参数指定网络结构:
d
,
w
0
,
w
a
,
w
m
d, w_0, w_a, w_m
d,w0,wa,wm(还有b, g)。将最终的设计空间称为
R
e
g
N
e
t
RegNet
RegNet,因为它只包含简单、规则的模型。采样
d
<
64
d < 64
d<64,
w
0
w_0
w0,
w
a
<
256
w_a < 256
wa<256,
1.5
≤
w
m
≤
3
1.5≤w_m≤3
1.5≤wm≤3,b和g与之前一样(范围根据
A
n
y
N
e
t
X
E
AnyNetX_E
AnyNetXE上的
e
f
i
t
e_fit
efit设置)
R
e
g
N
e
t
X
RegNet_X
RegNetX的精度EDF如下图所示(左)。
R
e
g
N
e
t
X
RegNet_X
RegNetX中的模型在保持最佳模型的同时具有比
A
n
y
N
e
t
X
AnyNet_X
AnyNetX更好的平均误差。在下图(中间)中,测试了两个进一步的简化。首先,使用
w
m
=
2
w_m = 2
wm=2(阶段之间宽度加倍)稍微改善了EDF,但注意到使用
w
m
≥
2
w_m≥2
wm≥2的效果更好(稍后会显示)。其次,进一步测试设置
w
0
=
w
a
w_0 = w_a
w0=wa,将线性参数化简化为
u
j
=
w
a
⋅
(
j
+
1
)
u_j = w_a·(j + 1)
uj=wa⋅(j+1)。
这种方法的性能甚至更好。然而,为了保持模型的多样性,没有施加任何限制。最后,在下图(右)中,显示
R
e
g
N
e
t
X
RegNet_X
RegNetX的随机搜索效率要高得多;只搜索 32个随机模型就可能产生好的模型。
下表展示了设计空间大小的总结(对于RegNet,通过量化其连续参数来估计大小)。在RegNetX的设计中,将原来的
A
n
y
N
e
t
X
AnyNet_X
AnyNetX设计空间的维数从16维降到了6维,尺寸缩小了近10个数量级。然而,RegNet仍然包含各种各样的模型,可以针对各种设置进行调整。
(四)、设计空间概括
作者设计RegNet设计空间在一个低计算,低epoch的训练体制,只有一个单一的块类型。然而,本文不是为单一设置设计设计空间,而是发现可以推广到新设置的网络设计的一般原则。
在上图中,作者比较了 R e g N e t X RegNet_X RegNetX与 A n y N e t X A AnyNetX_A AnyNetXA和 A n y N e t X E AnyNetX_E AnyNetXE在更高的flop、更高的epoch、5级网络和各种块类型下的设计空间。在所有情况下,设计空间的顺序是一致的, R e g N e t X > A n y N e t X E > A n y N e t X A RegNet_X > AnyNetX_E > AnyNetX_A RegNetX>AnyNetXE>AnyNetXA。换句话说,没有看到过拟合的迹象。这些结果很有希望,因为它们表明RegNet可以推广到新的设置。这5个阶段的结果表明RegNet的规则结构可以推广到更多的阶段,其中 A n y N e t X A AnyNetX_A AnyNetXA具有更多的自由度。
三、RegNetX设计空间分析
本节分析产生了与流行实践不同的令人惊讶的见解,这使我们能够用简单的模型获得良好的结果。
由于
R
e
g
N
e
t
X
RegNet_X
RegNetX设计空间有高度集中的好模型,对于下面的结果,切换到采样更少的模型(100),但训练它们的时间更长(25个epoch),学习率为0.1。这样做是为了观察网络行为中更细粒度的趋势。
RegNet趋势。在下图中展示了
R
e
g
N
e
t
X
RegNet_X
RegNetX参数的趋势。值得注意的是,最佳模型的深度在各个区域都是稳定的(左上),最佳深度为20块(60层)。这与通常使用更深的模型来处理更高的复杂度情况形成了对比。最好的模型使用瓶颈比b为1.0(中上),这有效地消除了瓶颈(在实践中经常使用)。接下来,作者观察到好的模型的宽度
w
m
w_m
wm倍数数是2.5(右上),类似于跨阶段宽度加倍的流行配方,但不完全相同。其余参数(
g
,
w
a
,
w
0
g, w_a, w_0
g,wa,w0)随着复杂度的增加而增加(下图底部)。
复杂性分析。除了flops和参数之外,还分析了网络的激活函数,将其定义为所有conv层的输出张量的大小(下图中列出了常见conv操作符的复杂性度量)。虽然不是衡量网络复杂性的常用方法,但激活函数会严重影响内存受限硬件加速器(例如gpu、tpu)上的运行时间,例如,下图(顶部)。在下图(底部)中,对于总体中最好的模型,激活随着flops的平方根而增加,参数线性增加,并且运行时间最好同时使用线性和平方根项建模,因为它依赖于flops和激活层。
RegNetX受限性。利用这些发现,作者改进了
R
e
g
N
e
t
X
RegNet_X
RegNetX设计空间。首先,根据下图(顶部),设
b
=
1
,
d
≤
40
,
w
m
≥
2
b = 1, d≤40,w_m≥2
b=1,d≤40,wm≥2。其次,限制参数和激活层,如上图(底部)所示。这将产生快速、低参数、低内存的模型,而不会影响准确性。在图13中,我们用这些约束测试
R
e
g
N
e
t
X
RegNet_X
RegNetX,并观察到约束版本在所有翻牌机制中都更优越。我们在接下来的实验中使用这个版本,并进一步将深度限制为
12
≤
d
≤
28
12≤d≤28
12≤d≤28。
备选设计选择。现代移动网络通常采用反向瓶颈(b < 1)和深度卷积(g = 1)。在下图(左)中,作者观察到反向瓶颈略微降低了EDF,深度卷积相对于b = 1和g≥1表现更差。缩放输入图像分辨率可能有所帮助,在下图(中)中测试了不同分辨率。作者发现对于
R
e
g
N
e
t
X
RegNet_X
RegNetX,即使在更高的flops下,固定分辨率224×224也是最好的。
最后,用流行的挤压和激励(SE) 来评估
R
e
g
N
e
t
X
RegNet_X
RegNetX(将X+SE缩写为Y,并将得到的设计空间称为
R
e
g
N
e
t
Y
RegNet_Y
RegNetY。在上图(右)中,看到RegNetY产生了很好的收益。
四、与现有网络的比较
将
R
e
g
N
e
t
X
RegNet_X
RegNetX和
R
e
g
N
e
t
Y
RegNet_Y
RegNetY设计空间中的顶级模型与ImageNet上的最先进模型进行比较。用小的大写字母表示单个模型。我们还在模型的后缀中加入了复杂度,例如400MF。对于每个复杂度机制,从RegNet参数
(
d
,
g
,
w
m
,
w
a
,
w
0
)
(d, g, w_m, w_a, w_0)
(d,g,wm,wa,w0)的25个随机设置中选择最佳模型,并在100个epoch中重新训练顶级模型5次,以获得稳健的误差估计。
每个翻牌机制的最终
R
E
G
N
E
T
X
REGNET_X
REGNETX和
R
E
G
N
E
T
Y
REGNET_Y
REGNETY模型分别显示在下面两个图中。除了简单的线性结构和上文分析的趋势外,还观察到一个有趣的模式。也就是说,较高的复杂度模型在第三阶段有大量的区块,在最后阶段有少量的区块。这类似于标准RESNET模型的设计。
此外,分组宽度g随着复杂性的增加而增加,但深度d对于大型模型趋于饱和。