利用“可进化”的 AutoML,谷歌提出新型神经网络架构搜索方法

从五亿年前非常简单的蠕虫大脑到今天各种各样的现代结构,大脑已经经历了漫长的演化过程。人类的大脑可以完成各种各样的活动,其中许多活动是很容易就可以完成的——例如,告诉我们视觉场景中是否有动物或建筑物。

为了进行这样的活动,人工神经网络需要被专家历经多年研究精心设计,并且通常只能完成一项特定的任务,比如找出照片中的内容,无论是找到变异的基因,还是帮助诊断疾病。理想情况下,人们希望有一个自动化的方法来为任何给定的任务生成正确的架构。

近日,谷歌的研究人员们在其官方博客发布了一种新的神经网络架构搜索方法,让AI 朝着这个目标又迈进一步。

以下为官方博文介绍:

生成这些架构的一种方法是使用进化算法。传统的拓扑神经进化研究(Stanley和Miikkulainen,2002)为我们今天大规模应用这些算法奠定了基础。目前许多团体正在研究这个问题,包括OpenAI、Uber实验室、Sentient Labs和DeepMind。当然,Google Brain团队也一直在研究AutoML。除了基于学习的方法(如强化学习)之外,我们还想知道是否可以利用我们的计算资源以前所未有的规模来程序化地发展图像分类器。我们能否在仅有很少专家参与的情况下找到解决办法?今天人工进化的神经网络能有多好?我们通过两篇论文来解决这些问题。

在《图像分类器的大规模进化》(Large-Scale Evolution of Image Classifiers,E Real等,2017)中,我们用简单的构建模块和初始条件构建了一个进化过程。这样做的目的是把人类解放出来,让进化算法来完成大规模构建网络架构的过程。从非常简单的网络开始,这个过程生成的分类器与当时手工设计的模型相当。这是令人鼓舞的,因为许多应用可能仅需要很少的用户参与。例如,一些用户可能需要更好的模型,但可能没有时间成为机器学习专家。接下来自然要考虑的一个问题是,如果把手工设计和进化算法相结合,是否能比单独的任何一种方法都做得更好。因此,在我们最近的论文《图像分类器架构搜索的正则化进化》(Regularized Evolution for Image Classifier Architecture Search,E Real等,2018)中,我们通过提供复杂的构建块和良好的初始条件参与了这一过程(见下文)。

此外,我们使用Google的新TPUv2芯片来提高计算能力。通过把现代硬件、专家知识和进化算法相结合,我们在两种流行的图像分类基准CIFAR-10和ImageNet上产生了最先进的模型。

一种简单的方法

下面是我们第一篇论文中的一个实验的例子。在下图中,每个点都是在通常用于训练图像分类器的CIFAR-10数据集上训练的神经网络。最初,该群体由一千个相同的简单“种子”(seed)模型组成(没有隐藏层)。从简单模型开始是很重要的——如果我们从一个包含专家知识的初始条件的高质量模型开始,那么最终得到一个高质量的模型会更容易。一旦从简单的模型开始,提高模型质量过程就会逐步进行。在每一步,我们随机选择一对神经网络,其中精度较高的网络为亲代网络,并基于亲代网络复制和变异生成一个子网络。然后这个子网络将其添加到种群中,而另一个质量较低的网络则消失。所有其他网络在这一步骤中保持不变。随着许多这类步骤的相继实施,这些网络将得以进化。

图丨进化实验的进展。每个点代表群体中的一个个体。这四个图表展示了这个算法的架构。它们对应于最好的个体(最右侧;通过验证的准确程度选出)和它的三个祖先。

我们故意将第一篇文章中的突变设置的比较简单:随机删除一个卷积,在任意层之间添加一个跳跃式传递(skip connection),或者改变学习速度等等。通过这种方式,我们的研究显示了进化算法的潜力与搜索空间的质量成反比。例如,如果我们使用一个单一的突变,将其中一个种子网络变为Inception-ResNet分类器,我们就会误认为该算法找到了一个好的答案。

然而,在这种情况下,我们所能做的只是将最终答案硬编码成一个复杂的突变并操纵结果。相反,如果我们坚持简单的突变,上述情况不可能发生,进化算法才真正起到了作用。在图中的实验中,简单的突变和选择过程使得网络随着时间的推移而改进,并达到了较高的测试精度,尽管在此过程中从未出现测试集。在该论文中,网络还可以继承其亲代网络的权重。因此,除了促进架构进化以外,群体可以训练其网络,同时探索初始条件和学习率调度(learning-rate schedule)的搜索空间。因此,该过程获得了完全训练的模型,且该模型具备优化过的超参数。实验开始后不需要专家投入。

在上述情况中,即使我们通过简单的初始架构和直观的突变来最小化研究人员的参与程度,但仍有大量的专家知识(如卷积、ReLU和批规范化层)进入了这些架构的构建模块中。我们正在对由这些模块构成架构的进行进化:“架构”一词并非偶然,这类似于用高质量的砖块建造房屋。

进化算法与人工设计相结合

在完成了第一篇论文之后,我们希望通过给算法提供更少的选择来减少搜索空间、降低处理难度。与前文“建造房屋”的类比相似,我们从搜索空间中删除了所有可能造成大错误的方法,比如建房时将墙壁置于屋顶上方。与神经网络结构搜索相似,把网络的大尺度结构固定住可以帮助我们解决算法问题。那具体怎么做呢?Zoph等(2017)介绍的类inception模块在架构搜索中的作用非常强大。他们的想法是构建重复模块(cells)的深度堆叠结构。这个堆叠结构是固定的,但其中各个模块的结构可以改变。

图丨Zoph等(2017)介绍的模块。左侧是整个神经网络的外部结构,它通过一堆重复的模块自下而上地解析输入数据。右侧是模块的内部结构,其目标是找到一个能产生精确网络的模块。

在我们2018年发表的第二篇论文《图像分类器架构搜索的正则化进化》中,我们给出了将进化算法应用于上述搜索空间的结果。突变通过随机重新连接输入(右侧图上的箭头)或随机替换操作(例如,它们可以用任意可选操作替换图中的最大池操作“max 3x3”)来修改模块。这些突变仍然相对简单,但初始条件却并不简单:群体中初始化的模型必须遵从 cell 外部堆叠(由专家设计)。即使这些种子模型中的模块是随机的,我们也不再从简单的模型开始,这使得我们最终更容易获得高质量的模型。如果进化算法真的作出了有意义的贡献,最终的网络应该显著优于我们在这个搜索空间中构建的已知网络。我们的论文表明,进化算法确实可以找到最优的模型,且其效果不低于人工设计。

受控比较

尽管突变/选择进化过程并不复杂,但也许更直接的方法(如随机搜索)也可以做到这一点。其他选择虽然并不简单,但也存在于既有文献中(如强化学习)。因此,我们的第二篇论文的主要目的是进行技术之间的受控比较。

图丨进化算法,强化学习和随机搜索三种方式分别执行架构搜索时的结果比较。该实验是在CIFAR-10数据集上进行的,条件与Zoph等(2017)相同,该搜索空间最初用于强化学习。

上图比较了进化算法,强化学习和随机搜索。在左侧,横轴是每种算法的实验次数,纵轴是实验中的平均精确度:结果显示,在起初实验次数较少时,进化学习的效果优于强化学习。这是一个重要发现,因为在计算能力较低时,实验可能不得不提前停止。此外,突变对数据集或搜索空间的变化非常稳健。总的来说,这种受控比较的目标是为研究界提供消耗大量计算能力的实验结果。在此过程中,我们希望通过提供不同搜索算法之间关系的案例研究来促进每个人在架构搜索上的研究。值得注意的是,上图显示,使用更少的浮点运算时,使用进化算法的最终模型可以达到非常高的精度。

我们在第二篇论文中使用的进化算法的重要特征之一是正则化形式:不是删掉效果最差的神经网络,而是删除最老的一个——无论这个网络有多好。这提高了正在优化的任务变化的稳健性,并最终趋于产生更准确的网络。其中一个原因可能是因为我们不允许权重继承,所有的网络都必须从头开始训练。因此,这种正规化形式将选择在重新训练时仍然保持良好的网络。换句话说,因为训练过程中的噪声使得相同的架构也可能会得到不同的准确度值,所以一个模型显得准确可能只是偶然,只有在长期中仍保持准确的模型才能被保留下来。在这种思路下,我们选择重新训练良好的网络。更多有关细节可以在论文中找到。

我们最先进的模型被命名为AmoebaNets,这是AutoML团队努力的最新成果之一。这些实验耗费了大量的计算——我们使用数百个GPU / TPU持续计算了数天。就像一台现代计算机可以胜过数千年前的机器一样,我们希望将来这些实验能够走进家庭。

-End-

编辑:LXQ

参考:

https://research.googleblog.com/2018/03/using-evolutionary-automl-to-discover.html?m=1

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180318B0R0VX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券