当前位置: 代码迷 >> 综合 >> Designing Network Design Spaces论文导读
  详细解决方案

Designing Network Design Spaces论文导读

热度:25   发布时间:2024-02-24 05:59:37.0

Designing Network Design Spaces论文导读

  • AnyNetX
  • AnyNetX~B~,AnyNetX~C~
  • AnyNetX~D~,AnyNetX~E~
  • RegNetX
  • Generalization
  • RegnetX Analysis
    • Trend
    • Complexity
    • RegNetX C

Kaiming He的力作,内容非常之丰富,且具有很大的指导意义。大多数的NAS都是只找到一个最优的结构,本文则通过不断的缩小假设空间,以找到一簇比较优秀的网络:

在这里插入图片描述
通过采样进行超参数的选择,根据误差的经验分布函数(empirical distribution function, EDF)对假设空间不断的缩小:
F(e)=1n∑i=1n1[ei<e]F(e)=\frac{1}{n}\sum_{i=1}^{n}\bold{1}{[e_i < e]} F(e)=n1?i=1n?1[ei?<e]

AnyNetX

首先定义一个通用的神经网络框架AnyNet

基于标准的残差网络,用residual block替换AnyNet的stage中block,可以得到一系列的AnyNetX

此时AnyNetX有16个自由度,包括四个stage的以下参数:
thenumberofblocks:di≤16blockwidth:wi≤1028bottleneckratio:bi∈1,2,4groupwidth:gi∈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≈1018(16·128·3·6)^4 ≈ 10^{18}(16?128?3?6)41018种模型配置,接下来开始逐步缩小此空间。

AnyNetXB,AnyNetXC

首先让每一个stage的bi=b,gi=gb_i=b,g_i=gbi?=b,gi?=g

可以发现不同的让每一个stage的b,gb,gb,g保持一致对模型的误差并没有太大的影响,在这里选择g>1g>1g>1。同时对AnyNetXC中表现较好的和较差的模型进行采样如下所示:

如上图所示,好的AnyNetXC的通道数www是随着block上升的,这和手工设计的网络是有相似之处的。

AnyNetXD,AnyNetXE

论文继续在参数空间的基础之上加限制,AnyNetXD是AnyNetXC+wi+1>wi+w_{i+1}>w_i+wi+1?>wi?;AnyNetXE是AnyNetXC+di+1>di+d_{i+1}>d_i+di+1?>di?

可以看到模型的通道数www和组数ggg随着block增长的情况下,模型的表现比较好。为了进一步的探究AnyNetXE,选择其中表现最好的20个模型:

上图左上子图显示出一个直观的结论:模型的通道数与block数呈现出来简单的线性关系时,模型的表现较好
uj=w0+wa?ju_j=w_0+w_a*j uj?=w0?+wa??j
可以简化上式为
uj=w0?wmsju_j=w_0*w_m^{s_j} uj?=w0??wmsj??
其中wmw_mwm?是额外的控制参数。通常设置如下:
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变化的稳定性,如下图所示

可以得到以下有反常识的结论:

  1. 对于不同的flops,网络的深度ddd是最稳定的参数
  2. Bottleneck ratio最好设置为1
  3. 参数wmw_mwm?最优为2.5,也即不同的stage通道数应番2.5倍,而非通常设置的2
  4. wa,w0,gw_a,w_0,gwa?,w0?,g贼倾向于随着flops的增大而增大

Complexity

作者通过调整模型的flops,对激活函数、推理时间等也进行了分析,可以预想到随着flops的增加,推理时间会上升。作者还发现了十分有意思的一点,即推断时间和激活函数基本上成正比!也就说tinfer=O(M(activations))t_{infer}=O(M({\rm activations}))tinfer?=O(M(activations))

RegNetX C

根据前面Trend部分得到的结论,进一步对RegNet(AnyNetE)进行限制:
b=1d≤40wm≥2\begin{aligned} b &= 1 \\ d &\leq 40 \\ w_m &\geq 2 \end{aligned} bdwm??=1402?
并且同时限制激活函数的数量,得到了以下EDF

可以看到在不同的flops下,RegNetX C的表现均十分好。作者还给出了他们测试出来的最好的网络结构簇:

在文章的最后,作者还进行了abalation分析等等,非常建议大家去看一下这篇原文,我的总结难以表达出原文15\frac{1}{5}51?的内容:

http://cn.arxiv.org/pdf/2003.13678v1

  相关解决方案