点击上方“视学算法”,选择加"星标"或“置顶”

重磅干货,第一时间送达

本文转载自:机器之心 

作者:Erik Lybecker  |  参与:NeuR

神经架构搜索(NAS)取代了人类「第二阶」的调参工作,使我们能以两层黑箱的方式寻找最优神经网络。这一模式如果能物美价廉地应用,自然是很诱人,要知道「800 个 GPU 训练 28 天」基本不是个人承受得起的。在本文中,作者为我们介绍了 NAS 的进化史,即如何利用多种改进手段,将训练成本压缩到「凡人皆可染指」的程度。

神经架构搜索 (NAS) 改变了构建新神经网络架构的过程。这种技术可以自动地为特定问题找到最优的神经网络架构。「最优」的定义可以看成是对多个特征之间的权衡过程进行建模,例如网络的大小和准确率 [1]。更令人印象深刻的是,现在 NAS 在单个 GPU 上仅需执行 4 个小时,过去在 800 个 GPU 上需要执行 28 天。而实现这一飞跃只花了两年时间,现在我们不需要成为 Google 员工就可以使用 NAS。

但是,研究人员如何实现这一性能飞跃呢?本文将介绍 NAS 的发展之路。

催化剂

NAS 的历史可以追溯到 1988 年的自组织网络思想 [2],但直到 2017 年 NAS 才取得了首个重大突破。当时训练循环神经网络 (RNN) 来生成神经网络架构的想法出现了。

图 1:训练 NAS 控制器的迭代过程图示:训练控制器(RNN),以概率 p 采样架构 A,训练架构 A 的子网络得到准确率 R,计算 p 的梯度并且乘以 R 用于更新控制器。

简单地说,这个过程类似于人类手工寻找最佳架构的过程。基于最优操作和超参数的预定义搜索空间,控制器将测试不同的神经网络配置。在这种情况下,测试配置意味着组装、训练和评估神经网络,以观察其性能。

经过多次迭代后,控制器将了解哪些配置能够构成搜索空间内的最佳神经网络。不幸的是,在搜索空间中找出最优架构所需的迭代次数非常大,因此该过程十分缓慢。

其部分原因是搜索空间遭受了组合爆炸的影响,即搜索空间中可能的网络数量随着添加到搜索空间的组件数量而大大增加。然而,这种方法确实能够找到当前最佳 (SOTA) 网络,该网络现在被称为 NASnet [3],但它需要在 800 个 GPU 上训练 28 天。如此高的计算成本使得搜索算法对大多数人来说都是不切实际的。

那么,如何改进这一想法使其更容易使用呢?在 NAS 训练过程中,大部分耗时来自于训练和评估控制器建议的网络。使用多个 GPU 可以并行训练模型,但它们的单独训练过程所耗时间仍然相当长。减少训练和评估神经网络的计算成本将对 NAS 的总搜索时间产生很大的影响。

这就引出了一个问题:如何在不对 NAS 算法产生负面影响的情况下,降低训练和评估神经网络的计算成本?

降低保真度估计

众所周知,较小的神经网络比较大的神经网络训练速度更快。原因很简单,较小网络的计算成本较低。然而,就准确率而言,较小的神经网络通常比较大的神经网络性能更差。NAS 的目标是找到 SOTA 网络架构,那么是否有方法可以在不牺牲最终性能的情况下,在搜索算法中使用较小的模型呢?

图 2:ResNet 架构示例,其中残差块表示为「ResNet Block」。

答案可以在最著名的计算机视觉架构 ResNet [4] 中找到。在 ResNet 架构中,我们可以观察到同一组操作被一遍又一遍地重复。这些操作构成残差块,是 ResNet 的构建块。这种设计模式使得研究者可以通过改变堆叠残差块的数量,来创建同一模型的更深或更浅的变体。

此架构设计中隐含的假设是,可以通过迭代地堆叠结构良好的构建块,来创建高性能的更大型网络,这种做法完全适合 NAS。在 NAS 的语境下,这意味着先训练和评估小模型,然后扩展该神经网络。例如,先在 ResNet18 上执行 NAS,然后通过重复得到的构建块来构建 ResNet50。

用搜索构建块替代搜索整个架构,以及训练和评估较小的模型,可以极大地提高速度,研究者实现了在 450 块 GPU 上仅耗费 3-4 天的搜索时间 [5]。此外,即使只搜索构建块,该技术也能够找到 SOTA 架构。

然而,尽管这是一项巨大改进,但整个过程仍然相当缓慢,并且要想投入实际应用,训练所需的 GPU 数量必须减少。无论模型大小如何,从零开始训练神经网络始终是一个耗时的过程。有没有一种方法可以重用以前训练好的网络中的权重呢?

权重继承

如何避免从头开始训练神经网络?答案是使用权重继承,即从另一个已经训练过的网络中借用权重。在 NAS 中,搜索是在特定的目标数据集上进行的,并且有多个架构同时训练。为什么不重用权重,只更改架构呢?毕竟,搜索过程的目的是寻找架构而不是权重。为了实现重用权重,我们需要用更严格的结构定义来限制搜索空间。

图 3:NAS 单元被建模为有向无环图(Directed Acyclic Graph),其中边表示操作,节点表示计算单元,计算单元转换并组合先前节点来创建新的隐藏状态。

通过定义允许在搜索构建块中存在的隐藏状态的数量,搜索空间变得非常有限。换句话说,构建块内操作的可能组合数量较大,但并非无限。如果将隐藏状态排序,并将它们的拓扑预定义为有向无环图 (DAG),则搜索空间如图 3 所示。

使用这个搜索空间,我们可以把控制器建议的架构看作是来自更大网络的子网络,其中较大的网络和子网络共享相同的隐藏状态(节点)。

当控制器建议使用某个网络架构时,这意味着选择一组连接(边)的子集,并为隐藏状态(节点)分配新的操作。这种形式意味着很容易以编码方式保存节点上操作的权重,从而实现权重继承。在 NAS 设置中,这意味着以前架构的权重可以用作下一个采样网络的初始化 [6]。众所周知,初始化可以很好地独立于任务或操作 [7] 运行,且由于没有从头开始训练模型,因此可以进行更快的训练。

既然现在已经不再需要从零开始训练每个模型了,那么网络的训练和评估就会快得多。在单个 GPU 上 NAS 只需要 0.45 天的训练时间,相比之前实现了约 1000 倍的提速 [6]。优化技术的结合大大提高了基于强化学习的 NAS 的速度。

这些改进都集中在更快地评估单个架构上。然而,强化学习方法并不是最快的学习方法。是否存在一个替代性搜索过程,可以更高效地遍历搜索空间?

在基于强化学习的 NAS 过程中,需要训练多个模型以便从中找到最佳模型。那么有没有办法避免训练所有的模型,而只训练一个模型呢?

可微性

在搜索空间的 DAG 形式中,训练的网络是较大网络的子网络。那么是否可以直接训练这个更大的网络,并以某种方式了解哪些操作贡献最大呢?答案是肯定的。

图 4:a) 边上的操作最初是未知的。b) 通过在每个边上放置候选操作的混合来连续释放搜索空间。c) 在双层优化过程(bilevel optimization)中,有些权重增加,而有些下降。d) 最终的架构通过在两个节点之间具备最大权重的边来构建 [8]。

如果移除控制器,并将边更改为表示所有可能的操作,则搜索空间可微分。在这个密集的架构中,所有可能的操作都在每个节点上以加权和的形式组合起来。加权和是可学习参数,使得网络能够缩放不同的操作。这意味着可以缩小不利于性能的操作,扩大「良好」的操作。训练较大的网络后,剩下要做的就是观察权重并选择对应较大权重的操作。

通过对搜索空间求微分和训练更大的网络(通常称为「超级网络」),我们不再需要训练多个架构,并且可以使用标准梯度下降优化器。NAS 的可微性为未来发展开辟了许多可能性。其中一个例子是 NAS 中的可微分采样 [9],由于每个前向传播和反向传播在搜索中需要使用的操作减少,因此该方法将搜索时间缩短到只要 4 个小时。

结语

NAS 训练时间如何从多天缩短到几个小时的故事先到此为止吧。在这篇文章中,我试图概述驱动 NAS 发展的最重要想法。现在,NAS 技术已经足够高效,任何有 GPU 的人都可以使用它,你还在等什么?

参考文献:

[1] https://arxiv.org/pdf/1807.11626.pdf

[2] Self Organizing Neural Networks for the Identification Problem (https://papers.nips.cc/paper/149-self-organizing-neural-networks-for-the-identification-problem.pdf)

[3] https://arxiv.org/pdf/1611.01578.pdf

[4] https://arxiv.org/pdf/1512.03385.pdf

[5] https://arxiv.org/pdf/1707.07012.pdf

[6] https://arxiv.org/pdf/1802.03268.pdf

[7] https://arxiv.org/pdf/1604.02201.pdf

[8] https://arxiv.org/pdf/1806.09055.pdf

[9] https://arxiv.org/pdf/1910.04465.pdf

原文链接:https://medium.com/peltarion/how-nas-was-improved-from-days-to-hours-in-search-time-a238c330cd49

欢迎给我"在看"!

​从800个GPU训练几十天到单个GPU几小时,看神经架构搜索如何进化相关推荐

  1. 【读点论文】EfficientNetV2: Smaller Models and Faster Training 训练感知的神经架构搜索+自适应的渐近训练方法优化训练(TPU,大数据量)

    EfficientNetV2: Smaller Models and Faster Training Abstract 本文介绍了EfficientNetV2,这是一个新的卷积网络系列,与以前的模型相 ...

  2. 第十二课 从宠物商店案例看DAPP架构和WEB3.JS交互接口

    1. 文章摘要 [本文目标] 了解ETH生态下DAPP去中心化应用程序的框架和交互流程,了解WEB3.JS的作用和接口函数. [前置条件] 完成了<第六课 技术小白如何开发一个DAPP区块链应用 ...

  3. Keras多GPU训练指南

    更多深度文章,请关注:https://yq.aliyun.com/cloud Keras是我最喜欢的Python深度学习框架,特别是在图像分类领域.我在很多地方都使用到了Keras,包括生产系统.我自 ...

  4. pytorch指定用多张显卡训练_Pytorch多GPU训练

    Pytorch多GPU训练 临近放假, 服务器上的GPU好多空闲, 博主顺便研究了一下如何用多卡同时训练 原理 多卡训练的基本过程 首先把模型加载到一个主设备 把模型只读复制到多个设备 把大的batc ...

  5. keras指定gpu_Keras多GPU训练指南

    摘要:随着Keras(v2.0.8)最新版本的发布,使用多GPU 训练深度神经网络将变得非常容易,就跟调用函数一样简单!利用多GPU,能够获得准线性的提速. Keras是我最喜欢的Python深度学习 ...

  6. 深度学习入门(三十八)计算性能——多GPU训练

    深度学习入门(三十八)计算性能--多GPU训练 前言 计算性能--多GPU训练 课件 多GPU并行 数据并行VS模型并行 数据并行 总结 教材 1 问题拆分 2 数据并行性 3 简单网络 4 数据同步 ...

  7. CPU比GPU训练神经网络快十几倍,英特尔:别用矩阵运算了

    来源丨机器之心 神经网络训练通常是 GPU 大显身手的领域,然而莱斯大学和英特尔等机构对 GPU 的地位发起了挑战. 在深度学习与神经网络领域,研究人员通常离不开 GPU.得益于 GPU 极高内存带宽 ...

  8. TensorFlow在美团外卖推荐场景的GPU训练优化实践

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 知识图谱在美团推荐场景中的应用实践 搜索场景下的智能实体推荐 机器学习在B站推荐系统中的应用实践 小红书推荐系统 ...

  9. 利用gpu加速神经网络算法,外接gpu 训练神经网络

    神经网络做图像分类一定要用到gpu吗? GPU最大的价值一直是"accelerating"(加速),GPU不是取代CPU,而是利用GPU的并行计算架构,来将并行计算的负载放到GPU ...

最新文章

  1. 站长圈转风向标了 都玩自媒体了!
  2. mysql 事务涉及锁吗_MySQL-锁机制和事务
  3. SharePoint 2003, 2007对上传文件的URL的长度限制
  4. 上海2021年高考成绩排位查询,2021年上海各高中高考成绩排名及放榜最新消息
  5. IOS atomic与nonatomic,assign,copy与retain的定义和区别
  6. RSA算法原理——(3)RSA加解密过程及公式论证
  7. ImageUploadAssist--DATA
  8. php 读取文件fread,PHP: 读取文件 fgets 和 fread 的差异
  9. LA 3523 圆桌骑士
  10. 信号量sem 的用法
  11. 分享一篇文章,博主的经历值得借鉴
  12. mui ajax的值php怎样获取,MUI.ajax是怎么获取数据的
  13. php要怎么使用imagettftext_燃气灶漏气怎么办?使用天然气、液化气要注意什么?...
  14. 第一本微服务网关图书上市,详解 GitHub 28.3k+ 标星项目 Kong
  15. VINS_Fusion学习01——官方教程翻译解读
  16. Playmaker与iTween
  17. 游戏能给QQ一个未来吗?
  18. project之任务计划(任务之间的依赖关系)
  19. 理解LaaS、SaaS、PaaS的含义及区别
  20. 稀里糊涂学-MySQL常用函数汇总(持续更新)

热门文章

  1. 刻意练习:LeetCode实战 -- Task01. 两数之和
  2. LeetCode实战:环形链表 II
  3. 为什么要研究游戏 AI 呢?
  4. 人脸识别模型的动手实践!
  5. 速度超Mask RCNN四倍,仅在单个GPU训练的实时实例分割算法 | 技术头条
  6. 对标英伟达,依图发布AI芯片“求索”
  7. 如何在浏览器上跑深度学习模型?并且一行JS代码都不用写
  8. 亏本也要抢市场!谷歌亚马逊一路死磕到CES,争夺语音入口之路,谁都不是吃素的
  9. 可怕!Facebook竟能识别出性工作者!你怎么看?
  10. Spring Boot 核心知识点总结,面试再也不怕了!