开了新坑,Nas与AutoML系列,本文作为综述,主要阐述了作为深度学习领域的新秀的AutoML 和 NAS的发展现状以及未来预期
更多可见计算机视觉-Paper&Code - 知乎
原文
enas代码
Abstract
AutoML 和 NAS不需要过多的工作量,他们可以使用最暴力的方式让你的机器学习任务达到非常高的准确率。既简单又有效率。那么 AutoML 和 NAS 是如何起作用的呢
Neural Architecture Search
神经网络架构搜索,简称 NAS。开发一个神经网络模型往往需要大量的工程架构方面的设计。有时候可以通过迁移学习完成一个任务,但是如果想要有更好的性能,最好针对特定的任务场景以及数据集设计自己的网络结构。
但是设计网络架构需要非常专业的技能,为了解决这个问题,NAS 被提出来了,这是一种可以搜索最好的神经网络结构的算法。大致的算法流程如下:
- 首先定义一个 Building Blocks 的集合,集合中元素代表的是可能用于神经网络搜索的基本单元。比如说 NASNet 中提出了以下 Building Block。
在 NAS 算法中,控制器 RNN 会从这些 Building Blocks 中采样,将他们拼接起来构建一个端到端的网络架构。这种结构通常与 SOTA 网络的架构相同,如 ResNet、DenseNet,但是使用的模块组合和配置有较大的区别。
对新产生的网络架构进行训练,使其收敛,并在验证集上进行测试得到准确率。产生的准确率可以用于更新控制器,以便于控制器能够生成更好的网络结构。控制器的权重使用的是策略梯度进行更新的。整个端到端的设置如下图所示:
简单来说,让算法从不同的 block 之中采样,然后将这些模块组合起来构建新的网络。然后训练并测试该网络,根据获得的结果,调整使用的 block 模块以及各个 block 之间的连接方式。
这种算法的集大成者Learning Transferable Architectures for Scalable Image Recognition便是采取了如上所述的方法,但是他在数据集和网络结构上具有非常大的局限性。NAS 设计的网络一般都是在远较小的数据集上训练和测试的。因为在类 ImageNet 这样大型数据集上训练花费时间代价很大。并且在深度学习时代中,在比较小但是结构相似的数据集上表现较好的网络,在更大更复杂的数据集上也应该表现更好。
搜索空间的局限。NAS 被设计用来构建与 SOTA 相似的网络架构。对于图像分类任务来说,网络构建需要重复的模块,然后逐步进行下采样,如下图所示。
NAS 搜出的网络主要优点就是是这些块的连接方式。下图是在 ImageNet 中搜索得到的最好的 block 结构。可以发现这几个都包含了很多随机的混合操作,包括可分离卷积。
搜索架构方面
NASNet 论文打开了深度学习研究的新方向。不幸的是,除了财大气粗的Google之外大家都很难实现。Google使用了 450 个 GPU,花费了 3 天多时间的才找到一个优秀的网络架构。因此,NAS 方面很多的研究都集中于如何提高搜索效率上。
Progressive Neural Architecture Search(PNAS) 提出使用一种叫做基于顺序模型的优化策略 (SMBO: Sequiential Model-Based Optimisation)。与 NASNet 使用的强化学习方法不同,SMBO 不是随机的从 Block 集合中抓取和尝试,而是对 block 进行测试,并按照复杂性增加的顺序搜索网络架构。这种方法虽然不会缩小搜索空间,但是能让搜索以更智能的方式完成。
SMBO 简单来说是:从复杂度降低的方案开始,而不是立即尝试所有可能。PNAS 这种方法的效率是 NAS 的 8 倍。
Efficient Nerual Architecture Search(ENAS) 的提出大大减少了nas过程的计算量。作者假设 NAS 的计算瓶颈在于当前NAS方法需要对每个模型进行收敛的训练,测试其准确率,然后就丢掉该模型训练过的权重以及所有信息。
但是在研究和实践中已经反复证明,接受过类似训练任务的网络具有相似的权重,迁移学习有助于在短时间内实现更高的精度。ENAS 算法强制让所有模型共享权重,而不是去从头训练从头收敛。 因此,每次训练新的模型的时候,实际上都进行了迁移学习,这样收敛速度会非常快。
下表显示了使用单个 1080Ti 进行训练,使用 ENAS 的效率要高得多。
AutoML
AutoML 作为深度学习的新方法,无需设计复杂的深度网络,只需运行内置的 NAS 算法。例如Google Cloud AutoML 只需上传数据,Google 的 NAS 算法即可为你提供快速简便的网络架构。AutoML 做法是简单地抽象出深度学习的所有复杂部分。用户只需要提供数据。剩下的让 AutoML 来处理。这样一来,深度学习就会像其他工具一样,成为插件工具。
Summary
使用 ENAS 经过一天的训练就可以得到相当不错的结果。但是我们的搜索空间仍然非常有限,目前的 NAS 算法仍然使用手工设计的结构和构建块,只是将它们以不同的方式组合在一起而已。并且相对于普通训练,NAS算法在训练以及推理部分所需要的资源以及复杂度还是远远不足以支持落地。后续也会持续关注NAS领域发展