搜索CIFAR10只需1个半小时:华为诺亚&上交大ICLR 2020提出更快、更稳定、性能更好的可微分架构搜索

本文涉及的产品
文件存储 NAS,50GB 3个月
简介: 人工智能顶会 ICLR 2020 将于明年 4 月 26 日于埃塞俄比亚首都亚的斯亚贝巴举行,不久之前,大会官方公布论文接收结果:在最终提交的 2594 篇论文中,有 687 篇被接收,接收率为 26.5%。华为诺亚方舟及其合作实验室有多篇论文被 ICLR 2020 接收,本文介绍了其中一篇 Spotlight 文章。

微信图片_20211202204356.jpg


在此论文中,来自上海交通大学和华为诺亚方舟实验室的研究人员提出了一种基于部分通道采样的内存高效的可微网络结构搜索方法方法,能够显著提升可微式搜索的速度和性能。


该方法在 CIFAR10 数据集上,只需要 0.1 个 GPU 天(单卡 1.5 小时)就可以完成一次搜索过程,并且达到 2.57% 的测试错误率;即使在 ImageNet 数据集上直接搜索,该方法也只需要 3.8 个 GPU 天(8 卡 11.5 小时),并且在 ImageNet 的移动设定(600M 运算)中达到 24.2%/7.3% 的 top-1/top-5 测试错误率。难得的是,该方法展示出了在不同参数设定下的搜索稳定性,能够很容易地应用于不同的实际场景。


论文地址 https://arxiv.org/abs/1907.05737代码地址 https://github.com/yuhuixu1993/PC-DARTS


1. 摘要


最近,可微分的网络结构搜索方法 [1] 取得了很大的进步,极大地降低了搜索开销。然而,可微分的结构搜索方法需要联合训练一个超网络,因此面临两个棘手的难题:巨大的内存消耗,以及超网络到子网络的迁移稳定性。本文提出一种有效的通道采样方法,即在超网络训练中,只采样部分通道进入核心的多选一运算。通道采样不仅能够缓解超网络的「过拟合」现象,还大大降低了其显存消耗,使得在训练过程中可以通过增加 batch-size 来提升结构搜索的速度和稳定性。


然而,通道采样会导致超网络的选边出现不一致性,从而增加了随机近似给超网络带来的扰动。为了解决这一问题,文章又进一步提出边正则化方法,即利用一组额外的边权参数来减少搜索中的不确定性。经过这两项改进,该方法的搜索速度更快,性能更稳定,精度也更高。


在 CIFAR10 数据集上,利用单块 V100 型 GPU 只需大约 1.5 小时就可以完成整个搜索过程;即使直接在 ImageNet 上搜索,利用 8 块 V100 型 GPU 也只需要 11.5 小时。同时,该方法在网络结构的测试准确率上全面超越现有可微分网络结构搜索方法。


2. 引言和基础


网络结构搜索(NAS)是目前 AutoML 的重要方向,吸引了越来越多工业界和学术界研究者的兴趣。


NAS 的主要方法是构建一个大的结构空间,并且开发一个高效的算法来探索这个空间,并在不同约束(网络大小,延迟,等)下找到较优的网络结构。


和之前强化学习和进化算法这些需要超大规模运算消耗的方法不同,one-shot 网络结构搜索大大降低了搜索消耗,让网络结构搜素更方便地在更多现实问题中应用。DARTS[1] 把操作选择转化为权衡一系列操作的重要性。这使得整个框架中结构参数是可微分的,从而网络结构搜索算法可以以端到端的形式高效地进行。尽管 DARTS 已经是时下最流行的网络结构搜索方法之一,它依然存在显存消耗大和超网络到子网络迁移性质不稳定等问题。本文我们提出一种简单高效的方法,即部分连接 DARTS(Partially-Connected DARTS,PC-DARTS),来降低原始算法中的显存消耗,同时提升其搜索稳定性。我们的核心思想非常直观:不同于之前将超网络中所有的通道都输入待选操作,我们随机采样通道中的一部分进入待选操作,而将剩余部分跳过待选操作,直接与前一部分的输出并联。这样,我们就通过随机采样的方式,得到了超网络的一个近似。这种近似方法,除了大大减少内存和运算的消耗,还能够使得操作搜索的精度得到某种形式的抑制,从而减少了超网络本身被过拟合的风险,提升了子网络的性能。然而,部分通道连接也带来一个负面效果:由于每次超网络训练迭代时采样的不同的通道,超网络连接的选择会变得不稳定。为此,我们提出边正则化方法,通过引入一组额外的边权参数,显式地在边的层面上进行选择,从而使网络搜索过程更加稳定。微信图片_20211202204352.jpg


图 1:PC-DARTS 整体框架图,其中上半部分为部分通道连接,下半部分为边正则化。


3. 方法


3.1 基线方法:DARTS


文章的方法采用 DARTS 作为基础框架。按照 DARTS 的设定,本文通过搜索 normal cell 和 reduction cell 的结构并用其来搭建测试网络。其中,每个 cell 被定义为一个拥有 N 个节点的有向无环图(Directed Acyclic Graph,DAG),每一个节点都可以被用于下一个节点的输入。节点之间由 softmax 加权的操作连接,以节点 i 与节点 j 之间为例可表示为:微信图片_20211202204349.jpg


 各前导边最终相加,汇入目标节点,即:

微信图片_20211202204347.jpg

 而 cell 的输出节点由中间节点按 channel 方向拼接而成。


3.2 部分通道连接(Partial Channel Connections)


DARTS 的一个明显的缺点在于其内存开销大。如果 表示搜索空间的大小,那么训练一个超网络所需要的内存消耗大约是一个正常网络的 倍。为了解决这个问题,本文提出一种通道采样策略,只随机采样部分通道输入待选操作。以超网络中节点 i 输入节点 j 为例,被选择的通道如正常搜索算法一样被输入 个操作的选择过程,而未被选择的通道直接与操作的输出并联作为下一个节点的输入。可表示为:

微信图片_20211202204344.jpg

 实际应用中,我们设置采样通道的比例为 1/K。其中,K 是一个超参数,用于调节超网络的近似精度和搜索速度之间的平衡。其作用将在消融实验部分进行分析。
通道采样策略,使得超网络的显存消耗降低为原先的 1/K。因此,在相同的硬件上,我们就能够使用原先 K 倍的 batchsize 来进行网络结构搜索。这带来了两个好处:结构搜索的速度大约变为原先的 K 倍;同时,更大的 batchsize 意味着每次的迭代中可以采样更多的数据,可以提升结构搜索的稳定性。


3.3 边正则化(Edge Normalizetion)


通过 DARTS 搜索最终确定的结构,每个节点只有两个输入。从实际操作上看,在搜索过程结束后,DARTS 在每条边上只保留结构参数最大的操作,而每个节点的输入只保留最大的两个结构参数对应的边。然而,部分通道连接使得每次结构参数优化时,采样的是不同的通道。如果依然通过同样的方式来确定最优边,就可能增大超网络和子网络直接的误差,带来不稳定的搜索结果。为了解决这个问题,我们提出边正则化方法,即引入额外一组边参数β_{i,j} 来显式地加权边:

微信图片_20211202204341.jpg


通过在训练超网络的过程中共享β_{i,j},网络搜索对通道采样操作不再敏感,整个搜索过程也更加稳定。在后面的消融实验中我们看到,即使在原始的 DARTS 上,边正则化也会带来精度和稳定性的增益。同时,边正则化带来的额外运算消耗可以几乎忽略不计。


4. 实验结果


4.1 网络搜索与测试


我们在 CIFAR10 和 ImageNet 上做了网络结构搜索,并将搜索到的网络结构在 ImageNet 数据集的移动设定下进行了验证,实验结果如表 1(CIFAR10)和表 2(ImageNet)所示。


搜索出的结构如图 2 所示。PC-DARTS 在 CIFAR10 上仅仅利用 0.1GPU 天就搜索到 2.57% 测试错误率的结构,在搜索速度和准确率上都远超 DARTS。据我们所知,这是目前错误率低于 3% 的最快搜索算法。P-DARTS[2] 通过更深的结构去搜索达到比我们方法更好的结构,我们的方法也可以与 P-DARTS 进行结合达到更好的性能。 

微信图片_20211202204336.jpg

表 1:CIFAR10 数据集上的结果对比。 


微信图片_20211202204334.jpg


表 2:ImageNet 数据集上的结果对比。


如表 2 所示,我们将 PC-DARTS 在 CIFAR10 上和 ImageNet 上搜索到的结构在 ImageNet 上进行了验证。在 CIFAR10 上搜索出的结构的 top-1/top-5 错误率为 25.1%/7.8%,显著地低于 DARTS 的 26.7%/8.7%。考虑到搜索时间只有 0.1GPU 天,该性能已经非常可观。另外,在 ImageNet 直接搜索出的结构的 top-1/top-5 错误率降低至 24.2%/7.3%,超过了 P-DARTS[2],也超过了另一个直接在 ImageNet 上直接搜索的方法,ProxylessNAS[3]。 

微信图片_20211202204330.jpg

图 2:在 CIFAR10(左)和 ImageNet(右)上搜索到的网络结构(以 normal cell 和 reduction cell 的形式分开展示)。网络中的所有同类型 cell 共享一个结构。


4.2 消融实验

微信图片_20211202204327.jpg

图 3/表 3:消融实验结果示意。左图为不同采样比例 K 对搜索结果的影响,右表为 PC 和 EN 对于原始算法分别产生的有益效果。


首先我们研究了通道采样比例 K 对搜索性能以及速度的影响。这个实验是在 CIFAR10 上进行的。可以看到当综合考虑搜索的时间和性能时,K=4 为最佳。K=8 时,虽然搜索时间更低,但是由于采样的通道数太少,超网络的性能有了显著下降。这个实验不仅展示了 PC-DARTS 允许在搜索时间和精度之间进行权衡,同时也反映了 NAS 中超网络优化具有一定的冗余性。更重要的是,它清晰地展示了 DARTS 算法下,搜索和验证之间的差异:一个优化得更好的超网络不一定会产生最终性能更好的子网络。基于超网络训练的 NAS 方法很容易产生过拟合现象——从这个角度讲,通道采样起了正则化的作用,缩小了搜索与验证之间的差异性。另一种减少差异性的方法,见 [2]。


此外,为了显示部分通道连接与边正则化的有效性,我们进行了消融实验。可以看到,虽然部分通道连接使得搜索速度更快、性能也有所提升,然而边正则化的加入使得整个搜索算法的稳定性更强。同时注意到,即使直接在 DARTS 上加入边正则化,对于其搜索的精度和稳定性也有显著的提升。因此我们判断,边正则化方法能够扩展到更一般的基于超网络优化的搜索算法。


4.3 迁移到目标检测


为了进一步验证搜索出结构的性能,我们将网络迁移到目标检测任务中进行比较。我们选择 SSD[4] 作为基础框架,并将在 ImageNet 上搜索和预训练的网络结构好作为后端网络。我们在 MS-COCO 数据集下测试了一系列模型的性能。在更低的 FLOPs 下,PC-DARTS 比 SSD300 在 AP 指标上高出 5.7%。在类似的 FLOPs 下,PC-DARTS 相较于 MobileNet 系列的性能优势也十分明显。实验证实,PC-DARTS 在图像分类任务上搜索出的结构,能够很好地迁移到更具挑战性的目标检测任务中。这也在一定程度上得益于 PC-DARTS 减轻了超网络的过拟合,从而提升了迁移性能。

微信图片_20211202204324.jpg

表 5:将搜索到的网络结构迁移到 MS-COCO 检测任务上的对比结果。


5. 总结


本文提出部分通道连接的可微分网络结构搜索方法 PC-DARTS,使得可微分搜索更快、更稳定,也在多个数据集上取得了更好的性能。其中的边正则化方法也能够用于其他超网络搜索算法,增加训练的稳定性。经过细致的优化,PC-DARTS 将网络结构搜索的时间开销降低到小时级,特别便于资源受限的研究工作者使用。

然而我们也注意到,可微分网络结构搜索已然存在一些未解难题,如超网络到子网络的近似所带来的巨大量化误差。在今后的研究工作中,我们会在这些方面进行持续探索,进一步提升可微分框架的竞争力。


参考文献

[1] Hanxiao Liu, Karen Simonyan, and Yiming Yang. DARTS: Differentiable architecture search. In ICLR, 2019.[2] Xin Chen, Lingxi Xie, Jun Wu, and Qi Tian. Progressive differentiable architecture search: Bridging the depth gap between search and evaluation. In ICCV, 2019.[3] Han Cai, Ligeng Zhu, and Song Han. ProxylessNAS: Direct neural architecture search on target task and hardware. In ICLR, 2019.[4] Weiwei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott E. Reed, Cheng-Yang Fu, and Alexander C. Berg. Ssd: Single shot multibox detector. In ECCV, 2016.

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
3月前
|
存储 缓存 Cloud Native
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
377 37
|
1月前
|
安全 数据安全/隐私保护 UED
优化用户体验:前后端分离架构下Python WebSocket实时通信的性能考量
在当今互联网技术的迅猛发展中,前后端分离架构已然成为主流趋势,它不仅提升了开发效率,也优化了用户体验。然而,在这种架构模式下,如何实现高效的实时通信,特别是利用WebSocket协议,成为了提升用户体验的关键。本文将探讨在前后端分离架构中,使用Python进行WebSocket实时通信时的性能考量,以及与传统轮询方式的比较。
61 2
|
2月前
|
缓存 运维 NoSQL
二级缓存架构极致提升系统性能
本文详细阐述了如何通过二级缓存架构设计提升高并发下的系统性能。
119 12
|
2月前
|
缓存 安全 Java
如何利用Go语言提升微服务架构的性能
在当今的软件开发中,微服务架构逐渐成为主流选择,它通过将应用程序拆分为多个小服务来提升灵活性和可维护性。然而,如何确保这些微服务高效且稳定地运行是一个关键问题。Go语言,以其高效的并发处理能力和简洁的语法,成为解决这一问题的理想工具。本文将探讨如何通过Go语言优化微服务架构的性能,包括高效的并发编程、内存管理技巧以及如何利用Go生态系统中的工具来提升服务的响应速度和资源利用率。
|
3月前
|
缓存 前端开发 算法
Fiber 架构如何提高性能和响应性的
【8月更文挑战第6天】Fiber 架构如何提高性能和响应性的
48 1
|
3月前
|
消息中间件 缓存 Java
如何优化大型Java后端系统的性能:从代码到架构
当面对大型Java后端系统时,性能优化不仅仅是简单地提高代码效率或硬件资源的投入,而是涉及到多层次的技术策略。本篇文章将从代码层面的优化到系统架构的调整,详细探讨如何通过多种方式来提升Java后端系统的性能。通过对常见问题的深入分析和实际案例的分享,我们将探索有效的性能优化策略,帮助开发者构建更高效、更可靠的后端系统。
|
8天前
|
弹性计算 Kubernetes Cloud Native
云原生架构下的微服务设计原则与实践####
本文深入探讨了在云原生环境中,微服务架构的设计原则、关键技术及实践案例。通过剖析传统单体架构面临的挑战,引出微服务作为解决方案的优势,并详细阐述了微服务设计的几大核心原则:单一职责、独立部署、弹性伸缩和服务自治。文章还介绍了容器化技术、Kubernetes等云原生工具如何助力微服务的高效实施,并通过一个实际项目案例,展示了从服务拆分到持续集成/持续部署(CI/CD)流程的完整实现路径,为读者提供了宝贵的实践经验和启发。 ####
|
5天前
|
监控 安全 应用服务中间件
微服务架构下的API网关设计策略与实践####
本文深入探讨了在微服务架构下,API网关作为系统统一入口点的设计策略、实现细节及其在实际应用中的最佳实践。不同于传统的摘要概述,本部分将直接以一段精简的代码示例作为引子,展示一个基于NGINX的简单API网关配置片段,随后引出文章的核心内容,旨在通过具体实例激发读者兴趣,快速理解API网关在微服务架构中的关键作用及实现方式。 ```nginx server { listen 80; server_name api.example.com; location / { proxy_pass http://backend_service:5000;
|
7天前
|
缓存 监控 API
探索微服务架构中的API网关模式
随着微服务架构的兴起,API网关成为管理和服务间交互的关键组件。本文通过在线零售公司的案例,探讨了API网关在路由管理、认证授权、限流缓存、日志监控和协议转换等方面的优势,并详细介绍了使用Kong实现API网关的具体步骤。
24 3
下一篇
无影云桌面