-
2015至2017年间,是CNN网络设计最兴盛的阶段,大多都是由学者人工设计的网络结构。这个过程通常会很繁琐
- 其主要原因在于对不同模块组件的组成通常是个黑盒优化的问题,此外,在不同结构超参数以及训练超参数的选择优化上非凸优化问题,或者是个混合优化问题,既有离散空间又有连续空间
-
NAS(Neural Architecture Search)的出现就是为了解决如何通过机器策略和自动化的方式设计出优秀高效的网络
- 而这种策略通常不是统一的标准,不同的网络结合实际的需求通常会有不同的设计,比如移动端的模型会在效率和精度之间做平衡
-
目前,NAS也是AUTOML中最重要的部分。NAS通常会分为三个方面
- 搜索空间(在哪搜索)
- 搜索策略(如何搜索)
- 评价预估
-
搜索空间,即在哪搜索,定义了优化问题所需变量
- 不同规模的搜索空间的变量其对于的难度也是不一样的。早期由于网络结构以及层数相对比较简单,参数量较少,因此会更多的使用遗传算法等进化算法对网络的超参数和权重进行优化
- 深度学习发展到目前,模型网络结构越来越复杂,参数量级越来越庞大,这些进化算法已经无法继续使用
- 但若我们先验给定一些网络结构和超参数,模型的性能已经被限制在给定的空间,此时搜索的空间已变得有限,所以只需对复杂模型的架构参数和对应的超参数进行优化即可。
-
搜索策略, 即如何搜索,定义了如何快速、准确找到最优的网络结构参数配置的策略
- 常见的搜索方法包括:随机搜索、贝叶斯优化以及基于模型的搜索算法。其中主要代表为2017 年谷歌大脑的使用强化学习的搜索方法。
-
评价预估,定义了如何高效对搜索的评估策略
- 深度学习中,数据规模往往是庞大的,模型要在如此庞大的数据规模上进行搜索,这无疑是非常耗时的,对优化也会造成非常大的困难,所以需要一些高效的策略做近似的评估。 这里一般会有如下三种思路:
- 一、使用些低保真的训练集来训练模型。低保真在实际中可以用不同的理解,比如较少的迭代次数,用一小部分数据集或者保证结构的同时减少通道数等。这些方法都可以在测试优化结构时大大降低计算时间,当然也会存在一定的偏差。但架构搜索从来并不是要一组固定的参数,而是一种优秀的模型结构。最终选取时,只需在较优秀的几组结构中进行全集训练,进行择优选取即可。
- 二、使用代理模型。除了低保真的训练方式外,学者们提出了一种叫做代理模型的回归模型,采用例如插值等策略对已知的一些参数范围进行预测,目的是为了用尽可能少的点预测到最佳的结果。
- 三、参数级别的迁移。例如知识蒸馏等。用已训练好的模型权重参数对目标问题搜索,通常会让搜索拥有一个优秀的起点。由于积累了大量的历史寻优数据,对新问题的寻优将会起到很大的帮助。
- 深度学习中,数据规模往往是庞大的,模型要在如此庞大的数据规模上进行搜索,这无疑是非常耗时的,对优化也会造成非常大的困难,所以需要一些高效的策略做近似的评估。 这里一般会有如下三种思路:
-
早期的NAS的结构如下图所示:
- 找一些预定义的操作集合(eg 卷积、池化等)这些集合构成了Search Space搜索空间。
- 采用一定的搜索策略来获取大量的候选网络结构。
- 在训练集训练这些网络,并且在验证集测试得到这些候选网络的准确率。
- 这些候选网络的准确率会对搜索策略进行反馈,从而可以调整搜索策略来获得新一轮的候选网络。重复这个过程。
- 当终止条件达到(eg:准确率达到某个阈值),搜索就会停下来,这样就可以找到准确率最高对应的网络架构。
- 在测试集上测试最好的网络架构的准确率。
-
下面介绍的几个网络都是遵从以上的结构进行设计的:
- 1. NAS-RLNAS-RL发现神经网络的结构可以用一个变长字符串来描述,这样的话就可以使用RNN来作为一个控制器生成一个这样的字符串,然后使用强化学习算法来优化控制器,通过这种方法得到最终最优的网络架构。
- 2. MetaQNNMetaQNN将选择网络架构的过程看作马尔可夫决策过程,用Q-learning来记录得到的奖励,通过这样的方法得到最优的网络架构。
- 3. Large-scale EvolutionLarge-scale Evolution目标是使用进化算法(Evolutionary Algorithms)来学习一个最优的网络架构。使用一个最简单的网络结构来初始化种群,通过交叉、突变等方法来选择最优种群。
-
4. GeNetGeNet也采用了进化算法,提出了一个新的神经网络架构编码机制,用定长的二进制串来表征一个网络的结构。GeNet随机初始化一组个体,使用预选定义好的基因操作(将二进制串看作一个个体的基因)来修改二进制串进而产生新的个体,从而最终选择出具有竞争力的个体作为最终的网络架构。总结一下早期的NAS的特征:
-
全局搜索策略:早期NAS采用的策略是搜索整个网络的全局,这就意味着NAS需要在非常大的搜索空间中搜索出一个最优的网络结构。搜索空间越大,计算的代价也就越大。
- 离散的搜索空间:早期NAS的搜索空间都是离散的,不管是用变长字符串也好,还是用二进制串来表示,他们的搜索空间都是离散的,如果无法连续,那就意味着无法计算梯度,也无法利用梯度策略来调整网络模型架构。
- 从头开始搜索:每个模型都是从头训练的,这样将无法充分利用现存的网络模型的结构和已经训练得到的参数。
-
全局搜索策略:早期NAS采用的策略是搜索整个网络的全局,这就意味着NAS需要在非常大的搜索空间中搜索出一个最优的网络结构。搜索空间越大,计算的代价也就越大。
大数据视频推荐:
网易云课堂
CSDN
人工智能算法竞赛实战
AIops智能运维机器学习算法实战
ELK7 stack开发运维实战
PySpark机器学习从入门到精通
AIOps智能运维实战
腾讯课堂
大数据语音推荐:
ELK7 stack开发运维
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通