什么是神经架构搜索?用于深度学习的AutoML

141 阅读6分钟

神经架构搜索有望加快寻找神经网络架构的过程,这些架构将为特定的数据集产生良好的模型。

神经架构搜索是为神经网络自动寻找一个或多个架构的任务,这些架构将在相对较短的时间内为给定的数据集产生具有良好结果(低损失)的模型。神经结构搜索目前是一个新兴的领域。目前有很多研究在进行,有很多不同的方法来完成这个任务,而且一般来说没有一个最好的方法--甚至对于一个专门的问题,如图像中的物体识别,也没有一个最佳方法。

神经结构搜索是AutoML的一个方面,同时还有特征工程、转移学习和超参数优化。这可能是目前正在积极研究的最难的机器学习问题;甚至对神经架构搜索方法的评估也很难。神经架构搜索的研究也可能是昂贵和耗时的。搜索和训练时间的衡量标准通常是以GPU-天为单位,有时是成千上万的GPU-天。

改进神经架构搜索的动机是相当明显的。神经网络模型的大多数进展,例如在图像分类和语言翻译方面,都需要对神经网络架构进行大量手工调整,这既费时又容易出错。即使与公共云上的高端GPU的成本相比,数据科学家的成本也非常高,而且他们的可用性往往很低。

评估神经架构搜索

正如多位作者(例如Lindauer和HutterYang等人,以及Li和Talwalkar)所观察到的,许多神经架构搜索(NAS)的研究是不可重复的,原因有几个。此外,许多神经结构搜索算法要么不能胜过随机搜索(应用早期终止标准),要么从未与有用的基线进行过比较。

Yang等人的研究表明,许多神经结构搜索技术很难明显地超越随机采样的平均结构基线。(他们把他们的论文称为 "NAS评估是令人沮丧的困难。")他们还提供了一个资源库,其中包括用于在几个不同的数据集上评估神经架构搜索方法的代码,以及用于用不同协议增强架构的代码。

Lindauer和Hutter根据他们的文章提出了一个NAS最佳实践检查表(也是上面提到的)。

发布代码的最佳实践

对于你报告的所有实验,检查你是否发布了:

用于评估最终架构的训练管道的代码
_搜索空间的代码
_用于最终评估管道的超参数,以及随机种子
_你的NAS方法的代码
_你NAS方法的超参数,以及随机种子

请注意,满足前三项的最简单方法是使用现有的NAS基准,而不是改变它们或引入新的基准。

比较NAS方法的最佳做法

_对于你比较的所有NAS方法,你是否使用了完全相同的NAS基准,包括相同的数据集(具有相同的训练-测试分割)、搜索空间和训练架构的代码以及该代码的超参数?
你是否控制了混杂因素(不同的硬件、DL库的版本、不同方法的运行时间)?
_ 你是否进行了消融研究?
_ 你是否对被比较的方法使用了相同的评估协议?
_你是否在一段时间内比较了性能?
_你是否与随机搜索进行了比较?
_ 你是否对你的实验进行了多次运行并报告了种子?
_ 你是否使用表格或代用基准进行深入评估?

报告重要细节的最佳做法

_ 你是否报告了你是如何调整超参数的,以及这需要多少时间和资源?
_ 你是否报告了整个端到端NAS方法的时间(而不是,例如,只有搜索阶段的时间)?
_ 你是否报告了你的实验设置的所有细节?

值得讨论的是第二组标准中提到的 "消融研究 "一词。消融研究最初指的是通过手术切除身体组织。当应用于大脑时,消融研究(一般由严重的医疗状况引起,手术后进行研究)有助于确定大脑部分的功能。

在神经网络研究中,消融意味着从神经网络中移除特征以确定其重要性。在NAS研究中,它指的是再次从搜索管道和训练技术中移除特征,包括隐藏成分,以确定其重要性。

神经架构搜索方法

Elsken等人(2018)对神经架构搜索方法做了调查,并从搜索空间、搜索策略和性能估计策略等方面进行了分类。搜索空间可以是整个架构,逐层搜索(宏观搜索),也可以限制在组装预先定义的单元(单元搜索)。由细胞构建的架构使用的搜索空间大幅减少;Zoph等人(2018)估计速度提高了7倍。

神经架构的搜索策略包括随机搜索、贝叶斯优化、进化方法、强化学习和基于梯度的方法。所有这些方法都有成功的迹象,但没有一个真正脱颖而出。

估计神经网络性能的最简单方法是在数据上训练和验证网络。不幸的是,这可能会导致对神经结构搜索的计算需求达到数千GPU天的量级。减少计算的方法包括低保真度的估计(较少的训练历时、较少的数据和降级的模型);学习曲线外推(基于几个历时);暖启动训练(通过从父模型复制初始化权重);以及带有权重共享的单次模型(子图使用单次模型的权重)。所有这些方法都可以将训练时间减少到几个GPU天,而不是几千个GPU天。然而,这些近似方法引入的偏差还没有得到很好的理解。

微软的Petridish项目

微软研究院声称已经开发了一种新的神经架构搜索方法,该方法在现有的网络层中增加了快捷连接,并使用了权重共享。增加的快捷连接可以有效地对增强的层进行梯度提升。他们把这称为Petridish项目。

据称,这种方法将训练时间减少到几个GPU天,而不是几千个GPU天,并支持暖启动训练。根据研究人员的说法,该方法在单元搜索和宏观搜索上都有很好的效果。

引用的实验结果对CIFAR-10图像数据集来说相当不错,但对Penn Treebank语言数据集来说没有什么特别之处。虽然Petridish项目单独听起来很有趣,但如果不与所讨论的其他方法进行详细比较,就不清楚它与我们所讨论的其他加速方法相比,是对神经结构搜索的重大改进,还是只是到达同一地点的另一种方法。