进化的神经网络结构搜索方法

进化的神经网络结构搜索方法

题目:

Progressive Neural Architecture Search

Chenxi Liu, Barret Zoph, Maxim Neumann, Jonathon Shlens, Wei Hua, Li-Jia Li, Li Fei-Fei, Alan Yuille, Jonathan Huang, Kevin Murphy

Computer Vision and Pattern Recognition

To appear in ECCV 2018 as oral.

Submitted on 2 Dec 2017 (v1), last revised 26 Jul 2018 (this version, v3)

文档链接:

https://arxiv.org/pdf/1712.00559v3.pdf

代码链接:

https://github.com/tensorflow/models/tree/master/research/slim

https://github.com/tensorflow/models/tree/master/research/deeplab

https://github.com/Cadene/pretrained-models.pytorch

摘要

我们提出了一种学习卷积神经网络结构的新方法,它比目前最先进的基于强化学习和进化算法的学习方法更有效。我们的方法使用了一个顺序的基于模型的优化(SMBO)策略,在该策略中,我们按照增加复杂度的顺序搜索结构,同时学习一个代理模型来指导在结构空间中的搜索。在相同的搜索空间下的直接比较表明,我们的方法在被评估的模型数量方面比Zoph等人(2018)的RL方法效率高5倍,在总计算方面快8倍。我们用这种方法发现的结构在CIFAR-10和ImageNet上达到了最先进的分类精度。


英文原文

We propose a new method for learning the structure of convolutional neural networks (CNNs) that is more efficient than recent state-of-the-art methods based on reinforcement learning and evolutionary algorithms. Our approach uses a sequential model-based optimization (SMBO) strategy, in which we search for structures in order of increasing complexity, while simultaneously learning a surrogate model to guide the search through structure space. Direct comparison under the same search space shows that our method is up to 5 times more efficient than the RL method of Zoph et al. (2018) in terms of number of models evaluated, and 8 times faster in terms of total compute. The structures we discover in this way achieve state of the art classification accuracies on CIFAR-10 and ImageNet.


要点


引言


主动学习思想简介

目前的主动学习技术通常分为两类:进化算法(见如[28,24,35])或强化学习(见如[40,41,39,5,2])。

使用进化算法(EA)时,将每个神经网络结构编码为一个字符串,并在搜索过程中对字符串进行随机突变和重新组合;然后,在验证集上对每个字符串(模型)进行训练和评估,性能最好的模型生成子模型。

当使用增强学习(RL)时,agent执行一系列的动作,这些动作指定了模型的结构;然后对该模型进行训练,将其验证性能作为奖励返回,用于更新RNN控制器。虽然EA和RL方法都能够学习比手工设计的架构更好的网络结构,但是它们需要大量的计算资源。


前人方法综述

RL和EA是在完全指定的图结构空间中进行搜索的局部搜索方法。我们采用的另一种方法是使用启发式搜索,在这种方法中,我们以一种渐进的方式在结构的空间中搜索,从简单到复杂。

有几个先前的工作探索了这种方法。[25]使用蒙特卡罗树搜索(Monte Carlo Tree Search, MCTS),但是在搜索树的每个节点上,它使用随机选择来选择要展开哪个分支,这是非常低效的。基于序列模型的优化(SMBO)[17]通过学习一个预测模型改进了MCTS,该模型可用于决定扩展哪些节点。这种技术已经被应用到[25]的神经网络结构搜索中,但是他们使用的是平面CNN搜索空间,而不是我们基于细胞的层次空间。因此,它们产生的cnn表现不是很好。其他相关工作包括[23],他们专注于MLP而不是CNNs;他在进化算法中使用了增量方法;使用增加层数的时间表的[40];和通过语法指定的潜在因子模型的空间进行搜索的[13]。最后,[7,16]使用助推法依次生长CNNs。

其他几篇论文学习了一个替代函数来预测一个候选结构的性能,要么是零次射击(没有训练它)(见[4]),要么是在训练了它一小段时间并推断出学习曲线之后(见如[10,3])。然而,这些方法大多应用于固定大小的结构,与我们的渐进搜索方法不兼容。


本文提出的架构的搜索空间

在这一节中,我们将描述在我们的工作中使用的神经网络结构搜索空间。我们构建在[41]中提出的分层方法的基础上,在这种方法中,我们首先学习一个单元结构,然后将这个细胞(Cell)堆叠若干次,以创建最终的CNN。

进化的神经网络结构搜索方法

图1所示。左:我们的渐进神经结构搜索发现的最佳细胞结构,由5个块组成。右:我们使用类似于[41]的策略从CIFAR-10和ImageNet上的细胞构建CNNs。注意,我们学习单个细胞类型,而不是区分正常细胞和还原细胞。


实验


数据集:

我们的实验设置遵循[41]。特别是,我们在CIFAR-10[19]上进行了大部分实验。CIFAR-10有50,000张训练图像和10,000张测试图像。我们使用5000张来自训练集的图片作为验证集。所有的图片都是白色的,32 32个补丁从图片上采样到40 40。还使用了随机水平翻转。在CIFAR-10上找到一个好的模型后,我们在第5.5节通过ImageNet分类对其质量进行了评估。


实验结果:

进化的神经网络结构搜索方法

图3所示。mlp -系综预测精度。顶行:在不同的试验中,训练集上模型的真与预测的准确性。底行:从所有未见过的较大模型集合中得到的模型的真与预测精度之比。表示各单项试验的平均秩相关。


表1。斯皮尔曼秩相关系数不同的训练集上的预测,ρb,当看不见的大模型推断,ρb + 1。详情见正文。

进化的神经网络结构搜索方法


进化的神经网络结构搜索方法

图4所示。在相同的搜索空间下,比较NAS、PNAS和随机搜索的相对效率。我们在CIFAR-10验证集上绘制了5个试验的平均精度,其中M{1,5,25}是通过每种方法找到的,而不是经过训练和评估的模型的数量。每个模型训练20个epoch。误差条和彩色区域表示平均值的标准差。


结论

这项工作的主要贡献是展示我们如何通过在日益复杂的图形空间中使用渐进式搜索,结合一个学习预测函数来有效地识别最有希望探索的模型,从而加速搜索好的CNN结构。得到的模型达到了与以前工作相同的性能水平,但计算成本只有一小部分。未来的工作有许多可能的方向,包括:使用更好的代理预测器,如使用字符串内核的高斯进程;使用基于模型的早期停止,例如[3],这样我们就可以在达到E1新纪元之前停止对没有前途的模型的训练;使用暖启动,从较小的母体初始化训练较大的b+ 1大小的模型;使用贝叶斯优化,我们使用一个获取函数,如预期的改进或上置信界,来对候选模型进行排序,而不是贪婪地选择最前面的K(如[31,30]);在每一步自适应地改变模型K的数量(例如,随时间减少);速度-精度权衡的自动探索(cf.,[11]),等等。


分享到:


相關文章: