[NAS]Neural Architecture Search: A survey

本文围绕神经网络架构搜索(NAS)展开,介绍其定义与意义。阐述了搜索空间,包括链式、分支结构等;搜索策略有随机搜索、进化方法等;性能评估旨在降低成本,有低保真度等方法。还探讨了未来发展方向,最后介绍了强化学习与NAS的关系、应用流程及现存问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Neural Architecture Search: A survey
Def:给定一个称为搜索空间的候选神经网络结构集合,使用某种策略从中搜索出最优网络结构。网络结构的优劣即性能用某些指标如精度、速度来度量,称之为性能评估。
意义:NAS的意义在于解决深度学习模型的调参问题,是结合了优化和机器学习的交叉研究。
在这里插入图片描述

在这里插入图片描述

1.搜索空间

搜索空间定义了NAS方法原则上可能发现的神经体系结构。
链式结构神经网络:层数N->层间操作(conv,pool)->与操作相关的操作(卷积核大小、步幅);
分支结构:多分支+跳跃连接 分支特殊情况:链式结构、残差网络、DenseNet
组成组块->cell(normal cell保留输入维度, reduction cell减小空间维度)
每一层的类型:卷积、反卷积、空洞卷积、反卷积、高度、宽度、水平步长、垂直步长 FC中神经元的数量,激活层的激活函数类型
连接方式:add还是concatenate分别对应resnet和densenet
cell-based search space
整个NAS搜索的参数含有离散数据因此是一个离散优化的问题;定义结构的参数数量一般比较大,属于高纬优化问题;由于算法不知道优化目标函数的具体形式(每种网络结构与该网络性能函数关系)属于黑盒优化问题

2.搜索策略

搜索策略说明如何探索搜索空间:一方面要能快速找到性能良好的架构;另一方面也要避免过早收敛到次优架构的区域
搜索策略包括:随机搜索(RS),贝叶斯优化(BO),进化方法(遗传算法),强化学习(RL)和基于梯度的方法(主流)。
2-1进化方法:like遗传算法同时优化神经架构和权重
一组(可能训练有素的)网络->在每个进化步骤中,至少要采样种群中的一个模型,作为父代对其应用突变来生成后代。NAS中变异是本地操作,如添加或删除层、更改层的超参数、添加跳跃连接或更改训练超参数;训练后代之后评估它们的适应度(如在验证集中的表现)并将其添加到种群中。
采样父母:锦标赛选择,使用反密度从多目标Pareto前沿对父母进行采样;
更新种群:去除最差的个人、去除最老的个体、不移除个人
产生后代:随机初始化自网络、 Lamarckian inheritance:知识(以学习的权重的形式)通过使用网络态射从父网络传递到子网络、让后代继承不受其突变影响的父代所有参数
再探-遗传算法
将子网络结构编码为二进制传,运行遗传算法得到适应度函数值最大的网络结构即为最优解(神经网络在验证集上的精度值)。首先随机初始化若干个子网络作为初始解。遗传算法在每次迭代时首先训练所有子网络,然后计算适应度值。接下来随机选择一些子网络进行交叉,变异生成下一代子网络,然后训练这些子网络,重复这一过程,最后找到最优子网络。
选择-交叉-变异
变异: 变异的做法是每个二进制位分别独立的以某一概率将其值取反 ,即将0变成1,或将1变成0。
有研究表明 强化学习和进化算法在最终测试准确性表现相当好,进化在任何时候都有更好的性能,并能找到更小的模型。
进化算法是一种无梯度的优化算法(Derivative Free Optimization Algrithm),优点是 可能会得到全局最优解,缺点是效率相对较低。在NAS任务中,进化算法的交叉算子和任务结合比较紧,被定义为一些类似添加、删除层的操作,而非简单的更改某一位编码。
在这里插入图片描述

**2-2贝叶斯优化:**最流行的超参数优化方法之一 基于高斯过程和专注于低维连续优化问题,用于架构搜索空间的内核函数、基于GP的经典BO方法 初步证据表明可以胜过进化算法
2-3蒙特卡洛树搜索-贪婪的朝性能更好的架构方向移动而发现高质量的架构 而无需复杂的探索机制-离散搜索空间
2-4基于梯度的神经体系结构优化 分别专注优化层超参数或连接方式
将离散优化问题连续化-DARTS 可微结构搜索(Differentiable Architecture Search)将网络结构搜索转化为连续空间的优化问题,采用梯度下降法求解,可高效搜索神经网络架构同时得到网络的权重参数。
此时目标函数是可导的,能够用梯度下降法求解,同时得到网络结构和权重等参数。
Neural Architecture Optimization-微软+中科大 基于梯度的方法。将网络结构嵌入到一个连续的空间,空间中的每一个点对应一个网络结构;在这个空间上可以定义准确率的预测函数,以它为目标函数进行基于梯度的优化,找到更优网络结构的嵌入表征。优化完成后再将这个嵌入表征映射回网络结构。
优点:搜索效率高

3.性能评估

性能评估旨在减少性能评估成本 主要由以下方法:
(1)低保真度
较短的训练时间、对数据子集的训练、低分辨率的图像、或者每层filter更少、组件更少
性能评估策略:估计一个给定神经网络结构的性能,指导搜索过程,这就是性能评估策略
如何降低训练成本:减少训练时间(迭代次数),在训练样本的一个子集上进行训练,在低分辨率图像上进行训练或者训练时减少某些层的卷积核的数量。 这些算法在降低计算成本的同时可能会导致性能评估值的偏差。虽然搜索策略只需对各种网路结构的优劣进行排序无需知道他们准确的性能指标,但这种近似可能还是会导致排序结果的偏差。
(2)学习曲线外推法
(3)根据架构/单元的性能预测性能并外推到比训练期间更大的架构单元
(4)根据以前已训练过的其他体系结构的权重来初始化新颖体系结构的权重
(5)one-shot NAS:单次架构搜索训练整个超图,子图直接继承权重,并在训练集上评估
on-shot architecture在节点之间有多个候选操作,当one-shot model被训练之后,它的权重在不同的架构之间共享,而这些架构都是one-shot model的子图
不同的one-shot NAS在模型的训练方式上有所不同:NAS学习一种RNN控制器,该控制器从搜索空间中对架构进行采样,并根据通过获得的近似梯度来训练模型。DARTS通过将候选操作混合在one-shot模型的每个边上获得的搜索空间的连续,共同优化了模型的所有权重。SNAS并没有像DARTS中那样优化操作的实际价值权重,而是优化了候选操作的分布。

4.未来发展

(1)将NAS应用于较少探索的域,超越图像分类问题;
(2)用于多任务问题的NAS和多目标问题,其中资源效率的度量是用作搜索目标以及对看不见的数据的预测性能;
多目标NAS用帕累托最优来寻找网络结构
帕累托最优:资源分配的理想状态,在不降低其他目标的前提下任何目标都不能得到改善,则认为是帕累托最优的;在不降低其他目标的前提下某一目标得到改善则称为帕累托改进。
(3)允许表示和识别更通用的分层结构的搜索空间;
因为常见的搜索空间也基于预定义的构造块,如不同类型的卷积和池化,但并不允许在此级别上识别新颖的构造块,超出此限制可能会大大增加NAS的功能
(4)通用基准的定义对于公平比较NAS方法至关重要
网络结构和超参数优化是自动机器学习(AutoML)中关键的一个环节

notes:
一阶NAS:一次训练好涵盖各种网络结构的SuperNet 仅通过正向推导来确定不同网络模型的准确率
不同子网络基于前一次的结果继续训练 而不是从头训练-核心:权重共享
肯德尔指标:肯德尔和谐系数 计算多个等级变量相关程度的一种相关量 Kendall
可重构:reconfigurability,指的是在系统原有软硬件资源的基础上,可通过调整系统的结构、功能等使系统快速适应需求变化的一种特性。
可重构体系结构:指的是如果某一计算系统能够利用可重用的硬件资源,根据不同的应用需求,灵活改变自身的体系结构,从而为每个特定的应用需求提供与之相匹配的体系结构,涉及:编程深度、可重构能力、计算模型。
粒度:指的是系统中可重构成分的操作数的宽度。细粒度:RPU的处理元素常常是逻辑门、触发器、查找表等进行位级操作;粗粒度的RPU中的处理元素可能包括完整的功能单元如ALU,乘法器等进行多个位构成的级操作。如果一个可重构体系结构中包含细粒度和粗粒度两种RPU则称之为混合粒度的可重构体系结构。
编程深度:存储在RPU中的配置文件或程序的数量。
可重构能力:重构实际上就是重新装载配置文件的过程。静态重构:配置文件装载必须在中断程序执行的情况下进行;动态重构:配置文件的装载过程可以与程序执行同时进行。一般单配置文件通常静态重构,多配制文件常用动态重构。
计算模型:大多数可重构系统遵循单处理器的计算模型,如单指令流多数据流(SIMD)或多指令多数据流(MIMD),还有的遵循VLIW计算模型。
异构平台:主要是指由不同类型指令集和体系架构计算单元,可以由CPU,GPU,DSP,ASIC,FPGA等其他处理器构成。
异构计算被视为计算机处理器继单核、多核之后的第三个时代,通过实现不同类型指令集和体系结构的计算单元从而突破CPU发展的瓶颈,有效解决能耗、可扩展性等问题。如CPU何GPU之间的“协同计算,彼此加速”
异构平台对比
GPU:专门对图像处理进行优化加速 可作为协处理器
DSP:优势在于处理速度块,灵活性高,便于调试和系统升级,而且专用性强,数字处理能力优秀但控制能力较弱,最要适合做多核和协处理器。
FPGA:优势在于时序控制精准,一些固定的模块设计最好采用FPGA,更为稳定但是调试起来不太灵活,目前只能做一些prototype或者一些低速率的东西。

神经网络架构搜索综述-小结

NAS搜索基本流程:搜索策略从预定义的搜索空间A中选择具体结构A,该结构被性能评估模块评估,并将对A的性能估计返回到搜索策略,指导下一次的结构选取。最终算法产生一个满足预设性能要求的模型A’,作为问题的输出。
1-搜索空间(Search Space)
链式网络
多分支网络
模块(Normal Cell,Reduction Cell) 优点:模块相对整个网络较小,搜索空间大大减小;通过调整模块数量可以更容易将模块转移到其他数据集 。
cell的搜索空间可以指数级缩减搜索空间的大小
新的问题:如何设计模块结构、使用多少模块、如何连接
搜索空间的选择在很大程度上决定了优化问题的难度
限制:不连续、相对较高维度
搜索空间的确定依然需要人类先验知识,尽管这可能会阻碍机器去发现更有创新性的结构。
一个好的搜索空间基本就奠定了最终搜索到的模型的性能结果的均值
搜索空间设计的两个基本原则:
(1)能够包含若干现有的手工设计模型,在搜索结果的反馈中能够更方便的比较手工设计模型和自动生成模型的优劣;
(2)网络中有较为明显的优劣之别,就是整个搜索空间中的结构应该是比较容易的
Q1:代表性的搜索空间?
初学者实验思路:首先将实验实现在一个较为简单的搜索空间上,如果获得了比较满意的结果然后把算法迁移到更为复杂的搜索空间上。这是一种节约时间和计算资源的方式。
2-搜索策略(Search Strategy)
3-性能评估策略(Performance Estimation Strategy)
3-1学习曲线外推->肯德尔、帕累托
预测神经网络结构性能的主要挑战在于:如何合理利用有限的计算资源,仅仅通过较少的评估网络来获得相对准确的性能排序
3-2One-Shot
HyperNet/SuperNet-架构之间共享权重 只需要训练整个超网络的权重,子图结构可以通过继承超网络的权重,无需从头训练。
缺点:严重低估了网络的实际性能,会产生很大的偏差

Appendix-强化学习

1.强化学习与机器学习的关系
一般看成机器学习的一种,机器学习包括:监督学习、无监督学习、强化学习,监督学习中的数据有标注,无监督学习的数据没有标注,主要用来解决离散的分类和连续的回归问题,分别输出类别和数字。
强化学习:有评估反馈但却没有标注数据,以及评估反馈不能像监督学习中的标注那样指明一个决策正确与否与监督学习相比,还需要解决:成绩分配、稳定性、探索和利用等挑战。
强化学习可以不用模型,直接通过数据进行训练,从而做出接近最优或最优的决策,数据可以来自完美模型、精准仿真器或大数据。
2.强化学习简介
智能体(agent)与环境(environment)交互,针对序列决策问题,通过试错(trial_and_error)的方式学习最优策略。
这是一个马尔科夫决策过程(Markov Decision Process):在每一个时间步,智能体接收到一个状态(state)根据策略(policy)选择一个动作(action)获得奖赏(reward),然后根据环境的动态模型转移到下一个状态。
经验(experience):指的是状态、动作、奖赏、下一个状态等这样一系列数据;
环境:片段式环境(episodic)有终止状态, 连续性环境(continuing)无终止状态
强化学习的状态和动作空间可以是连续的活离散的,学习的问题可以是确定的、随机的、动态的或对抗性的。
状态值函数/动作值函数分别用来度量每个状态或每对状态-动作的价值,是对回报的预测,而汇报是长期折扣累积奖赏的期望。
最优值函数:所有策略所能得到的最好的函数-对应的策略成为最有策略
最优值函数包含了全局优化信息
强化学习的目标是得到最优的长期回报或找到最优序列
因为很多实际问题没有现成的系统模型,这才是强化学习的用武之地。强化学习是一种model-free的方式,可以通过与环境交互的在线方式(on-line)学习也可以通过离线(off-line)方式从历史数据中学习。
时序差分学习:temporal difference是RL中的一个核心概念,TD学习会直接从经验中通过自助法(bootstrapping),以model-free,on-line,完全增量(incremental)的方式学习状态值函数,并且通过行为策略产生的样本来估计同样的策略。
Q学习就是一种TD控制方法,通过学习最优动作值函数来找到最优策略,是基于值(value)的方法。
还有一种是基于策略的方法(policy-based)是直接优化策略,比如策略梯度的方法(policy gradient),以及actor-critic算法同时更新值函数和策略。
不管是值函数还是策略 如果状态空间和动作空间很大或者连续,就需要函数近似来实现泛化(generalization):目标是从部分样本泛化函数从而近似整个函数。-常用线性函数近似,随着深度学习的流行越来越对使用非线性函数近似。
DL+RL = deep reinforcement learning,用深度神经元网络来表达状态、值函数、策略、模型等。
强化学习的基本问题是:探索-利用之间的矛盾(exploration-exploitation)。智能体一方面需要利用目前最好的策略希望获得最好的汇报;另一方面目前最好的策略不一定是最有策略,还需要探索其他可能性,因此智能体需要在探索-利用这两者之间进行平衡折中。
3.应用强化学习的流程
在这里插入图片描述

第一步:定义强化学习问题。定义环境、智能体、状态、动作、奖赏这些核心元素。
第二步:数据准备,收集数据,预处理。
第三步:特征工程,一般根据领域知识手动生成,也可能以端到端的方式自动产生。
第四步:选择表征方式,有深度神经元网络、其它非线性、线性、甚至表格等表征方式。
第五步:选择算法,根据问题选择几种算法。
第六步:实验、调优系统;可能要多次迭代前面几步。
第七步:部署、调优系统。可能要多次迭代前面几步。
4.强化学习现存问题
死亡三组合(deadly triad):强化学习与函数近似结合,尤其与深度学习结合(在异策略、函数近似、自助法)同时结合时训练可能会碰到不稳定或发散的问题;而深度强化学习的实验结果还会受到网络结构、奖赏比例、随机种子、随机实验、环境、程序实现等的影响。
卷积神经元网络-变换不变性(translation invariance)无论物体在图像中的什么位置,其表现基本不变;
空间局部性(spatial locality)一组临近的像素共同提供图片的信息。
这两者帮助卷积神经网络找到合适的归纳偏向。

强化学习+健康医疗 专题

References:
[1]耿飞,王春楠,王宏志.神经网络架构搜索综述[J].智能计算机与应用,2020,10(06):25-30.
[2]耿飞. 基于One-shot模型的神经网络架构搜索[D].哈尔滨工业大学,2020.
[3]尚迪雅,孙华,洪振厚,曾庆亮.基于无梯度进化的神经架构搜索算法研究综述[J].计算机工程,2020,46(09):16-26.
[4]谷雪. 基于进化策略的神经网络架构搜索算法研究[D].吉林大学,2020.
[5]张选杨. 深度神经网络架构优化与设计[D].电子科技大学,2019.
[6]蔡涵. 基于网络变换的高效神经架构搜索[D].上海交通大学,2019.
[7]强化学习应用简述.人工智能算法与Python大数据 https://mp.weixin.qq.com/s/DrZvUqJDTopfAQFpMjZGlg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值