【知识普及】神经网络架构搜索(Neural Architecture Search,NAS)

2023-11-06

1. 背景引入

超参数的自动搜索优化(Hyperparameter optimization,HO):

  • 随机搜索(Random search)
  • 网格搜索(Grid search)
  • 贝叶斯优化(Bayesian optimization)
  • 强化学习(Reinforcement learning)
  • 进化算法(Evolutionary Algorithm)

对于深度学习,超参数分为两类

  1. 训练参数(learning rate,batch size,weight decay等)
  2. 定义网络结构的参数(基层、算子、卷积大小),维度高,离散,相互依赖。

1的自动调优仍是HO范畴。
2的自动调优一般称为网络架构搜索(Neural Architecture Search, NAS)

2. 网络架构搜索(NAS)

本质上来讲,其与围棋类似,是高维空间的最优参数搜索问题。
缺点:消耗计算资源巨大,不是一般人玩得起的。
在这里插入图片描述
NAS套路

  1. 先定义搜索空间
    链式结构—>多叉结构(组合自由度)—>cell/block
  2. 通过搜索策略找出候选网络结构,进行评估,根据反馈进行下一轮搜索。
    在这里插入图片描述

2.1 NAS 搜索策略

随机搜索简单但相对低效,通常用作baseline。其中基于强化学习进化算法的本质:离散空间中搜索,将目标函数看做黑盒。

2.1.1 基于强化学习

开创性工作:

  • MIT2016,MetaQNN,将网络架构搜索建模成马尔科夫决策过程:Designing Neural Network Architectures using Reinforcement Learning
  • 2016Google,RNN网络作为控制器采样生成描述网络结构的字符串:Neural Architecture Search with Reinforcement Learning

2.1.2 基于进化算法

  • Google:Large-Scale Evolution of Image Classifiers
  • 后续论文:Regularized Evolution for Image Classifier Architecture Search,code:源码,提出tournament selection的变体aging evolution,即进化过程中选择较为年轻的模型,帮助更好地探索,搜索出最优的为AmoebaNet

PS:进化算法搜索较强化学习更快,尤其是早期,且能得到更小的模型。

2.1.3 基于梯度的方法

如果搜索空间连续,目标函数可微,那就梯度信息可更有效地搜索。

  • CMU&Google提出DARTS方法:DARTS, Differentiable Architecture Search,一个要搜索最优结构的cell可看做是包含N个有序节点的有向无环图。DARTS方法中最关键的trick是将候选操作使用softmax函数进行混合。这样就将搜索空间变成了连续空间,目标函数成为了可微函数。这样就可以用基于梯度的优化方法找寻最优结构了。搜索结束后,这些混合的操作会被权重最大的操作替代,形成最终的结果网络。
  • 中科大&微软:Neural Architecture Optimization,将网络结构嵌入到一个连续空间,该空间每个点对应一个网络结构。在这个空间上可以定义准确率的预测函数。以它为目标函数进行基于梯度的优化,找到更优网络结构的嵌入表征。优化完成后,再将这个嵌入表征映射回网络结构。这类方法的优点之一就是搜索效率高。
  • 其他:
    -Adaptive structural learning of artificial neural networks,
    -Deeparchitect: Automatically designing and training deep architectures,
    -Neural architecture search with bayesian optimisation and optimal transport,
    -Simple And Efficient Architecture Search for Convolutional Neural Networks。

2.2 NAS 加速

由于NAS涉及搜索空间巨大,其性能评估往往涉及模型的训练,导致消耗的资源很大。因此相应加速方法也应运而生:

2.2.1 层次化表示

  • Google,NASNet:Learning Transferable Architectures for Scalable Image Recognition,code:源码,假设整体网络由cell重复构建,那搜索空间就缩小对两类cell (normal cell 和reduction cell)结构的搜索上,从而大大减小搜索空间,且有助于知识的迁移。注意:虽然cell结构可学习得到,但如何重复和组合这些cell的元网络结构是预定义的。
  • CMU&Google:Hierarchical Representations for Efficient Architecture Search,定义了一种层次化的网络结构:最底层:像卷积和池化等基本组件;中间层:这些组件所构成的图;最高层:有这些图层叠而成的整体网络。

2.2.2 权值共享

有没有办法让训练好的网络尽可能重用,消除对于候选模型耗时训练。

  • 上海交大&伦敦大学:Reinforcement Learning for Architecture Search by Network Transformation,将Network morphisms(网络态射)与神经网络搜索结合。所谓网络态射就是将网络进行变形同时保持其功能不变。这样带来的好处是变形后可以重用之前训练好的权值,而不是重头开始训练。
  • Simple And Efficient Architecture Search for Convolutional Neural Networks,也是用网络态射达到贡献权重的目的,但用了爬山算法作为搜索策略。
  • 如One-Shot Architecture Search方法,就是在一个大而全的网络上做减法。例如:Understanding and simplifying one-shot architecture searchFairnas: Rethinking evaluation fairness of weight sharing neural architecture searchSingle path one-shot neural architecture search with uniform sampling
  • Google:Efficient Neural Architecture Search via Parameter Sharing,ENAS,核心就是让搜索中所有的子模型重用权值,将NAS过程看作是一张大图中找子图。基本方法类似:Neural Architecture Search with Reinforcement Learning
  • SMASH: One-Shot Model Architecture Search through HyperNetworks,一个特别思路,使用HyperNet来给出其权重,避免重头训练。
  • 中科院:You Only Search Once: Single Shot Neural Architecture Search via Direct Sparse Optimization,提出DSONAS方法,只搜一次。开始于一个完全连接的块,然后在操作间引入缩放因子,同时添加稀疏正则化来去除无用连接即去除不重要操作,得到最优结构。可在一个优化问题中同时学习网络结构和参数。

PS:经典的网络态射一般从小网络开始,然后做[加法]。

2.2.3 表现预测

训练的目的是为了评估该结构的精度。为了得到某个网络模型精度又不花费太久时间,需要代理测度作为估计量。不是绝对精度估计,而是不同网络间的相对值,能够体现不同网络间的优劣关系。那么,有没有可能基于模型结构直接预测准确率呢?

  • Progressive Neural Architecture Search,使用一个代理模型来指导网络结构的搜索。代理是LSTM模型,输入为网络结构的变长字符串描述,输出预测验证精度。
  • Speeding up Automatic Hyperparameter Optimization of Deep Neural Networks by Extrapolation of Learning Curves,基于学习曲线来预测。
  • Learning Curve Prediction with Bayesian Neural Networks,结合网络结构信息超can和时序性的验证精度信息来进行预测。

2.3 NAS 变体及扩展

主要限于图像分类和自然语言处理,且大多只关注模型准确率。很自然的,如果将其用于其他任务应用,更多考虑因素将纳入其中。

2.3.1 语义分割

Google:Searching for Efficient Multi-Scale Architectures for Dense Image Prediction,code:源码,将NAS扩展到语义分割,主要着重两点:搜索空间的设计和代理任务的设计。

2.3.2 多目标

NAS也开始从只考虑精度的单目标演进到多目标,如同时考虑精度、计算量、功耗等。多任务优化问题的一个挑战是往往没法找到单一解让所有子目标同时最优,所以我们找的一般是帕累托最优解。
Google提出的MansNet,MnasNet: Platform-Aware Neural Architecture Search for Mobile,延续之前经典RNN控制其+强化学习方法,在一个层次化搜索空间中搜索。

其他:

  • Resource-Efficient Neural Architect,
  • PPP-Net: Platform-aware Progressive Search for Pareto-optimal Neural Architectures,
  • Efficient Multi-objective Neural Architecture Search via Lamarckian Evolution,
  • NSGA-NET: A Multi-Objective Genetic Algorithm for Neural Architecture Search

2.3.3 优化器

相对于网络结构来说,优化器的迭代可以说比较慢的,但又很引人关注。
Neural Optimizer Search with Reinforcement Learning,可输出更新公式,因此在不同模型和任务间具有很好的迁移能力。

2.3.4 模型压缩

模型压缩可谓是深度学习中最火热的分支,
西交大&Google:AMC: AutoML for Model Compression and Acceleration on Mobile Devices,做剪枝。

2.3.5 数据增强

AutoAugment: Learning Augmentation Policies from Data,首先定义搜索空间:一个数据增强策略包括五个子策略,每个子策略包括两个图像操作,每个图像操作包括两个超参数:一个是应用该操作的概念,另一个是操作相关应用程度。

参考
https://blog.csdn.net/jinzhuojun/article/details/84698471

https://blog.csdn.net/qq_33254870/article/details/97945605

Neural Architecture Search: A survey

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【知识普及】神经网络架构搜索(Neural Architecture Search,NAS) 的相关文章

随机推荐

  • 网格搜索(Grid Search)/超参搜索

    1 网格搜索法 网格搜索法 Grid Search 是一种在机器学习中用于确定最佳模型超参数的方法之一 在机器学习中 超参数是指在训练模型之前需要手动设置的参数 而不是通过学习过程中自动学习得到的参数 网格搜索法通过指定一个超参数的候选值列
  • softmax(三):softmax交叉熵的缺点

    还是废话不说 直接上峰神的链接 Softmax理解之Smooth程度控制 softmax交叉熵我们经常使用 但是为啥有的任务 用softmax交叉熵效果很好 有的任务用效果却不怎么样 在实际项目中 分析softmax交叉熵的缺点 才能知道
  • Activity MQ生产/消费和订阅/发布的区别

    1 在有多个消息接收者时 生产 消费模式下多个消费者会轮流消费队列中的消息 2 而订阅 发布模式下所有订阅者都会得到所有的消息 1 生产和消费 生产者生产消息放到队列里 多个消费者同时监听队列 谁先抢到消息谁就会从队列中取走消息 即对于每个
  • any_value()

    目录 any value ONLY FULL GROUP BY 查看ONLY FULL GROUP BY 解决方法 any value ONLY FULL GROUP BY MySQL5 7之后 sql mode中ONLY FULL GRO
  • gfortran版本

    gcc里面已经集成了gfortran吧
  • JDBC ResultSet获取Date类型相关

    前段时间发现用自己写的工具类获取数据库信息的时候 使用getString来获取数据库date类型的数据时 获取的格式为 yyyy mm dd hh mi ss z精度会一直到毫秒 这个实在是郁闷 而使用getDate来获取 则是只有日期没有
  • 【数据结构】动图详解二叉树——堆及堆排序

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 树的概念 1 树的特征 2 树的相关名词 二 树的表示
  • 抗锯齿相关技术介绍:MSAA、FXAA、SMAA、TXAA、MSAA

    在图像处理中 锯齿一直是一个大问题 因此图像中的抗锯齿 Anti aliaing 简称AA 也被称为边缘柔化 消除混叠 抗图像折叠有损等 AA主要是处理图像有锯齿的边缘 使其图像更清晰清晰 下面有一些反锯齿的常用技术 一 多重采样抗锯齿 M
  • 36 KVM管理设备-配置虚拟串口

    文章目录 36 KVM管理设备 配置虚拟串口 36 1 概述 36 2 操作步骤 36 KVM管理设备 配置虚拟串口 36 1 概述 在虚拟化环境下 由于管理和业务的需求 虚拟机与宿主机需要互相通信 但在云管理系统复杂的网络架构下 运行在管
  • DOM(文档对象模型)

    目录 1 DOM是什么 2 DOM 树 3 节点 4 获取元素 4 1 根据id获取 4 2 根据标签名获取 4 3 根据 name 属性来获取 4 4 根据类名来获取 4 5 根据选择器获取 4 6 获取body元素 4 7 获取html
  • html给百度富文本编辑器editor设置默认值,设置固定高度

    通常在一些文章编辑或者内容编辑的应用场景下会用到百度编辑器设置默认值进行回显 百度到的问题代码 UE getEditor editor setHeight 500 UE getEditor editor setContent 内容 执行完浏
  • Linux系列之:9秒钟掌握多种实时查询日志的方法,再也不用cat命令了。

    实时查询日志 1 引言 2 less 3 tail 3 1 单文件实时查询 3 2 多文件实时查询 3 3 目标名称查询 3 4 跟踪日志 4 multitail 4 1 安装 4 2 用法 5 总结 1 引言 由于最近从某些企业毕业的同学
  • 查看当前SHELL的种类

    shell种类 shell种类常见的有sh bash csh zsh tcsh等 方法 echo 0
  • 【C语言程序设计】C语言渔夫打鱼晒网问题!

    如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔 两天晒一次网 编程实现当输入 2011 1 月 1 日以后的任意一天 输出该渔夫是在打渔还是在晒网 实现过程 1 自定义函数 leap 用来判断输入的年份是否是闰年 2 自定义
  • 软件测试---用例篇

    软件测试 用例篇 测试用例 Test Case 概念 是为了实施测试而向被测试系统提供的一组集合 这组集合包括 测试环境 操作步骤 测试数据 预期结果等要素 好的测试用例是不熟悉业务的人也能根据用例很go准 用例表达清楚 无二义性 不能出项
  • 自增与自减运算符号&&赋值运算符

    自增运算符为 其功能是使变量的值自增1 自减运算符为 其功能是使变量值自减1 它们经常使用在循环中 自增自减运算符有以下几种形式 注意 无论是a 还是 a都等同于a a 1 在表达式执行完毕后a的值都自增了1 无论是a 还是 a都等同于a
  • Unsafe学习

    一 介绍 一个管理内存的类 Unsafe类是 final 的 不允许继承 且构造函数是private的 使用单列模式模式获取类对象 1 1 测试的类 public class UnsafeBean private static int st
  • 计算机程序存储在哪里,计算机正在运行的程序存放在哪里?

    计算机正在运行的程序存放在RAM 内存 里 RAM是与CPU进行沟通的桥梁 计算机中所有程序的运行都是在内存中进行的 因此内存的性能对计算机的影响非常大 计算机正在运行的程序存放在RAM 内存 里 RAM是与CPU进行沟通的桥梁 计算机中所
  • 使用Requests库来进行爬虫的详解

    Requests是用Python编写 基于urllib 采用Apache2 Licensed开源协议的HTTP库 它比urllib更方便 可以节约我们大量的工作 完全满足HTTP测试需求 安装 pip3 install requests 使
  • 【知识普及】神经网络架构搜索(Neural Architecture Search,NAS)

    文章目录 1 背景引入 2 网络架构搜索 NAS 2 1 NAS 搜索策略 2 1 1 基于强化学习 2 1 2 基于进化算法 2 1 3 基于梯度的方法 2 2 NAS 加速 2 2 1 层次化表示 2 2 2 权值共享 2 2 3 表现