当前位置: 首页 > news >正文

[论文阅读] Neural Architecture Search: Insights from 1000 Papers

题目:Neural Architecture Search: Insights from 1000 Papers
链接:https://arxiv.org/pdf/2301.08727

1. Introduction

NAS在众多领域有着广泛应用,近两年来有超过1000篇相关文章。

1.1 A Brief History of NAS and Relation to Other Fields

神经网络结构搜索(neural architecture search, NAS)起源于自动机器学习(automated machine learning,AutoML)。AutoML是一种自动化学习框架,包括数据清洗、特征工程与选择、参数与结构搜索等一些列流程。
NAS可以被视为参数优化(hyperparameter optimization, HPO)的一个子集。与HPO不同,NAS只优化与模型相关的参数。

一般而言,学习率、batch size等通用参数不在NAS的考虑范围内

HPO优化的参数,(例如学习率、batch size等),这些参数通常是独立的、互不相关的。NAS优化的参数,往往是互相关联的。

现有NAS主要包括强化方法(reinforcement learning),进化方法(evolutionary algorithms),贝叶斯优化方法(Bayesian optimization)和权重共享的技术(?weight sharing)。近年来,最为流行的是one-shot类方法,相比于黑盒优化模型,此类方法带来了显著加速。

此外,近年来领域内较为重要的是出现了NAS-Bench-101这样的评价基准,使得NAS方法的性能可以相对公平地比较。

1.2 Background and Definitions

  • Search space: 所有可供搜索的架构的集合
  • Search strategy: 优化策略,主要包含black-bos optimization & onr-shot optimization
  • Performance estimation strategy: 快速估计架构表现的策略(通常避免完整的训练)
    关于NAS的形式化定义:

    其中 A A A是搜素空间, w w w是参数, L t r a i n L_{train} Ltrain是训练的loss, L v a l L_{val} Lval是验证的loss。

这种形式被称为 Bi-level 优化模型

2. Search Spaces

不同类型的搜索空间如下表:
在这里插入图片描述

2.1 Terminology

搜索空间的术语:

  • Operation/primitive: 最小原子单元,通常是激活函数、操作函数和正则函数组成的三元组
  • Layer:与operation含义接近,但通常是指一些广为人知的operation组合
  • Motif:由一些operation构成,介于cell和operation之间
  • Block/Module:一系列layer的组合(通常是是序列的形式拼在一起的)
  • Cell:包含一些operation(通常是以图的形式拼在一起的),以及这些operation之间的有向图

3. Black-Box Optimization Techniques

包括强化方法、进化方法、贝叶斯优化方法、蒙特卡洛树方法等。由于需要训练很多独立的、缺少关联的框架,黑盒方法往往比one-shot方法消耗更多资源。然而,黑盒方法有更加简单,设计方便,利于并行化等优点。

3.1 Baselines

  • random search
  • random sampling

3.2 Reinforcement Learning

此类方法对GPU和时间的消耗非常大。

3.3 Evolutionary and Genetic Algorithms

进化算法改进的核心是对“更广阔地探寻搜索空间”和“更深入地开发现有最佳区域”之间的平衡。

原文:These methods trade off exploration vs. exploiting the best region found so far

比较值得关注的是regularized evolution,修改了进化的淘汰条件。一般进化算法是给最好的种子机会,这样会较快陷入局部最优。regularized evolution提出每次淘汰较老的,给较新的种子机会,这样有利于对全局最优的探索。

3.4 Bayesian Optimization

贝叶斯优化的两大核心:

  1. 设计概率代理函数(building a probabilistic surrogate to model the unknown objective based on past observations)
  2. 设计估值函数(defining an acquisition function to balance the exploration and exploitation during the search)

3.5 Monte Carlo Tree Search

核心:递归采用

4. One-Shot Techniques

One-shot方法的主要目的是:避免每次对搜索到的结构从头开始训练,以减少时间/计算资源的消耗。
One-shot的主要实现方式有两种:

  1. 设计一个hypernetwork,产生不同模型的weights
  2. 设计一个supernetwork,所有可能的架构都是来自supernetwork的一个子集。因而,只需要对这个supernework进行适当的训练即可。
    在这里插入图片描述
    在这里插入图片描述

4.1 Non-Differentiable Supernet-Based Methods

非梯度的方法主要有两种形式:

  1. 拆解supernet的训练和结构搜索,即先训练supernet,后做black-box的搜索
  2. 两者同时进行

4.2 Differentiable Supernet-Based Methods

这是NAS中发展最为繁荣的一种形式
必读:DARTS (Differentiable Architecture Search) ,是划时代的工作

在这里插入图片描述
针对DARTS有如下方面的改进:

  1. Rank Disorder:one-shot方法的主要假设是:使用超级网络评估的架构排名与独立训练架构所获得的排名相对一致,当这一条不满足的时候,就会出现Rank Disorder现象。SGAS、XNAS等是针对这一方面的改进。
  2. Operation Biases:一些工作表明,NAS是存在对不同operation的偏好的不同,比如更喜欢使用跳跃连接(skip connection)。DARTS-PT,FairDARTS是对这一方面的改进。
  3. Poor Test Generalization:对泛化性的改进包括:Robust-DARTS
  4. High Memory Consumption:PC-DARTS和ProxylessNAS等是对空间开销的优化。

4.3 Hypernetworks

主要包括一些用直接生成weights 的方法,与HPO类似。

5. Speedup Techniques

5.1 Performance Prediction

为了避免将每一个搜索到的结构都训练一遍,可以设计一个预测模型,对已知结构的训练结果进行预测,然后筛选出可能有较好表现的少量模型进行训练。

在这里插入图片描述

5.2 Multi-Fidelity Algorithms

5.3 Meta-Learning

本质是利用旧有实验数据,可以和DARTS等方法结合。

5.4 Weight Inheritance and Network Morphisms

通过参数复用/共享来节约训练成本。

其他

余下部分包含具体应用、衡量基准、未来方向等,主要涉及具体实现。本文主要关注理论方法,对后续内容不再进行详细解读。推荐读者继续阅读原文,https://arxiv.org/pdf/2301.08727。

http://www.lryc.cn/news/577199.html

相关文章:

  • macos 使用 vllm 启动模型
  • 在 VS Code 中安装与配置 Gemini CLI 的完整指南
  • java JNDI高版本绕过 工具介绍 自动化bypass
  • 【Debian】1- 安装Debian到物理主机
  • leedcode:找到字符串中所有字母异位词
  • 【Actix Web】Rust Web开发JWT认证
  • C#跨线程共享变量指南:从静态变量到AsyncLocal的深度解析
  • Excel转pdf实现动态数据绑定
  • Java设计模式之结构型模式(外观模式)介绍与说明
  • BUUCTF在线评测-练习场-WebCTF习题[MRCTF2020]你传你[特殊字符]呢1-flag获取、解析
  • FPGA实现CameraLink视频解码转SDI输出,基于LVDS+GTX架构,提供2套工程源码和技术支持
  • AWS 开源 Strands Agents SDK,简化 AI 代理开发流程
  • python:运行时报错 No module named flask
  • CAU数据挖掘 支持向量机
  • Instruct-GPT奖励模型的损失函数与反向传播机制解析
  • Linux 系统管理:高效运维与性能优化
  • C语言之文件操作详解(文件打开关闭、顺序/随机读写)
  • 本地部署OpenHands AI助手,自动化编程提升开发效率
  • 如何提升 iOS App 全链路体验?从启动到退出的优化调试流程
  • Objective-c把字符解析成字典
  • python包管理工具uv VS pip
  • 在Flutter中生成App Bundle并上架Google Play
  • camera调试:安卓添加xml注册
  • 二刷 苍穹外卖day09
  • 【硬核数学 · LLM篇】3.1 Transformer之心:自注意力机制的线性代数解构《从零构建机器学习、深度学习到LLM的数学认知》
  • 借助 Wisdom SSH,实现 Linux 用户组与权限的精细化智能管控
  • DataGrip测试连接时出现报错解决方案
  • 谷歌高调宣布,Gemini 2.5 Pro正式版,绘制常见图表(折线图、柱状图、PPT等),国内直接使用
  • 将 h264+g711a存为 mp4文件,记录
  • uniapp+vue2 ba-tree-picker下拉项多选 树形层级选择器(支持单选、多选、父级选择、映射)