Source: 使用进化 AutoML 发现神经网络架构 from 谷歌开发者-中文博客
发布人:Google Brain 团队高级软件工程师 Esteban Real
从 5 亿年前 非常简单的蠕虫大脑到今天的各种现代化结构,大脑经过了漫长时间的进化。人类大脑可以完成各种活动,其中许多活动都可以毫不费力地完成,例如说出视觉场景是否包含动物或建筑物对我们来说非常简单。要执行此类活动, 人工神经网络 则需要专家通过多年的艰苦研究进行精心设计,并且通常只能完成一种特定的任务,例如 找出照片的内容 、 识别遗传突变 ,以及 帮助诊断疾病 。理想情况下,我们希望能用一种自动化方式为任何给定任务生成合适的架构。
生成这些架构的一种方式是使用进化算法。传统的拓扑神经进化研究(例如 Stanley 和 Miikkulainen 在 2002 年发表的这篇论文 )奠定了基础,让我们今天可以大规模应用这些算法,许多团队都在研究这个课题,包括 OpenAI 、 Uber Labs 、 Sentient Labs 和 DeepMind 。当然, Google Brain 团队 也一直在思考 AutoML 。除了基于学习的方法(例如 强化学习 )外,我们还想知道能否使用我们的计算资源通过编程方式以史无前例的规模 进化 图像分类器。我们可以在尽可能不需要专家参与的情况下实现解决方案吗?今天的人工进化神经网络能有多好的表现呢?我们通过两篇论文解决这些问题。
在 ICML 2017 上发表的 Large-Scale Evolution of Image Classifiers 中,我们使用简单的构建块和普通的初始条件设置了一个进化过程。想法是我们退到背后,让大规模进化执行构建架构的工作。从非常简单的网络开始,这个过程发现分类器与当时手动设计的模型相当。这是令人鼓舞的,因为许多应用可能需要很少的用户参与。例如,一些用户可能需要更好的模型,但可能没有时间深入学习相关知识,成为机器学习专家。接下来自然而然需要考虑的一个问题是,手动设计和进化的组合能否比单独使用任何一种方式效果更好。因此,在最近的论文 Regularized Evolution for Image Classifier Architecture Search (2018) 中,我们通过提供复杂的构建块和良好的初始条件(下文将讨论)参与了这个过程。而且,我们还使用 Google 的新 TPUv2 芯片 扩大了计算范围。现代化硬件、专家知识和进化的这个组合共同在 CIFAR-10 和 ImageNet 上产生了最先进的模型,CIFAR-10 和 ImageNet 是两个热门的图像分类基准。
简单的方式
下面是我们第一篇论文中某个实验的示例。在下图中,每个点都是一个在 CIFAR-10 数据集(常用于训练图像分类器)上训练的神经网络。最初,群体包含 1000 个相同的简单 种子 模型(没有隐藏层)。从简单的种子模型开始非常重要 – 如果我们从初始条件包含专家知识的优质模型开始,最后获得优质模型也就会更容易。使用简单的模型做种后,过程逐步推进。每一步都会随机选择一对神经网络。准确性更高的网络选作 父级 ,并通过复制和突变生成 子级 ,随后子级将添加到群体中,而另一个神经网络则会 死亡 。所有其他网络在此期间保持不变。连续应用多个这样的步骤后,群体发生进化。
进化实验的过程。每个点都表示群体中的一个神经网络。四个图是所发现架构的示例。这些图对应于最好的网络(最右侧;通过验证准确性选择)和它的三个祖先。 |
我们第一篇论文中的突变故意设置得非常简单:随机移除卷积,在任意层之间添加一个跳过连接,或者更改学习速率,等等。这样,结果将显示进化算法的潜力,而不是搜索空间的质量。例如,如果我们在某个步骤中使用可以将一个种子网络转变成 Inception-ResNet 分类器的突变,我们将错误得出算法找到了一个好答案的结论。不过,即使我们使用了这样的突变,我们做的所有工作也只会是将最终答案硬编码成一个复杂突变,对结果进行装配。如果我们坚持使用简单突变,这种情况就不会发生,进化也将真正完成。在图中所示的实验中, 简单 突变和选择过程使网络随着时间的延长而改进并达到较高的测试准确性,即使在此过程期间从未看到过测试集。在这篇论文中,网络还可以继承父级的权重。因此,除了进化架构外,群体在训练网络的同时还探索了初始条件的搜索空间和学习速率调度。因此,过程产生了具有优化的超参数的完全训练模型。实验开始后不需要任何专家输入。
总之,即使我们通过简单的初始架构和直观的突变尽可能减少了研究人员的参与,组成架构的构建块也蕴藏着大量的专家知识。这些知识包括重要的发明,例如卷积、ReLU 和批归一化层。我们进化了由这些组件组成的 架构 。“架构”这一术语不是随便选择的:这个过程类似于使用优质砖块建房子。
组合使用进化和手动设计
在第一篇论文后,我们希望通过减小算法的选择范围来缩小搜索空间,使其更易于管理。我们从搜索空间中移除了所有可能导致大规模错误的方式,类似于盖房子,我们去除了将墙放在屋顶上的可能性。与神经网络架构搜索类似,通过修复网络的大规模结构,我们可以帮助实现算法。这要怎么做呢? Zoph et al. (2017) 中为架构搜索引入的初始模块被证明非常强大。他们的想法是获得一个由重复模块(称为 细胞 )组成的深度 堆栈 。堆栈是固定的,但各个模块的架构可以发生变化。
Zoph et al. (2017) 中引入的构建块。左图是整个神经网络的外层结构,它通过一个由重复细胞组成的堆栈从下到上解析输入数据。右图是细胞的内部结构。目标是找到一个可以产生准确网络的细胞。 |
在第二篇论文 Regularized Evolution for Image Classifier Architecture Search (2018) 中,我们展示了将进化算法应用到上述搜索空间的结果。突变通过随机重新连接输入(图中右图上的箭头)或随机替换运算(例如,它们可以使用任意替代运算替换图中的“max 3×3”(一种最大值池化运算))的方式修改细胞。这些突变仍相对简单,但是初始条件不简单:群体现在使用模型进行初始化,这些模型必须符合由专家设计的细胞外部堆栈。即使这些种子模型中的细胞是随机的,但我们不再从简单模型开始,这就使最终获得优质模型变得更容易。如果进化算法的贡献有意义,最终网络应明显优于我们已经知道可以在这个搜索空间中构建的网络。我们的论文显示,进化确实可以找到与手动设计相当或者更优的最先进网络。
控制对比
即使突变/选择进化过程不复杂,也许一种更直接的方式(例如随机搜索)可以直接做到这一点。其他替代过程虽然不简单,但也存在于文献(例如,强化学习)中。因此,我们第二篇论文的主要目的是对各种技术进行控制对比。
用于架构搜索的进化、强化学习和随机搜索的对比。这些实验使用 Zoph et al. (2017) 介绍的相同条件在 CIFAR-10 数据集上完成,其中,搜索空间最初用于强化学习。 |
上图比较了进化、强化学习和随机搜索。左侧的每一条曲线都表示实验的一个过程,从中我们可以看到,进化在搜索早期要比强化学习快。这非常重要,因为计算能力较低,实验可能不得不提前停止。此外,进化对数据集或搜索空间中的变化表现出非常高的稳定性。总的来说,此控制对比的目标是向研究社区提供高计算开销实验的结果。在此过程中,我们希望通过提供不同搜索算法间关系的案例研究推动每个人的架构搜索。例如,上图显示通过进化获得的最终模型既可以达到非常高的准确率,又能使用更少的浮点运算。
我们在第二篇论文中使用的进化算法的一个重要特征是某种 正则化 :不管最老的神经网络有多好,我们都会将它们移除,而不是让最差的神经网络死亡。这提升了针对正在优化的任务中变化的稳定性,并且最终往往会生成更准确的网络。原因之一可能是,由于我们不允许权重继承,所有网络都必须从头训练。因此,这种正则化选择了在重新训练后仍然保持良好状态的网络。换句话说,由于一个模型可能在偶然的情况下变得更准确,训练过程中的噪声意味着即使是相同的架构也可能得到不同的准确性值,只有经过几代后仍能保持准确的架构才能长期存活下来,让重新训练后保持良好状态的网络有被再次选择的机会。可以在 论文 中找到此猜想的更多细节。
我们进化的最先进模型的昵称为 AmoebaNet ,它们是我们 AutoML 工作的最新成果之一。所有这些实验都进行了大量计算 – 我们使用了数百个 GPU/TPU,并且花了数天时间。就像一台现代的计算机可以胜过成千上万台几十年前的旧机器一样,我们希望这些实验未来能够家喻户晓。我们在这里只是希望帮助大家对这个未来有一个简单的了解。
致谢
我们想要感谢 Alok Aggarwal、Yanping Huang、Andrew Selle、Sherry Moore、Saurabh Saxena、Yutaka Leon Suematsu、Jie Tan、Alex Kurakin、Quoc Le、Barret Zoph、Jon Shlens、Vijay Vasudevan、Vincent Vanhoucke、Megan Kacholia、Jeff Dean 和 Google Brain 团队 的其他成员,他们的协作让这项工作成为现实。 <!—->
除非特别声明,此文章内容采用 知识共享署名 3.0 许可,代码示例采用 Apache 2.0 许可。更多细节请查看我们的 服务条款 。