文是一篇神经网络架构搜索综述文章,从 Search Space、Search Strategy、Performance Estimation Strategy 三个方面对架构搜索的工作进行了综述,几乎涵盖了所有近几年的优秀工作。

■ 论文 | Neural Architecture Search: A Survey

■ 链接 | https://www.paperweekly.site/papers/2249

■ 作者 |Thomas Elsken / Jan Hendrik Metzen / Frank Hutter

引言

深度学习模型在很多任务上都取得了不错的效果,但调参对于深度模型来说是一项非常苦难的事情,众多的超参数和网络结构参数会产生爆炸性的组合,常规的 random search 和 grid search 效率非常低,因此最近几年神经网络的架构搜索和超参数优化成为一个研究热点。


本文从网络架构搜索的三个方面进行了分类综述,包括:

  • 搜索空间

  • 搜索策略

  • 评价预估


问题定义

网络架构和超参数优化的问题,有以下的特点:

1. 评价函数未知,是一个黑箱优化问题,因为评价往往是在 unseen dataset 上进行评价;

2. 非线性;

3. 非凸;

4. 混合优化,既有离散空间,又有连续空间;

5. 一次优化结果的评价非常耗时,大型的深度学习模型参数数以亿计,运行一次结果需要几周时间;

6. 在某些应用场景中,存在多个目标。比如:移动端的模型结构优化,既希望得到尽量高的准确率,又希望有非常好的模型计算效率。


搜索空间

搜索空间定义了优化问题的变量,网络结构和超参数的变量定义有所不同,不同的变量规模对于算法的难度来说也不尽相同。

早期很多工作都是用以遗传算法为代表的进化算法对神经网络的超参数和权重进行优化,因为当时的神经网络只有几层,每层十几个神经元,也不存在复杂的网络架构,参数很有限,可直接进行优化。而深度学习模型一方面有着复杂的网络结构,另一方面权重参数通常都以百万到亿来计,进化算法根本无法优化。

但换个思路,假如我们找到了一组网络架构参数和对应的超参数,深度学习模型的性能其实是由这组参数来控制和决定的,所以只需要对复杂模型的架构参数和对应的超参数进行优化即可

目前常见的一种网络架构是链状结构,如下图:

这种结构相当于一个 N 层的序列,每一层有几种可选的算子,比如卷积、池化等,每种算子包括一些超参数,比如卷积尺寸、卷积步长等。

最近的一些工作受启发于一些人工设计的网络架构,研究带有多分支的网络,如下图:

很多的深层 RNN 会有类似的结构,很多的网络结构虽然很深,但会有许多重复 cell,将 cell 抽象出来之后,复杂的结构也会变得简单,一方面可以减少优化变量数目,另一方面相同的 cell 在不同任务之间进行迁移,如下图。

网络架构搜索问题由于其高维度、连续和离散混合等诸多难点,在搜索空间维度这块如果可以做些降维,将会大大提升效果,Zoph 在 2018 年的工作用了 cell 这种方式相比于 2017 年的工作有 7 倍的加速。

搜索策略

搜索策略定义了使用怎样的算法可以快速、准确找到最优的网络结构参数配置。常见的搜索方法包括:随机搜索、贝叶斯优化、进化算法、强化学习、基于梯度的算法。其中,2017 年谷歌大脑的那篇强化学习搜索方法将这一研究带成了研究热点,后来 Uber、Sentient、OpenAI、Deepmind 等公司和研究机构用进化算法对这一问题进行了研究,这个 task 算是进化算法一大热点应用。

注:国内有很多家公司在做 AutoML,其中用到的一种主流搜索算法是进化算法。

强化学习

强化学习是一种非常有意思的范式,几乎只要可以提炼出强化学习四要素,原问题就可以用强化学习来求解。

在 NAS 任务中,将架构的生成看成是一个 agent 在选择 action,reward 是通过一个测试集上的效果预测函数来获得(这个函数类似于工程优化问题中的 surrogate model,即代理模型)。这类工作整体的框架都是基于此,不同的点在于策略表示和优化算法。

一个工作是,用 RNN 来表示策略函数,初始化时先用策略梯度算法赋初值,然后用 PPO 来进行优化。另一个工作是,用简单的 Q-learning 算法来训练策略函数,序列地进行动作选择,即选择 layer 的类型和相关的超参数。

因为在 NAS 任务中,agent 与环境没有交互,可以降阶为无状态的多臂老虎机(MAB)问题。 这里的几个工作都是近两三年的新工作,后面会对这些 paper 进行专门解读。

进化算法

进化算法是一大类算法,大概的框架也基本类似,先随机生成一个种群(N 组解),开始循环以下几个步骤:选择、交叉、变异,直到满足最终条件。最近几年流行一种基于概率模型的进化算法 EDA (Estimation Distribution of Algorithm),基本的思路类似遗传算法,不同的是没有交叉、变异的环节,而是通过 learning 得到一个概率模型,由概率模型来 sample 下一步的种群。

用进化算法对神经网络超参数进行优化是一种很古老、很经典的解决方案,90 年代的学者用进化算法同时优化网络结构参数和各层之间的权重,因为当时的网络规模非常小,所以还能解决,但后续深度学习模型网络规模都非常大,无法直接优化。

进化算法是一种无梯度的优化算法(Derivative Free Optimization Algorithm),优点是可能会得到全局最优解,缺点是效率相对较低,近两年几家高科技企业做 NAS 时都在用进化算法优化网络结构,同时用基于梯度的方法(BP)来优化权值。在 NAS 任务中,进化算法的交叉算子和任务结合比较紧,被定义为一些类似添加、删除层的操作,而非简单的更改某一位编码。

用进化算法解决 NAS 问题,不同的工作可能聚焦在不同的过程中,比如如何 sample 种群,如何 update 种群,如何生成子代种群等。这些工作将会被在后面的文章中进行解读。

贝叶斯优化

贝叶斯优化(Bayesian Optimization)是超参数优化问题的常用手段,尤其是针对一些低维的问题,基于高斯过程(Gaussian Processes)和核方法(kernel trick)。对于高维优化问题,一些工作融合了树模型或者随机森林来解决,取得了不错的效果。

除了常见的三大类方法,一些工作也在研究分层优化的思路,比如将进化算法和基于模型的序列优化方法融合起来,取各种方法的优势。Real 在 2018 年的一个工作对比了强化学习、进化算法和随机搜索三类方法,前两种的效果会更好一些。

评价预估

评价预估类似于工程优化中的代理模型(surrogate model),因为深度学习模型的效果非常依赖于训练数据的规模,大规模数据上的模型训练会非常耗时,对优化结果的评价将会非常耗时,所以需要一些手段去做近似的评估。

一种思路是用一些低保真的训练集来训练模型,低保真在实际应用可以有多种表达,比如训练更少的次数,用原始训练数据的一部分,低分辨率的图片,每一层用更少的滤波器等。用这种低保真的训练集来测试优化算法会大大降低计算时间,但也存在一定的 bias,不过选择最优的架构并不需要绝对数值,只需要有相对值就可以进行排序选优了。

另一种主流思路是借鉴于工程优化中的代理模型,在很多工程优化问题中,每一次优化得到的结果需要经过实验或者高保真仿真(有限元分析)进行评价,实验和仿真的时间非常久,不可能无限制地进行评价尝试,学者们提出了一种叫做代理模型的回归模型,用观测到的点进行插值预测,这类方法中最重要的是在大搜索空间中如何选择尽量少的点预测出最优结果的位置。

第三种主流思路是参数级别的迁移,用之前已经训练好的模型权重参数对target问题进行赋值,从一个高起点的初值开始寻优将会大大地提高效率。在这类问题中,积累了大量的历史寻优数据,对新问题的寻优将会起到很大的帮助,用迁移学习进行求解,是一个很不错的思路。

另一种比较有意思的思路叫做单次(One-Shot)架构搜索,这种方法将所有架构视作一个 one-shot 模型(超图)的子图,子图之间通过超图的边来共享权重。

思考和评论

网络结构和超参数优化是自动机器学习(AutoML)中关键的一个环节,在上一个人工智能时代,浅层神经网络比较火的时候,自动调参也有很多工作,只不过区别在于不仅仅对超参数进行优化,还对网络的权值一起进行了优化。

在这个人工智能时代来临之后,各种深度模型的效果非常好,重新点燃了这个方向的研究激情,加上强化学习的火热,各种流派百家争鸣。

这个领域中,今后比较有意思的研究点包括:

  • 研究针对多任务和多目标问题的 NAS;

  • 研究更加灵活的搜索变量表示,类似 cell 这种方便进行迁移的表示方式;

  • 挖掘更多的、有难度的 benchmark;

  • 迁移学习的引入,进一步提高效率。

本文作者是 Thomas Elsken,来自德国弗莱堡大学的博士生,他们组维护一个 AutoML 博客 [1]。这篇综述涵盖了 NAS 任务近几年几乎所有的工作,总结地非常详细。他们组里还在撰写一本 AutoML 的学术专著——AUTOML: METHODS, SYSTEMS, CHALLENGES [2]

AutoML相关Paper Repo推荐:

1. awesome-automl-papers

https://github.com/hibayesian/awesome-automl-papers

2. awesome-architecture-search

https://github.com/markdtw/awesome-architecture-search

AutoML相关创业公司推荐:

1. 第四范式

https://www.4paradigm.com/

2. 探智立方

http://iqubic.net/

3. 智易科技

https://www.zhiyi.cn/

4. 智铀科技

https://www.wisutech.com/

5. 云脑科技

http://www.cloudbrain.ai/

6. Sentient

https://www.sentient.ai/

当然,Google、Microsoft、Salesforce、阿里云也都有 AutoML 服务,很多大公司内部也都有自己的平台,Uber、OpenAI、Deepmind 也都在 NAS 任务上做研究。从发展趋势来看,AutoML 是未来人工智能发展的一个重要方向,但目前现阶段的研究成果成熟度和实际产品应用成熟度都存在巨大的提升空间。

相关链接

[1]. https://www.automl.org/

[2]. https://www.automl.org/book/

点击以下标题查看更多论文解读:

#投 稿 通 道#

让你的论文被更多人看到

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢? 答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

神经网络架构搜索(NAS)综述 | 附AutoML资料推荐相关推荐

  1. AutoML系列 | 03-神经网络架构搜索(NAS)综述

    本文是对 "Neural Architecture Search: A Survey"的翻译,这篇Paper 很好的总结分析了 NAS 这一领域的研究进展. 摘要 在过去几年中,深 ...

  2. 单机玩转神经网络架构搜索(NAS) - Auto-Keras学习笔记

    介绍 AutoML这个topic在机器学习领域越来越火,新的研究成果也是层出不穷.在网络架构(NAS),模型压缩(AMC),数据增强(AutoAugment),优化器设计(Neural Optimiz ...

  3. 神经网络架构搜索(NAS)综述

    在阅读近期的CVPR2019时,看到一篇比较亮眼的图像分割论文.来自斯坦福 Li Fei-Fei组(Auto-deeplab),关于利用NAS策略进行图像分割,达到了较优的水平,仅仅比deeplabv ...

  4. 自动化机器学习(三)神经网络架构搜索综述(NAS)简述

    文章目录 技术介绍 简介 技术栈 实现 数据 数据读取 创建模型并训练 模型预测与评估 模型的导出 技术介绍 简介 自动化机器学习就是能够自动建立机器学习模型的方法,其主要包含三个方面:方面一,超参数 ...

  5. 神经架构搜索(NAS)2020最新综述:挑战与解决方案

    终于把这篇NAS最新的综述整理的survey放了上来,文件比较大,内容比较多.这个NAS的survey是A Comprehensive Survey of Neural Architecture Se ...

  6. 《神经架构搜索NAS》最新进展综述,25页pdf

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要5分钟 Follow小博主,每天更新前沿干货 来源于:专知 [导读]本文为大家整理了神经架构搜索NAS的最新进展综述,神经架构搜索(NAS)自 ...

  7. ICLR 2021 | 美团AutoML论文:鲁棒的神经网络架构搜索 DARTS-

    高质量模型的设计和更新迭代是当前 AI 生产开发的痛点和难点,在这种背景下,自动化机器学习(AutoML)应运而生.2017年,谷歌正式提出神经网络架构搜索(Neural Architecture S ...

  8. 神经网络架构搜索(NAS)基础

    网络架构搜索(NAS)已成为机器学习领域的热门课题.商业服务(如谷歌的AutoML)和开源库(如Auto-Keras[1])使NAS可用于更广泛的机器学习环境.在这篇博客文章中,我们主要探讨NAS的思 ...

  9. 【CVPR 2020】神经网络架构搜索(NAS)论文和代码汇总

    关注上方"深度学习技术前沿",选择"星标公众号", 技术干货,第一时间送达! [导读]今天给大家整理了CVPR2020录用的几篇神经网络架构搜索方面的论文,神经 ...

最新文章

  1. 用nginx搭建基于rtmp或者http的flv、mp4流媒体服务器
  2. Oracle Database 12c(12.1) Beta已经开始内部测试
  3. Winform中设置ZedGraph的颜色填充使用Fill
  4. 微软面向初学者的机器学习课程:1.3-机器学习中的公平性
  5. 如何找到一篇论文的源代码?
  6. Excel@C#.Net之单元格设置相关
  7. Android点击效果
  8. 卡巴斯基授权key导入方式方法及其导入key基本原理
  9. 互联网日报 | 瑞幸咖啡内部调查基本完成;12306官方支付宝小程序上线;华为openGauss正式开源...
  10. 设计文档应该怎么写?
  11. 技术经理应该具备哪些方面的能力
  12. 2018.10.16 best-ks分箱
  13. 免费混合虚拟化OVM数据中心解决方案
  14. Flixel Dame 坦克大战(三)完成基本逻辑
  15. 苹果固件验证关闭服务器时间,苹果ios系统终于可以降级了,或关闭固件验证
  16. MySQL自定义函数
  17. 学籍管理系统java_学籍管理系统(Java初级版)
  18. 【12月】RT-Thread VL53L0X TOF传感器驱动实现
  19. 用金蝶kis录入数量初始数据的方法
  20. FFT学习应用之Matlab程序(频率泄露实例)

热门文章

  1. android 如何用httpclient发请求和利用httphead头信息给服务器
  2. [异常解决] android studio检测不到手机的解决办法——ADB驱动自己安装
  3. 数据迁移工具Sqoop和DataX功能比较
  4. 【Demo 0085】导出EXE文件资源
  5. 报错 插入更新_自增主键,三类插入测验答案,在这里。
  6. mysql中text格式化_mysql中char,varchar,text
  7. mt4虚拟服务器在哪里看,mt4查看自己服务器地址
  8. marbin mysql_跨浏览器图像灰度(grayscale)解决方案
  9. 创建微服务架构的步骤_成功备战微服务的5个准备步骤
  10. 量子计算机人的大脑,人类的大脑是量子计算机吗?科学家正在进行测试!