Fast and Practical Neural Architecture Search论文总结


论文地址:https://www.researchgate.net/publication/339554739_Fast_and_Practical_Neural_Architecture_Search
代码:https://github.com/FPNAS/FPNASNet
发表在:accepted at ICCV 2019

目标

如论文题目所示,FPNAS的目标是设计一个又快又实用的NAS框架,要求FLOPs限制在300M以内以便迁移到移动设备上。
Fast and Practical Neural Architecture Search论文总结
图1中展示了几种流行NAS的精度和搜索时间,并通过颜色标记了FLOPs的大小、分类了是否是人工设计,突出了FPNASNet搜索速度更快,仅用了20GPU hours(NVIDIA P40)。

方法

在计算复杂度小于300M的前提下,首先想到了要定义mobile search space。本文将一个卷积网络定义为N个模块组成的有序序列:{Blocks1, Blocks2, …, BlocksN},其中每一块都是一个有序无环图。为了保证模块的多样性,本文舍弃了以往重复堆叠模块的思想,使得每一块都是不同的。

搜索空间

和以往类似,每一个模块定义为G = (V, E ),其中V 代表节点的操作,E 代表边上的操作。为了满足搜索限制,我们最多允许有3个节点。

V 共有:

  • Element-wise addition
  • Concat operation
  • Split operation
  • Identical mapping

E

  • Convolution: mobile inverted bottleneck convolution with different expansion ratios
  • Convolutional kernel size: 3×3 or 5×5
  • Identity mapping

为了匹配通道数,Concat操作仅用在Split之后。为了防止网络的规模过大,每一个Cell中仅有一个卷积操作。在边上仅使用上述卷积是因为在其他论文了被证明最好用。SPlit操作对于特征的重用方面表现出色。而按元素相加会产生残差连接。

模块的多样性

不同模块会提取不同的特征,而在CNN的不同位置,模块的功能也不尽相同,所以需要对不同位置设置不同的模块。本文进行了实验证明,设计一个5层的全连接网络,其中第一层和最后一层都是3X3的卷积加1X1的卷积,中间三层分别为三种不同的操作。
Fast and Practical Neural Architecture Search论文总结
可以看出最好的网络都是由不同的操作组成的。而且通过实验得知,在较浅的网络层中,分割通道的操作效果不好,而在高层网络中更喜欢这个操作,可能是由于浅层网络负责提取特征,在高层网络中更适合特征的复用和组合。

Fast Search

由于搜索空间每一层都是不同的模块,所以搜索空间是一个指数组合。所以我们把目标定义为多次的双层优化问题,我们可以交替优化两段网络,类似DARTs的权值和架构训练过程,而当两段网络不断细分最终就会得到一层网络结构。
Fast and Practical Neural Architecture Search论文总结
由于在每次只改变一个模块,所以在所有未改变的模块使用了权值共享策略。

实验

Fast and Practical Neural Architecture Search论文总结
可见,在强化学习中,本文的效率还是出色的,这得益于高效的模块和权值共享策略。而且本文的算法可以很好的迁移到ImageNet上,也可以用在语义分割上,并且得到了不错的效果。而且对于实验的参数设置也是比较全面的。就是代码只有一个ImageNet的预训练模型,但也有参考的价值,可以看具体的模块。

展望

  • 考虑搜索过程中通道数的改变
  • 在搜索过程中改变网络深度
  • 将NAS应用到不同的问题上,自动分割或是目标检测等任务。