论文笔记: Designing Network Design Spaces

读了一篇FAIR何凯明组刚发的论文《Designing Network Design Spaces》,作者全都来自于Facebook AI Research(FAIR),包括大名鼎鼎的Ross Girshick、Piotr Dollár和Kaiming He组合,一作是伯克利的Ph.D Ilija Radosavovic(可能是斯拉夫人名)。

这篇文章通过对网络设计空间中的模型进行分析,找到好模型的规律,手工缩小设计空间,再从缩小的设计空间中找到更小的设计空间,一步步对设计空间进行设计。最后发现了一个好模型的空间,这个空间里的模型可以由量化的线性函数确定每个block的widths和depths。

方法

初始设计空间

  • AnyNet:类ResNet的Block,每个block有4个自由度(width w, numbers of blocks d, group size(中间层是group conv) g, bottleneck ratio r)
  • 输入224x224,4个blocks,和ResNet一样的stride
  • 自由度是power of 2,(空间大小2e18)

不使用NAS,使用grid search

  • 每次从设计空间随机sample 500 models进行训练10epochs
  • 画EDF(Error distribution function)图片(x轴是error,y轴是probability,类似于ROC曲线),可以直观地看到一个搜索空间的好坏,便于比较
  • 另外一个参考指标是自由度-error 散点图,可以看到不同的自由度下面error的趋势
  • 对于网络大小的参考指标是 flops-自由度,然后把good models的区域标志出来,然后画出均值曲线
  • 好坏网络分别的 block_index-自由度 或者 自由度1-自由度2 曲线

人工优化搜索空间的目标

  • 简化搜索空间的结构
  • 提升或者保持空间的模型表现
  • 保持model的diversity
  • 可解释性

优化路径

  • AnyNetXB: shared bottleneck ratio:不同blocks共享(EDF没变化,7e16)
  • AnyNetXC: shared groups (EDF没变化 3e14)
  • AnyNetXD: $w_{i+1}>=w_{i}$ (EDF变好 1e13)
  • AnyNetXE: $d_{i+1}>=d_{i}$ 5e11
  • RegNet: quantized linear$u_j=w_0+w_a\cdot j for 0<=j<=d$,然后用一个分段函数(因为一个stage w是一样的)去近似它,让拟合误差$e_fit$小 3e8

设计hint

  • 最好网络的depth是稳定的,大概是20blocks(60 layers),不是说层数越高越好
  • 最好的网络bottleneck 1.0最好(没有bottleneck)
  • width multiplier $w_m$约2.5
  • (g,w_a,w_0)随着计算复杂度增加增加

效果

  • REGNETX-600MF top1error 25.9%
  • REGNETY-600MF top1error 24.5%(加了SE)

评价

一开看这篇文章的时候,还不是非常理解为什么有这么好的NAS算法之后还要对设计空间进行设计,难道我们不就是想找一个最优的网络吗?直接NAS不就好了?看完论文才发现,可解释性是多么的重要,神经网络不是玄学,网络的设计也不是玄学,通过一步步的优化搜索空间,我们才能直观地了解到怎样设计网络才是好的,为未来的设计提供指导性的思想。神经网络的设计也是(EDF好的才算好的)。人工优化搜索空间的四个目标是另一个需要业界注意的问题。这篇文章最让我受益匪浅的是它的方法学,在多目标优化的情况下怎么分解成一个个的小问题。还是有一些毛病:RegNet的quantize方法不是很优美、后面解释alternate design choice的时候224x224放大之类的问题不是很solid。

#
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×