7月12日,机器之心最新一期线上分享邀请到论文作者带来详细解读,详情见文末。
神经网络搜索(Neuarl Architecture Search)是近年来兴起的热门方向。在这次 ICML 的文章中,我们提出了 Few-shot NAS, 通过分割搜索空间,对分割后的子空间独立建立了一个子超网络(sub-supernet)来预测网络性能。通过建立 one-shot NAS 和传统挨个训练 NAS 的联系,few-shot NAS 巧妙继承了两种方法的优点,兼有 one-shot NAS 的快速和传统 NAS 的准确网络性能评估。大量实验表明 few-shot NAS 是一个简单易行的方法,在不同任务上和数据集上能提升当下几乎所有的 NAS 方法,包括 ImageNet 及 CIFAR-10 的分类任务和 GAN 这样的生成任务等。该文章被 ICML-2021 接收为 long talk。
论文链接:https://arxiv.org/pdf/2006.06863.pdf
源代码链接:https://github.com/facebookresearch/LaMCTS
Few-shot NAS是如何被提出的?
神经网络结构搜索在这些年收到大家广泛的关注,该项技术在很多视觉和自然语言处理的领域呈现了不错的结果。各个大厂在这项技术上也纷纷跟进,比如 Google 在近几年的年度科研总结里,NAS 都占了一席之地。之前我所在的 Facebook 也有很多组在做 NAS 研究,包括现在我最近全职加入的 NVIDIA,也开始了 NAS 研究。这都代表大家对 NAS 这个技术的认可,并且认为这是一个对生产有实际帮助的工具。
截止到今天,NAS方法大概可以分为两个阵营,其一是挨个训练的传统NAS,其二是利用 supernet 的one-shot NAS。挨个训练就比较好理解,搜索算法提一个新网络,我们把这个网络在训练集上从头训练,并在验证集上测量一个精度。这个过程优缺点很明显,优点是从头训练会非常准确的评判网络的好坏,但缺点就是计算量非常的大,只有大公司里那些能调动好几百个 GPU 的组能玩的起。为了避免从头训练每一个新网络,one-shot NAS利用了一个过度参数化(over-parameterization)的权重共享超网络(supernet)。我们只需要训练一遍这个超网络y,那么搜索空间里任何一个单独的目标网络x,只要把超网络 y 的参数转移过来,然后在验证集上做一轮推断,就可以得到准确率的预测。这样就巧妙的避免了传统 NAS 里挨个训练的计算瓶颈,相当于一个可以快速求值的值函数。
另一方面,天下没有免费的午餐。supernet 虽然减少了计算量,但同时也引入了近似误差。比如用超网络所预测出的网络性能排序,其实是非常不准确的,详见这篇文章[1]。这里我们假设读者对 one-shot NAS 和 supernet 有个基本的理解,不太清楚的读者,可以推荐看我们之前的文章[2]。
提升 supernet 的预测性能是最近 NAS 研究的一个热点。我们 few-shot NAS 本质也是一个提升 supernet 的方法,核心思想源于一个对 one-shot NAS 和传统 NAS 的一个观察,如下图:
图1: 拆分supernet来建立one-shot NAS和传统NAS的联系
图中边 a 是由绿色和红色的两个算子(operators)组成的一个复合边(蓝色粗剪头)。如果我们拆分 supernet 上的复合边 a ,既把2个红色和绿色的并行算子单独拆开,那么我们得到两个 sub-supernets,注意此时边 a 不再是复合边了。如果我们迭代这个操作到 supernet 的每一个复合边上,最终我们可以把一个 supernet 拆成这个搜索空间里的一个个单独的网络。这样我们就建立了 supernet 和传统 NAS 的联系。传统 NAS 由于每个网络都是从头训练,没有近似误差,所以能够准确的排序搜索空间里网络性能的好坏,但是慢。one-shot NAS 虽然快,但是 supernet 引入了很大的近似误差。从上图中如果把拆分的过程构建一个树,那么这个树的根节点就是 supernet,而叶子就是传统 NAS 里的一个个的具体网络。
这里我们自然就想到一个问题,如果在中间结点上构造 sub-supernet,那么与根结点相比,它对搜索空间的覆盖范围变小了,预测精度就应该上升。这样的话,它会不会同时兼备两边的优点?如下图。
图2: few-shot NAS 是传统NAS和one-shot NAS的一个折中,因此同时拥有两个方法的优点。
为了验证这样一个想法,我们做了一组单因子实验。首先我们构建了一个小的搜索空间,这个搜索空间里有1296个网络。我们先把这1296个网络单独训练一遍得到准确的性能数值,然后对它们进行性能排序,作为性能预测的基准。然后我们训练了一个 supernet,去预测这1296个网络的性能排序。我们按照图1的方法,把 supernet 拆一个,两个,三个复合边,分别得到6,36,216个 sub-supernets (此处为6的等比数列是因为一个复合边有6个operators)。然后我们训练这6,36,216个sub-supernets,用6,26,216个 sub-supernets 分别去预测搜索空间里1296个网络的性能排序。我们得到了下图,
图3: few-shot NAS的概念证明。拆分supernet能很好的提升性能排序。
这里的 rank correlation 就是量化性能排序的指标,并且1为最好。从上图可以看出,当拆分的 sub-supernets 越多,结果越接近传统 NAS,并且只需要不太多的 sub-supernets,排序性能就有较大的提高。这就是本文最核心的 insight,也是本文被命名为 Few-shot NAS 的原因。
Few-shot NAS具体是怎样工作的?
Few-shot NAS 的核心方法非常简单。一言以蔽之,就是选择不同的复合边,用上文的方法去分割他们,生成多个 sub-supernets, 然后通过这些 sub-supernets 来对搜索出来的网络架构进行性能预测。
一个 supernet 往往有多个复合边,那么该如何决定选择哪条复合边来进行拆分呢?对此我们在 NASBench-201 上做了一组实验。NASBench201 的搜索空间对应的 supernet 有6条复合边,每条复合边上有5个不同的 operators。因此,如果我们同时拆分1,2,3条复合边的话,会生成(5),(25),(125)个 sub-supernets。因为一共有6条复合边,所以从 supernet 中选择其中的1,2,3条边来进行拆分一共有, 种不同的选择方法。我们对这6,15,20种不同的拆分方法都做了一遍,然后对搜索空间的所有15625个网络用 sub-supernets 进行了性能预测排序(rank correlation by Kendall’s Tau),结果如下表所示:
我们发现,拆分的 sub-supernets 越多,性能预测排序就越准确。然而,对于 supernet 上同样数目的复合边拆分,不同复合边的选择组合对最终的性能预测排序影响不大。因此,在 supernet 拆分的过程中,我们只需考虑我们最终要拆分几条复合边,而无需过多关注哪几条复合边需要被拆分。
把 supernet 拆分成更多的 sub-supernets 会更好的进行网络架构的性能预测,从而让网络架构搜索更有效率。然而,过多的 sub-supernets 同样会出现训练时间过长的问题,举个例子,假如我们拆分了36个 sub-supernets,那总训练时长大约会是仅用1个 supernet 的 one-shot NAS 的36倍,这个效率是很难被接受的。我们发现,每个 sub-supernets 的架构和 supernet 其实非常接近,仅仅是在 supernet 里被拆分复合边上少了一些 operators。因此,我们想出了用权重迁移的方法来加速 sub-supernets 的训练。具体实现起来也十分容易,我们先把 supernet 训练至收敛,然后直接把与 sub-supernets 重合的 operators 的权重转移过去。这样,与从头训练每个 sub-supernet 相比,权重迁移后的 sub-supernet 仅仅需要很少的训练时间就能够收敛。所以,在引入权重迁移技术之后,few-shot NAS 的效率会被大大提升。
实验
首先我们把多个 sub-supernets 的思想用 NASBench-201 来详细测试了一遍。这里我们拆分一个 supernet 为5个 sub-supernets,并结合在几个 one-shot 和搜索的方法上。具体实验结果如下,
图4: 通过使用5个sub-supernets,few-shot NAS (黄色)的准确率一直比one-shot方法高。
图5: 通过使用5个sub-supernets,对比于one-shot NAS (蓝色),few-shot NAS有效的减少了supernet的近似误差,所以few shot NAS的搜索结果(黄色)大幅度接近传统NAS(红色)。
同时我们也把 few-shot NAS 应用在现有的 NAS 系统上。我们做的更改很简单,就是把网上放出来的开源代码然后从 one-shot NAS 改成 few-shot NAS,然后并且使用同样的超参,重新跑一遍结果进行对比。这里是 CIFAR-10 上的结果对比:
图6: 我们应用few-shot NAS与现有的NAS方法结合,在CIFAR-10上利用NASNet的搜索域进行搜索。实验结果表明:1) 相比于各种one-shot NAS方法,few-shot NAS在同样的训练条件下,提升了最终搜出网络的准确度。在此,我们只把few-shot NAS结合在DARTS, REA以及LaNAS的算法上,并通过分割原先的单个supernet成为7个sub-supernets来进行搜索。2)在结合了多个sub-supernets之后,few-shot DARTs利用cutout和auto-augmentation数据增强技术在CIFAR-10数据集上达到SoTA 98.72%的top-1准确率。在没有利用auto-augmentation技术的情况下,few-shot DARTS-Small的top-1准确度仍然超过在同等参数下的其他模型。
接下来是imagenet的结果:
图7: 我们应用few-shot NAS与现有的NAS方法结合,在ImageNet上利用EfficientNet的搜索域进行搜索。与图6中CIFAR-10的表格一致, few-shot OFA与few-shot ProxylessNAS在相同的训练条件下,其搜索出的最终的网络架构也同样超过了它们原本的one-shot版本。与CIFAR10中不同之处是我们在ImageNet实验下把supernet拆分为5个sub-supernets。值得一提的是,few-shot OFA Large在600M左右FLOPs的模型中达到了SoTA的80.5%的top-1准确率。
以及在Auto-GAN上的对比:
图8: 我们把few-shot NAS与AutoGAN结合,基于它们公布的代码,我们用3个sub-supernets来代替原本的单个supernet。利用few-shot AutoGAN搜索出的架构比原始one-shot版本的AutoGAN所找出的架构提升了最高20%的性能。
从这些结果可以看出,在把这些开源项目改成 few-shot NAS 后都能观测到一定的提升。
研究团队与嘉宾介绍
该工作是由赵一阳、王林楠与其 Facebook 的 mentor 田渊栋以及其博士生导师 Rodrigo Fonseca 和赵一阳的导师郭甜共同完成的。
赵一阳,现为伍斯特理工学院(Worcester Polytechnic Institute)计算机系博士二年级学生,研究方向是自动化机器学习(Auto-ML),曾在多个人工智能与计算机系统顶会发表过文章。目前在字节跳动的 Infrastructure Lab 进行研究性实习。
王林楠博士,现为 NVIDIA 高级深度学习工程师,其主要研究方向是神经网络结构搜索和超级计算。他毕业于布朗大学计算机系,师从 Rodrigo Fonseca。在布朗学习时期,他曾多次在 FAIR, MSR,和 NEC Labs 实习。从2017年起,他就一直围绕蒙卡洛树搜索,设计和打造一个能够构建人工智能的人工智能体。截至今日,他的研究已发表在ICML, NeurIPS, AAAI, TPAMI, CVPR 和 PPoPP 等系统和人工智能的顶级会议和期刊上。
田渊栋博士,脸书(Facebook)人工智能研究院研究员及经理,研究方向为深度强化学习与应用及表示学习的理论分析。围棋开源项目 DarkForest 及 ELF OpenGo 项目中研究及工程负责人和第一作者。2013-2014年在 Google 无人驾驶团队任软件工程师。2005年及08年于上海交通大学获本硕学位,2013年于美国卡耐基梅隆大学机器人研究所获博士学位。曾获得2013年国际计算机视觉大会(ICCV)马尔奖提名(Marr Prize Honorable Mentions)
[1] Yu, K., Sciuto, C., Jaggi, M., Musat, C., and Salzmann, M. Evaluating the search phase of neural architecture search. arXiv preprint arXiv:1902.08142, 2019b.
[2] Wang, L., Xie, S., Li, T., Fonseca, R., and Tian, Y. Sample-efficient neural architecture search by learning action space. CoRR, abs/1906.06832, 2019a. URL http://arxiv.org/abs/1906.06832.
线上分享
北京时间7月12日19:00-20:00,论文作者赵一阳和王林楠博士将带来线上分享:搭建one-shot NAS与传统NAS的桥梁:Few-shot Neural Architecture Search。
本次直播分享将从传统NAS和one-shot NAS进行切入,通过建立传统挨个训练网络架构的NAS和one-shot NAS的联系,来引入我们的工作few-shot NAS。届时,我们将对few-shot NAS的工作原理,应用场景,以及实验效果进行全面系统的介绍,展示及分析。此外,我们也将会对我们团队近些年的NAS工作进行一个简单的梳理与总结。
直播链接:https://jmq.h5.xeknow.com/s/t7QxU(点击阅读原文直达)