23

ICLR 2020| 训练15000个神经网络,加速NAS,仅用0.1秒完成搜索

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzI5NTIxNTg0OA%3D%3D&%3Bmid=2247500837&%3Bidx=4&%3Bsn=0900df1797f5e0da6a466d0c53d62960
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

jQrAreu.jpg!web

作者丨董宣毅

编辑丨Camel

本文对 悉尼科技大学博士生董宣毅发表于 ICLR 2020 的录用Spotlight论文《NAS-BENCH-201: Extending the Scope of Reproducible Neural Architecture Search》进行解读。这篇论文提出的NAS-Bench-201,可在很大程度上提高NAS算法的可复现性,并降低了NAS算法的计算需求(例如仅用0.1秒便可以完成搜索)。

aUnYr23.png!web

论文链接: https://arxiv.org/abs/2001.00326

NAS背景介绍

神经网络结构对深度学习领域的各个应用的性能都起着至关重要的作用,目前,网络结构的设计范式已经逐渐的从专家手动设计转变为了机器自动搜索。网络结构搜索 (Neural Architecture Search,NAS) 旨在研究如何在一个给定的搜索空间内自动地发现高性能高精度高效率的网络结构。

在过去的几年内,越来越多的科研人员投入到NAS这一研究领域,越来越多的NAS方法被提出,整个领域也取得了许多突破性的进展。现在是时候回顾一下NAS领域好的一面和不好的一面了。NAS除了以良好的性能著称,还因为海量的计算需求而让众多研究员望而却步,同时目前各个NAS算法的实验设置不尽相同,难以去公平的衡量一个NAS算法的真实好坏。

为了进一步推动NAS算法的可复现性,为了降低NAS算法的计算需求,为了让大家着眼于NAS算法的本质,且启发后续的NAS算法,我们提出了NAS-Bench-201。

NAS-Bench-201是什么?

NAS-Bench-201把15000多个神经网络在三个数据集(CIFAR-10,CIFAR-100,ImageNet-16-120)上基于不同的随机数种子基于不同的超参数训练了多次。提供了每个训练epoch之后的训练和测试耗时,模型在训练集/验证集/测试集的损失函数和准确度,训练之后的模型参数,模型大小,模型计算量等重要信息。NAS-Bench-201将这些有用的诊断信息整理起来,提供了方便的API来获取他们。执行 “pip install nas-bench-201”可以一键安装NAS-Bench-201的API,你将会拥有15000+个神经网络的全部信息!下图是15000+个网络性能可视化。 

7viIrye.jpg!web       

利用NAS-Bench-201能干什么?

1,加速NAS算法,利用NAS-Bench-201,Regularized Evolutionary Algorithm / Random Search / REINFORCE等NAS算法可以在0.1秒内完成搜索过程并给出发现的网络的性能。

2,实时跟踪NAS算法表现,对于One-shot NAS算法,利用NAS-Bench-201就可在任意时间节点,观测当前预测的网络结构的性能表现而无需重新训练该结构。

3,公平对比每一个NAS算法。不同的文章在重训练搜索出的网络结构时,使用的超参数/数据增强/正则/等都不尽相同。现在利用NAS-Bench-201的API,每位科研人员可以公平地对比搜索出来的网络结构。

NAS-Bench-201还提供了什么?

我们在一个codebase下实现且开源了10种不同的NAS算法。我们尽可能地公平地对比检验了这些算法的性能。结果如下图:

NR7bAzV.jpg!web

REA / REINFORCE / RANDOM / BOHB的500次运行结果

2ueQfyQ.jpg!web   六种One-shot NAS算法的3次运行结果

使用NAS-Bench-201的注意事项

NAS-Bench-201旨在提供一个公平的计算友好型的环境给NAS社区。因为利用我们的API可以很容易的获取每个网络的性能,这个便利的条件可能会隐形的让设计的新NAS算法过拟合到最好的结构。为此,我们设置了一些规则来防止过拟合。

1,不能对某一个具体的操作进行正则化。比如限制skip-connection操作的数量等。

2,使用我们的提供的网络性能。训练策略影响着一个网络结构最终的性能。我们建议NAS-Bench-201的用户使用我们这个benchmark提供的每个网络的性能,即使使用别的训练策略可以得到更好的性能。以此来保证公平性。

3,公布多组搜索实验的结果。多次反复搜索过程能够更稳定地展示一个NAS算法的效果。

NAS-Bench-201 API样例展示

使用NAS-Bench-201的数据非常容易,无需自己整理数据,我们提供了方便的API接口,可以轻松调用各种对NAS算法有用的诊断信息。 下面我们暂时了一些基本用法:

IJJFfaI.jpg!web各位小伙伴快来试一试吧!代码,数据,算法分析总有一款你需要的哦 。

NAS-Bench-201的相关资源 

  • 10+种NAS算法的PyTorch实现: https://github.com/D-X-Y/AutoDL-Projects

  • NAS-Bench-201复现指南: https://github.com/D-X-Y/AutoDL-Projects/blob/master/docs/NAS-Bench-201.md

  • NAS-Bench-201 API的pip安装: https://pypi.org/project/nas-bench-201/1.0/

  • NAS-Bench-201文章链接: https://openreview.net/forum?id=HJxyZkBKDr

  • 优秀NAS文章列表: https://github.com/D-X-Y/Awesome-NAS

更多ICLR 2020信息,将在「ICLR 2020 交流群」中进行,加群方式:添加AI研习社顶会小助手(AIyanxishe2),备注「ICLR」,邀请入群。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK