A Survey on Neural Architecture Search

1.摘要

神经网络架构的搜索和深度学习一样近些年变成了一个相当热门的领域。深度学习方面的很多进步都源于NAS(Neural Architecture Search)的进步。深度学习非常耗时,且需要丰富的领域知识才能很好地用它。
在这篇论文里,讨论了基于强化学习,进化算法,代理模型等NA优化算法。还讨论了该领域的一些新研究,包括考虑约束,多目标,数据增强,优化器和激活函数搜索。

2.介绍

这里作者提到,搜索合适的神经网络体系结构任务本身就耗时,艰巨,易错。
从2017年的由Zoph等人的Neural architecture search with reinforcement learning工作开始,我们把NAS问题考虑为了对神经网络不同组件的一组决策上的搜索问题。同年,也有人用进化算法得到了类似的结果。
研究人员发现搜索空间的设计成了NAS很重要的一部分。关于搜索空间的设计将在后文讲到。
同时,研究人员还开始考虑并研究了以下问题:①降低搜索时间和找到体系结构的错误率②处理多目标③降低模型规模大小④考虑约束⑤搜索激活函数⑥数据增强⑦借用迁移学习的方法处理该问题

3.神经网络架构搜索空间

搜索空间可以大致分为两类。第一类搜索空间是为表示整个神经结构的图定义,我们将其称为全局搜索空间。第二类假设一个体系结构是结合重复的少数单元格来构建整个网络。

2.1全局搜索空间
在这里插入图片描述
上图a为第一个全局搜索空间的最简单的例子链式结构。它包括的一系列操作有卷积、池化、具有激活的线性变换(Dense层)和具有不同超参数设置如过滤器数量、内核大小、步长和池大小的全局平均池化层。

同年,Zoph和Le提出了个如图b所示的结构。对比a,图b会更加不受约束,它允许存在任意的跳过一些层进行连接。

之后又出现了如图c的结构。对比b,它使用到了求和操作,而非图b结构的短接。而且,它的结构里的连接不再是顺序的了,即一个节点的前一个父节点不一定包括它的前一个节点。它还使用到了多个相同的segment结构。每个由多个卷积操作组合构成前面部分,再以池化结尾。

2.2基于单元的搜索空间

2018年,Zoph首次提出基于细胞的搜索空间称为NASNet的结构。
该结构出现的原因是我们发现很多人工构建的有效体系结构都是用重复的固定结构设计。在这方面的文献中,我们会用cells, blocks或units来表示该结果,在本文中统称为单元cell。
由于这些单元可以灵活地堆叠以构建更大或更小的网络,这种设计不仅可以产生高性能的模型,而且还可以跨数据集和任务轻松地泛化。
在这里插入图片描述
如上图所示,我们会基于重复的标准的单元(normal cell)来构建网络。虽然cell重复,但里面具体的参数可变。另外,图中的reduction cell也是由Zoph提出专门设计用来降维的,也有人用池化代替该操作。
具体的reduction cell可以到原论文详看。

在这里插入图片描述
同时,Zoph和Zhong等人提出了如上图的结构。在这,他们使用了固定的最大池层,而不是还原单元来处理架构模板中的特征维度。而上图右边的结构表示了一个搜索得到的cell图。
在这里插入图片描述
Liu等人,在2018,提出一个类似于Zhong等人提出的搜索空间,如上图所示。主要区别是将搜索空间分解为层次搜索空间,详细见原文。

2.3两种空间的比较
基于单元的搜索空间,特别是NASNet搜索空间,是目前研究的主流。这得益于它的灵活性,具体点讲,它很容易在不同的数据集上泛化,也可以很容易控制模型的复杂性。当然,这也不是说全局搜索空间不好,也有人用它得到了与后者可比的实验结果,不过需要一些先验知识。

2.4循环结构的搜索空间
Zoph and Quoc V. Le 的 Neural architecture search with reinforcement learning是目前唯一一篇定义循环结构的文献。读者感兴趣可以去阅读原文,我对该领域也涉及不深。

3.优化方法

假设,我们将数据集分为了 d t r a i n d_{train} dtrain d v a i l d d_{vaild} dvaild两部分。

实质上,我们的神经架构搜索是寻找体系结构的任务 α ∗ α^∗ α在验证集 d v a i l d d_{vaild} dvaild上最大化目标函数O。具体定义如下:
在这里插入图片描述
其中,O的第一个参数由下式定义。下式右边第一项为损失函数,后面一项为正则项。
在这里插入图片描述
优化函数 f ( α ) f(\alpha) f(α)是一个全局黑盒优化问题。在下面,讨论了几种基于强化学习、进化算法等的优化策略。

3.1强化学习
在这里插入图片描述
强化学习的一般框架如上图所示。
该部分略,想看可留言。
3.2进化算法
在这里插入图片描述
进化算法一般框架如上图所示。
该部分略,想看可留言。

3.3代理模型
在这里插入图片描述
代理模型一般框架如上图所示。
该部分略,想看可留言。

3.4One-Shot结构搜索
我们将一种体系结构搜索方法定义为在搜索过程中训练单个神经网络的一次性搜索方法。这种方法的优点是搜索工作量相对较低,仅略大于搜索空间中一个架构的培训成本。这种方法可以方便地与前面讨论的许多优化方法相结合。
该部分略,想看可留言。

4.训练过程的提前终止

无论基于以上哪种搜索优化方法,我们都无法避免对模型进行训练,然后评估其表现进行改进。但如果每个模型都训练到成熟阶段再评估下结论是否有改进将非常耗时。同时,对于神经架构搜索,我们不需要知道验证的准确性,只要知道一个架构候选是比当前的最佳解决方案更好还是更差就足够了。
所以,我们采取这样的策略:如果当前的训练过程很有可能不会导致改进的解决方案,则该过程将被终止。
所以,研究人员试图基于架构和数据信息以及过早的学习曲线来预测最终的性能。所有这些方法都使用一个模型来预测培训工作的最终表现。该模型提供了一个过早的学习曲线将超过一个特定的精度的概率。这将用于确定当前的培训工作将提供比当前的最佳培训工作精度更高的网络的可能性。如果此可能性不超过预定的阈值,则将终止培训。

以下是作者提到的近些年在该领域研究比较好的文章。

Speeding up automatic hyperparameter optimization of deep neural networks by extrapolation of learning curves,2015

Learning curve prediction with bayesian neural networks,2017

Speeding up hyper-parameter optimization by extrapolation of learning curves using previous builds,2017

Accelerating neural architecture search using performance prediction,2018

5. 迁移学习

转移学习是指在解决一项任务时获得的知识,以便更有效地解决不同但相关的任务。
一些工作(Baker等人,2017年)表明,为一个数据集发现的体系结构可以无需很大修改就很容易地应用于具有相同图像维度的数据集。 一些工作(Zoph等人,2018年)表明,在数据点较少、分辨率较小(CIFAR-10)的数据集上发现的体系结构易于向具有更多数据和更高分辨率的数据集(Image Net)转移。 此外,在一系列不同的任务中表现良好的体系结构提供了一个有竞争力的解决方案(Wistuba和Pedapati,2019年)。
迁移学习的思路下,我们可以通过其他数据集上表现优异的架构,为当前的架构构建提供一种先验知识。

以下是作者提到的近些年在该领域研究比较好的文章。

Transfer learning with neural automl,2018

TAPAS: train-less accuracy predictor for architecture search,2019

Fast task-aware architecture inference,2019

Transferable automl by model sharing over grouped datasets,2019

6. 约束和多目标的优化

模型的准确率和性能固然重要,但如果作为使用人员,我们就还要考虑以下问题,例如模型参数的数量、浮点操作的数量以及特定于设备的统计数据,比如模型的延迟。

为了考虑这些问题,我们通常有两种处理方法。

在第一种方法中,我们将这些条件作为约束条件添加到优化问题中,以强制执行诸如更少的参数或更快的推理时间等要求。约束的确切形式和不同约束之间的权衡可以根据实际要求进行调整。即罚函数法

在第二种方法中,该问题作为一个多目标函数优化问题解决,产生一组解决方案。这将决策分为两个步骤。在第一步中,在不考虑不同目标之间的任何权衡的情况下获得一组候选人,然后在第二步中做出解决方案的决定。这种分离允许为不同的规格重新使用一组候选解决方案。即多目标优化算法(主流的话,即进化算法和代理模型)

模型压缩

在移动设备网络部署效率的推动下,模型压缩成为架构设计的一个相关目标。 在这种情况下,神经结构搜索方法试图找到修剪模型的策略,以便在参数数量方面满足预算约束,而不会牺牲很大的准确性。

以下是作者提到的近些年在模型压缩领域研究比较好的工作。

AMC: automl for model compression and acceleration on mobile devices,2018,基于强化学习

N2N learning: Network to network compression via policy gradient reinforcement learning,2018,基于强化学习

Learnable embedding space for efficient neural architecture compression. In Proceedings of the International Conference on Learning Representations,2019,基于贝叶斯优化

7.其他相关研究

最初为体系结构搜索开发的方法已经被扩展到自动化深度学习的其他方面。
例如,(贝洛等人,Neural optimizer search with reinforcement learning,2017)编码了一种用于训练深度学习模型的参数优化方法,该图结构定义了类似于经典基于梯度优化的优化的更新规则,如下图所示,更新由几个块定义。

在这里插入图片描述
一个块由两个操作数,每个操作数对应的一元函数和一个二元函数组成。具体操作参照原文。

(Ramachandran等人,Searching for activation functions,2018)使用上述设置和搜索空间结构搜索激活函数。 他们用近似策略优化学习控制器(Schulman等人, Proximal policy optimization algorithms,2017年)。
如下图就是搜索得到的一个激活函数,目前已经得到广泛应用。
在这里插入图片描述
这里的σ是个逻辑函数,详细可见原文。

(Cubuk等人,Autoaugment: Learning augmentation policies from data,2018a)定义一个类似的控制器,并对其进行近似策略优化训练,以优化图像分类的数据增强方法。下图是进行数据增强后的对比数据。
在这里插入图片描述

8.神经结构搜索方法的展望与未来应用

在自动化深度学习的更广泛背景下,神经架构搜索只处理管道的一个组件。 此外,目前神经结构搜索的大多数方法只集中在CNNs上,用于解决对象识别的任务,或RNN单元用于语言建模。 然而,其他有趣的领域已经出现,其中一些已在前面讨论。 例如,最近的许多工作涉及到在不同的数据集上使用知识来加快优化过程的想法(迁移学习)。 同样,在过去的一年中,在约束下搜索具有多个目标的体系结构以及模型压缩的自动化引起了人们的极大关注(约束,多目标,模型压缩)。 结构搜索算法与参数优化算法和激活函数等其他图形结构的对齐或数据增强搜索是令人兴奋的发展(参数优化算法,激活函数,数据增强)。
最近,在其他方面上也出现了突破,这些方面用图像数据来处理更复杂的任务,如目标检测和分割(Zoph等人, Learning transferable architectures for scalable image recognition2018年;Tan等人, Mnasnet:Platform-aware neural architecture search for mobile,2018年;Liu等人, Auto-deeplab: Hierarchical neural architecture search for semantic image segmentation,2019年a)。以及解决安全关键问题的工作,比如发现了对抗敌性攻击的架构,(Cubuk等人,Intriguing properties of adversarial examples,2018b;Sinn等人, Evolutionary search for adversarially robust neural networks,2019年)
深度学习的一般自动化仍处于起步阶段,上述许多问题目前仍未得到解决。 然而,这仍然是一个令人兴奋的领域,未来的工作肯定会突出其实际意义和有用性。

返回贝叶斯优化优秀论文总结目录

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐