神经架构搜索

神经架构搜索

背景

对于深度学习说,超参数主要可为两类:一类是训练参数(如learning rate,batch size,weight decay等);另一类是定义网络结构的参数(比如有几层,每层是啥算子,卷积中的filter size等),它具有维度高,离散且相互依赖等特点。前者的自动调优仍是HO的范畴,而后者的自动调优一般称为网络架构搜索(Neural Architecture Search,NAS)。

传统的模型因为浅层模型结构相对简单,因此多数研究都将模型的结构统一为超参数来进行搜索,比如三层神经网络中隐层神经元的个数。优化这些超参数的方法主要是黑箱优化方法,比如分别为进化优化,贝叶斯优化和强化学习等。但是在模型规模扩大之后,超参数增多,这给优化问题带来了新的挑战。传统的方法遇到的问题主要有:结构编码方式无法代表复杂的网络结构搜索空间,编码空间过大导致这些搜索算法无法收敛,深度学习模型训练时间太长导致黑箱优化方法的计算效率降低等。

传统的结构优化:在早期结构优化的研究中,结构编码作为构建搜索空间的重要步骤,也是一个主要的研究议题,只是其结构编码重点在于神经元之间,和神经元个数等。编码方式主要分为直接编码(即用相同维度的搜索代表网络结构,没有维度的压缩,映射关系简单 ),间接编码(用较低纬度的搜索空间间接代表更多维度的结构信息,映射关系较为复杂),生成编码(按照一定的规则通过较少的参数生成网络结构)等

目的

NAS的意义在于解决深度学习模型的调参问题,是结合了优化和机器学习的交叉研究。

深度学习NAS

NAS的主要研究问题可以总体上分为3个部分:构建搜索空间,优化算法以及模型评估

NAS的套路大多是这样的:先定义搜索空间,然后通过搜索策略找出候选网络结构,对它们进行评估,根据反馈进行下一轮的搜索。

搜索空间

最初:以链式结构为主,主要的思想是将不同的操作单元组合在一起,这样的搜索空间也被称为全局搜索空间NAS需要调整的是每一层所做的操作和对应的参数。每一层的操作有不同的选择,例如可以是卷积,池化,线性变换等。但是Global search spaces 带来了十分昂贵的计算代价。

加速1:为了尽量减少计算消耗,后来主流的研究方法集中在了模块化网络结构并进行拼装(cell-based search space),这个思想主要来源于很多人工设计的结构具有很好效果,这样就可以整块的将网络结构进行组合,每一块具备一项功能,由NAS来决定每一块的位置和参数.

虽然有了上述方法来减少搜索空间,但是迭代一次网络都需要从头开始训练,这样在训练每个模块参数上又会花费很多时间。因此有研究人员想到可以借助模型迁移的思想,减少每次迭代开始的时候的训练次数。

加速2 比较出名的策略就是权重共享(weight sharing),这里每一个待评估的结构都会被当做一个整体网络的子网络,因此这些子网络中的权重可以通过整体网络来实现共享。那么只需要对整体网络的权重进行预训练就可以了。(这部分一般也被看作是一种模型评估的策略)

优化算法

最早被用于NAS的搜索方法是**强化学习(Reinforcement Learning)。**强化学习将每一代的网络结构作为一个action,这个action的rewards就用这个模型的评估结果来表示。

action就是每个CNN产生的架构,rewards就是准确率

**进化算法(Evolutionary Algorithms)**是另一大类用于NAS的优化算法。不同于强化学习算法,进化算法是一种群体优化算法,算法的每一次迭代需要产生一定数量的子代个体,然后从这些个体中选出好的个体来产生一次迭代的个体。进化算法的操作算子主要包括:选择,交叉,变异

基于**梯度(gradient-based)**的方法是机器学习领域最经典的方法。相比于黑箱优化方法,梯度法的搜索速度更快。我们知道,如果搜索空间连续,目标函数可微,那基于梯度信息可以更有效地搜索。最关键的trick是将候选操作使用softmax函数进行混合。这样就将搜索空间变成了连续空间,目标函数成为了可微函数。这样就可以用基于梯度的优化方法找寻最优结构了。搜索结束后,这些混合的操作会被权重最大的操作替代,形成最终的结果网络。

模型评估

准确率

应用

模型压缩:

MIT,西安交大和Google的论文《AMC: AutoML for Model Compression and Acceleration on Mobile Devices》主要针对模型压缩中的重要方法之一 - 剪枝(Pruning)。虽然模型训练时需要复杂的结构,但训练好的模型一般有比较高的冗余度,因此可以进行裁剪,且只降低很少精度,甚至可能提高精度(由于剪枝能起到正则化效果,从而提高模型的泛化能力)。但是,剪枝策略中的参数选择是件很tricky的事。这篇文章提出AMC(AutoML for Model Compression)方法,引入强化学习(具体地,DDPG算法)来学习最优的参数,并且通过设计不同的回报函数可以让最后得到的模型满足不同需要

知乎:

https://zhuanlan.zhihu.com/p/127194745

CSDN:

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

arxiv

https://arxiv.org/pdf/1611.01578.pdf

研究现状github

https://github.com/D-X-Y/Awesome-AutoDL

https://github.com/hibayesian/awesome-automl-papers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值