这是一篇CVPR2021年关于网络架构搜索的论文,比较创新的点是按照块的重要程度来进行架构搜索,实现了效率的提升并且硬件友好。
作者通过观察残差网络,发现一个神经网络之中只有少部分块结构是非常重要的,如下图,如果把神经网络的输入到输出的所有路径都统计出来,发现只有少数块是出现在所有路径中的(例如第一层、最后的全连接层、下采样块和通道扩张块,其他块总会找到替代路径,所以相对来说并没有那么重要。
更具体的,作者在MnasNet和MobileNetV2上分别固定所有层而对一层的通道使用掩码以(0.3,0.6,1.0)的概率进行屏蔽,发现对于不关键的块即使不输出通道也对精度没有太大影响,而对于关键块,即使以0.3的概率屏蔽通道也会是精度下降很多,实验结果如下图:
基于以上结果,作者提出了一个分阶段搜索块结构的算法,第一阶段通过堆叠所有重要层并搜索重要块来构建最小的 SuperNet,使用梯度下降优化架构参数和权重参数。第二阶段固定关键块结构并在计算资源限制下搜索不关键的块。
具体的,作者将架构参数连续化:
其中θ是LxO大小的矩阵,L为层数,O为操作数,代表采样的架构参数,ζ代表采样函数,可以使用softmax, Gumbel-softmax, Gumbel-Max等,
表示第l层的第o个操作。
使用如下函数衡量采样架构的FLOPs :
其中F代表每层每个操作的运算量,是一个LxO的矩阵。
对θ的优化公式:
其中是FLOPs ,
是一个常数标量,被定义为采样架构的最大FLOPs 。
针对多目标的优化:
提出空间方案,即在多个空间中寻找最优
构造空间方案:
引入了正交约束,进一步增加了不同空间方案的多样性。
对各个空间方案采样:
其中Ρ可以使用softmax, Gumbel-softmax, Gumbel-Max等。
结合之前的定义:
最后将NAS的双层优化问题表示为:
其中Τ是对Π和Θ正则化,α 是多目标损失率。
作者通过上式来实现参数的优化,进而搜索到最终架构。
实验结果
作者后面还做了消融实验,发现:
没有资源限制精度会更高,NAS变成了给定资源约束的计算资源分配问题;
关键块优先策略找到更优架构;
Gumbel-Max 采样不减少精度同时减少搜索时间。
以上。