Designing Network Design Spaces论文导读
Kaiming He的力作,内容非常之丰富,且具有很大的指导意义。大多数的NAS都是只找到一个最优的结构,本文则通过不断的缩小假设空间,以找到一簇比较优秀的网络:
通过采样进行超参数的选择,根据误差的经验分布函数(empirical distribution function, EDF)对假设空间不断的缩小:
F
(
e
)
=
1
n
∑
i
=
1
n
1
[
e
i
<
e
]
F(e)=\frac{1}{n}\sum_{i=1}^{n}\bold{1}{[e_i < e]}
F(e)=n1i=1∑n1[ei<e]
AnyNetX
首先定义一个通用的神经网络框架AnyNet
基于标准的残差网络,用residual block替换AnyNet的stage中block,可以得到一系列的AnyNetX
此时AnyNetX有16个自由度,包括四个stage的以下参数:
t
h
e
n
u
m
b
e
r
o
f
b
l
o
c
k
s
:
d
i
≤
16
b
l
o
c
k
w
i
d
t
h
:
w
i
≤
1028
b
o
t
t
l
e
n
e
c
k
r
a
t
i
o
:
b
i
∈
1
,
2
,
4
g
r
o
u
p
w
i
d
t
h
:
g
i
∈
1
,
2
,
⋯
,
32
\begin{aligned} {\rm the \space number \space of \space blocks} &: d_i\leq16\\ {\rm block \space width} &: w_i\leq1028\\ {\rm bottleneck \space ratio} &: b_i\in{1,2,4}\\ {\rm group \space width} &: g_i\in{1,2,\cdots,32} \end{aligned}
the number of blocksblock widthbottleneck ratiogroup width:di≤16:wi≤1028:bi∈1,2,4:gi∈1,2,⋯,32
这样粗略的组合一下有
(
16
⋅
128
⋅
3
⋅
6
)
4
≈
1
0
18
(16·128·3·6)^4 ≈ 10^{18}
(16⋅128⋅3⋅6)4≈1018种模型配置,接下来开始逐步缩小此空间。
AnyNetXB,AnyNetXC
首先让每一个stage的 b i = b , g i = g b_i=b,g_i=g bi=b,gi=g
可以发现不同的让每一个stage的 b , g b,g b,g保持一致对模型的误差并没有太大的影响,在这里选择 g > 1 g>1 g>1。同时对AnyNetXC中表现较好的和较差的模型进行采样如下所示:
如上图所示,好的AnyNetXC的通道数 w w w是随着block上升的,这和手工设计的网络是有相似之处的。
AnyNetXD,AnyNetXE
论文继续在参数空间的基础之上加限制,AnyNetXD是AnyNetXC + w i + 1 > w i +w_{i+1}>w_i +wi+1>wi;AnyNetXE是AnyNetXC + d i + 1 > d i +d_{i+1}>d_i +di+1>di
可以看到模型的通道数 w w w和组数 g g g随着block增长的情况下,模型的表现比较好。为了进一步的探究AnyNetXE,选择其中表现最好的20个模型:
上图左上子图显示出一个直观的结论:模型的通道数与block数呈现出来简单的线性关系时,模型的表现较好
u
j
=
w
0
+
w
a
∗
j
u_j=w_0+w_a*j
uj=w0+wa∗j
可以简化上式为
u
j
=
w
0
∗
w
m
s
j
u_j=w_0*w_m^{s_j}
uj=w0∗wmsj
其中
w
m
w_m
wm是额外的控制参数。通常设置如下:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ w_i &= w_0*w^i…
至此,论文已经选出了最优的参数设置,作者将它称为RegNetX。
RegNetX
RegNetX的参数设置如下所示
RegNetX的设计空间如下图
Generalization
通过对flops,训练轮数epoch和stage的个数进行泛化分析,可以发现任何情况下最后的RegNetX都表现的最好
RegnetX Analysis
Trend
首先是各个参数随着flops变化的稳定性,如下图所示
可以得到以下有反常识的结论:
- 对于不同的flops,网络的深度 d d d是最稳定的参数
- Bottleneck ratio最好设置为1
- 参数 w m w_m wm最优为2.5,也即不同的stage通道数应番2.5倍,而非通常设置的2
- w a , w 0 , g w_a,w_0,g wa,w0,g贼倾向于随着flops的增大而增大
Complexity
作者通过调整模型的flops,对激活函数、推理时间等也进行了分析,可以预想到随着flops的增加,推理时间会上升。作者还发现了十分有意思的一点,即推断时间和激活函数基本上成正比!也就说 t i n f e r = O ( M ( a c t i v a t i o n s ) ) t_{infer}=O(M({\rm activations})) tinfer=O(M(activations))!
RegNetX C
根据前面Trend部分得到的结论,进一步对RegNet(AnyNetE)进行限制:
b
=
1
d
≤
40
w
m
≥
2
\begin{aligned} b &= 1 \\ d &\leq 40 \\ w_m &\geq 2 \end{aligned}
bdwm=1≤40≥2
并且同时限制激活函数的数量,得到了以下EDF
可以看到在不同的flops下,RegNetX C的表现均十分好。作者还给出了他们测试出来的最好的网络结构簇:
在文章的最后,作者还进行了abalation分析等等,非常建议大家去看一下这篇原文,我的总结难以表达出原文 1 5 \frac{1}{5} 51的内容: