问题定义

现代的深度神经网络有时会包含多种类型的层,而且这些层不止一个。Skip connections和子模块方法也被用来促进模型的收敛,它们对可能形成的模型体系结构的空间没有限制。目前大多数的深度神经网络结构都是根据人类经验建立起来的,这种方式需要一个漫长而繁琐的试错过程。NAS试图在不需要人工干预的情况下能够针对特定深度学习问题检测出有效架构。

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

  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 模型(超图)的子图,子图之间通过超图的边来共享权重。

本篇笔记主要来源是 Thomas Elsken的bolg,来自德国弗莱堡大学的博士生。

自动网络搜索(NAS)的理解相关推荐

  1. 自动网络搜索NAS之FBNetV1

    1. 摘要 为移动设备设计卷积网络挑战巨大,因为设计空间巨大,现有NAS方法在计算上是昂贵的.另外,之前的工作关注降低FLOPs,但是FLOPs并不总是反应真实的延迟.因此基于differentiab ...

  2. 【华为云技术分享】自动网络搜索(NAS)在语义分割上的应用(二)

    [摘要] 本文将介绍如何基于ProxylessNAS搜索semantic segmentation模型.最终搜索得到的模型结构可在CPU上达到36 fps. 随着自动网络搜索(Neural Archi ...

  3. 【华为云技术分享】自动网络搜索(NAS)在语义分割上的应用(一)

    [摘要] DeepLab等神经网络在语义分割上取得了显著的成果.虽然近年来神经网络的数量在不断增加,但取得重大突破者甚少且准确度上提升不多.其中一个原因是多数的网络结构都是人为设计,基于现有成熟的结构 ...

  4. 【AutoML】进化算法如何用于自动模型搜索(NAS)

    大家好,欢迎来到专栏<AutoML>,在这个专栏中我们会讲述AutoML技术在深度学习中的应用,这一期讲述进化算法用于模型搜索的基本概念和流程. 作者&编辑 | 言有三 一直以来, ...

  5. 除了网络搜索(NAS),AutoML对深度学习模型优化还有哪些贡献?

    文/编辑 | 言有三 自从Google提出AutoML技术以来,已经过去了好几年了,如今在学术界和工业界都是热点.AutoML在网络结构的搜索上已经取得了非常多的突破,相关的文章,技术博客都已经广为流 ...

  6. 【小结】除了网络搜索(NAS),AutoML对深度学习模型优化还有哪些贡献?

    文/编辑 | 言有三 自从Google提出AutoML技术以来,已经过去了好几年了,如今在学术界和工业界都是热点.AutoML在网络结构的搜索上已经取得了非常多的突破,相关的文章,技术博客都已经广为流 ...

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

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

  8. CVPR 2019 | NAS-FPN:基于自动架构搜索的特征金字塔网络

    作者丨孙明珊 学校丨哈尔滨工业大学(深圳)硕士生 研究方向丨目标检测 研究动机 当前目标检测网络中采用特征金字塔网络(FPN)结构解决多尺度的问题,但是这些 FPN 都是人工事先设计,并不一定是最优的 ...

  9. 深度学习自学(十三):Nas+Mnas移动端网络搜索结构

    NasNet论文地址:https://arxiv.org/pdf/1707.07012.pdf MnasNet论文地址:https://arxiv.org/pdf/1807.11626.pdf 一.M ...

最新文章

  1. 【为自己相亲】单身小姐姐你在哪里,我是书豪,我在等你
  2. MySQL外键约束On Delete、On Update各取值的含义
  3. nginx限制上传大小和超时时间设置说明/php限制上传大小
  4. 【2019.08.21】2019杭电多校第十场
  5. 鸿蒙升级后能恢复安卓吗,升级了鸿蒙系统怎么卸载鸿蒙系统?升级了鸿蒙还能用安卓吗?...
  6. C/C++ 获取本地日期时间常见方法
  7. OCS2007视频会议客户端的部署与应用
  8. java中常用的json转换工具类
  9. Servlet的九大内置对象
  10. Navicat 15 premium手动备份数据库步骤
  11. 正确的价值观和干部队伍引领华为走向长久成功
  12. chrome下载速度慢,提高下载速度
  13. 动态规划——买卖股票系列
  14. 淘宝首页和详情页的规范
  15. 如何修复老照片,Bringing-Old-Photos-Back-to-Life机器学习开源项目安装使用 | 机器学习
  16. Pygame基础知识(14)-pygame.image.load()对象和blit()绘制
  17. 基因算法解析、设计,以解决背包问题和旅行商问题为例
  18. 软件测试工程师简历要怎么写,才能让HR看到
  19. w3cschool菜鸟教程离线版chm手册正式发布
  20. C++经典算法题-最大访客数

热门文章

  1. Expm 1_2 实现快速排序的算法,并尝试采用不同的方法实现线性的划分过程.
  2. Java中模拟POST上传文件
  3. MySql大数据量恢复
  4. VMware Linux 下 Nginx 安装配置 (一)
  5. [转载]读史记札记26:容人岂皆有雅量
  6. React Native中一些常用组件用法
  7. LeetCode(520)——检测大写字母(JavaScript)
  8. LeetCode(821)——字符的最短距离(JavaScript)
  9. Ant-design-vue定制主题色
  10. 每日长难句打卡Day23