AAAI2020 | 利用网络结构关系加速NAS+Layer

这是我在海康威视研究院谢迪博士部门实习的工作,被 AAAI-2020 接收为 Spotlight。

null

Neural Inheritance Relation Guided One-Shot Layer Assignment Search​arxiv.org

引子

上一个阶段的网络结构搜索(NAS)研究,主要在两个方面。1)各类搜索方法,从强化学习、进化算法等到梯度下降;2)各类网络结构或者配置,从各种算子到通道数,“万物皆可搜”。近期的 NAS 研究热点主要在探究高效、快速的 NAS。

搜索方法方面,现在比较时髦的是one-shot方法,处在发展阶段,也存在一些问题。one-shot 方法将多个 subnet 并联在一个 supernet 里面,大概而论,并联在 supernet 中的 subnet 越多,one-shot 方法将会更慢,对于搜索结构也会有随机性。

很多人质疑,各种搜索方法都是在一个人为事先优选的**「子搜索空间」**基础上进行的。在这种人为优选子搜索空间中,所包含的各结构之间效果分布较为集中,上下限差距不大或者极端的结构分布很少,也就是说,这是一个效果接近于最优的「次优子结构空间」。那问题在于,NAS 作为 AutoML 的一个重要部分,是要对之前一些需要人的经验或试错的工作进行自动化处理的,自动寻找这个「次优子结构空间」也是 NAS 的应有之义。

**我们进行 NAS,首要的是承认了各种结构是不平等的。不平等自然是最直白的一种关系。**上一阶段的 NAS 工作大多在搜索方法和不同任务空间上钻研,现在,是时候注意一下,在一个任务上,整个结构搜索空间中各个结构之间是否具有一定的关系呢?我们知道这个世界是普遍联系的,同理,网络搜索空间,也是由结构以及结构之间的关系构成的。如果我们掌握了结构之间关系,就可以有先见之明,从而达到 NAS 加速效果这是一个问题

各种网络结构或者配置方面,在之前的工作中,有算子选择、通道数搜索,然而对层数搜索的 NAS 工作是不够完善的。我们知道,one-shot 方法中supernet 是并联的但是层是串联的,现在如何得到一个 one-shot 的层数搜索框架呢?这也是一个问题

这篇文章中,我们可以找到以上两个问题,即网络结构关系卷积神经网络层数搜索的答案。

工作

首先问题的定义,layer assignment search,可以泛泛理解成层数搜索。详细来说,这里的层指的是一个单元,比如 resnett 的 bottleneck,plane net 的 conv-bn-relu 等;还有,CNN 中,一般用下采样(stride conv/pooling)划分阶段,每一个阶段会堆叠若干层,比如 resnet,四个阶段,各阶段层数为 3,4,6,3,每一个层就是一定的算力。

null

不同 layer assignment 的 ResNet-50

值得说明的一点,以上不同 layer assignment 的 ResNet50 是具有相同 FLOPs 的。可以计算验证。

实际项目中,尤其在边缘设备算力限制情况下,如果不能用 ResNet50,就需要确定一个阶段里分配几层算力,这就是 layer assignment search 问题。这里面包含了两个意思,第一,就是总层数,第二,就是给定层数下各层的分配。

然后回答到一个问题:整个结构搜索空间中各个结构之间是否具有一定的关系呢?答案是有的,就是,后面一层的最好层分配结构继承自前一层的最好层分配结构。由浅至深。层层下去,去除了网络空间的冗余。示意图如下:

null

将这种关系命名为Neural Inheritance Relation(NIR)。将这个关系作为先验,构建一个 one-shot 搜索框架,当然是针对层数搜索的,即是 Neural Inheritance Relation Guided One-Shot Layer Assignment Search 。

null

如上图所示,层数搜索的 one-shot 框架。一个包含了诸多层的 supernet 首先被构建出来,每次采样,在每个阶段要从浅到深的进行,将采样得到的各阶段 layer 连接起来,就是一个 candidate subnet。

采样从浅层开始,举个例子,图中有两个下采样,划分起三个阶段。那么第 0 次采样是 1-1-1 的层分配,第一次采样全部的 candidate 只要三个:1-1-2,1-2-1,2-1-1。每个采样得到的 subnet 将会被公平的进行若干次训练,评估出最好结构,标记为 optimal-1。

这个时候运用 NIR,第 2 次只采样与 optimal-1 有继承关系的下一层 subnet,依然只有三个。事实上每一次采样数等于阶段数。算法步骤如下:

null

算法的加速效果,首先从理论上来讲,一个阶段(group)数为 n,层(layer)数为 m 的 CNN,穷尽所有,层数搜索的搜索空间具体大小如下

[公式]

层数搜索的搜索空间复杂度为 [公式] ,我们这种 NIR 神经网络结构关系引导的搜索,实际搜索空间复杂度为 [公式] ,为搜索踩了一脚油门。

本文在 CIFAR-100 上搭建了层数搜索数据集,在 Tiny-ImageNet, ImageNet 上进行了实验。

null

具体的详情请见 paper:Neural Inheritance Relation Guided One-Shot Layer Assignment Search

我们将层数搜索单独摘出来,更加存粹的探究神经网络结构之间的关系,并希望网络结构关系的思路,可以给 NAS 社区带来一些 insight,进一步得到更加通用的高效 NAS 方案。