NAS神经网络结构搜索简述

很多大厂针对具体任务已经开始普及NAS来定制网络了,因而总归要有所了解,不懂的话可以先快速上手概念和流程

NAS

虽然方法层出不穷,但基本都包括这三大部分:

  1. 定义搜索空间;
  2. 执行搜索策略采样网络;
  3. 对采样的网络进行性能评估。
    接下来我们从这三个方面介绍NAS的发展现状。

搜索空间

大致分为:全局搜索空间、基于细胞的搜索空间
前者搜索整个网络结构,后者搜索小的结构(通过堆叠、拼接等组成大网络)

搜索策略

1、基于强化学习

该方法通过智能体(agent)与环境交互,每次agent都会执行一些动作(action),并从环境中获得回馈,强化学习的目标就是让回馈最大化。
NAS可以很自然地被建模为一个强化学习任务,最初的NAS使用RNN作为控制器来采样子网络,对子网络训练、评估后使用策略梯度方法更新RNN参数。
这种方法简单可操作,易于理解和实现,然而基于策略梯度的优化效率是很低的,而且对子网络的采样优化会带来很大的变异性(策略梯度有时方差很大)。其实这也是无奈之举,RNN只能生成网络描述,因而无法通过模型的准确率直接对其进行优化。同样的策略也适用于各种其他的约束,如网络时延等各项衡量网络好坏的指标。

2、基于进化算法

通过选择、重组和变异这三种操作实现优化问题的求解。
该方法首先对网络结构进行编码,维护结构的集合(种群),从种群中挑选结构训练并评估,留下高性能网络而淘汰低性能网络。接下来通过预设定的结构变异操作形成新的候选,通过训练和评估后加入种群中,迭代该过程直到满足终止条件。
某改进:引入年代的概念,加入新元素时移除队首的元素,保持年轻化

3、基于梯度的方法

1,2中将网络看成黑盒优化,离散问题。通过表示为连续分布可使用梯度优化。
将网络空间表示为一个有向无环图,其关键是将节点连接和激活函数通过一种巧妙的表示组合成了一个矩阵,其中每个元素代表了连接和激活函数的权重,在搜索时使用了Softmax函数,这样就将搜索空间变成了连续空间,目标函数成为了可微函数。
在搜索时,DARTS会遍历全部节点,使用节点上全部连接的加权进行计算,同时优化结构权重和网络权重。搜索结束后,选择权重最大的连接和激活函数,形成最终的网络,DARTS的整个搜索过程如下图所示。
某改进:NeuralArchitecture Optimization论文中使用encode-decode框架,将网络编码,一个点对应一个网络结构。
在这里插入图片描述

性能评价

1最简单的方法是在训练数据上训练每个子网络并评估其在测试数据上的表现,然而,从头训练这么多结构太过耗时。
2上面提到过,ENAS、DARTS和NAO都使用了权重共享来代替重新初始化,并大大加速了搜索过程。
3评估时使用数据集的一小部分、减少网络参数、训练更少的轮数或者预测网络训练的趋势等(但是对早期性能突出的会偏袒)

OneShot的结构搜索

该方法将搜索空间定义为超级网络(supernet),全部网络结构都被包含其中。
交替地训练网络权重和模型权重,最终只保留其中一个子结构,上面提到的DARTS和ENAS就是这一类方法的代表。
该类方法的本质其实是对网络结构进行排序,然而不同的网络共享同一权重这一做法虽然大大提高搜索效率,却也带来了严重的偏置。显然,不同的神经网络不可能拥有相同的网络参数,在共享权重时,网络输出必定受到特定的激活函数和连接支配。(如ENAS搜索出来几乎都是ReLUctant和tanh,DARTS搜索出来都是ReLU,且后者显存你占用量很大,因而只用来搜索较小的细胞结构)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值