近年来,机器学习取得了显著的成功,这些成就得益于不断优化的机器学习算法,特别是深度神经网络。深度神经网络在发现和解决问题的过程中推动了自动化机器学习(AutoML)的发展。AutoML 至今一直在尝试通过组合复杂的组件来构建解决方案。一个典型例子是神经结构搜索,这是一个子领域,在这个子领域中,人们可以从复杂的层(如卷积、批标准化和 dropout)自动构建神经网络。
除了使用这些手工设计的组件,AutoML 还可以通过从零开始搜索整个算法来实现。尽管这种做法具有挑战性,因为它需要探索稀疏的搜索空间,但它也有巨大的潜在优势:它不会受限于现有的知识体系,并有可能发现新的、更优的机器学习架构。
我们可以把这种探索过程比喻为建造房子。如果一个人从零开始建造,而不是仅仅使用预制件,会有更多的灵活性和改进的空间。然而,设计房屋的过程是非常复杂的。因此,早期的研究主要集中在减少搜索空间和所需计算量的某个特定方面,例如学习规则。这个问题在近几十年内没有得到充分的关注,直到现在。
最近,我们在 ICML 2020 上发表的一篇论文展示了从零开始演化机器学习算法的可能性。我们提出了一种名为 AutoML_Zero 的方法,它从空程序开始,仅使用基本的数学运算作为构建块,利用进化算法自动找到完整的机器学习算法代码。针对小图像分类任务,我们的方法重新发现了基础的机器学习技术,如带有反向传播的两层神经网络和线性回归等。这一成果表明,自动发现新机器学习算法来解决未来更复杂问题的可行性。
进化方法是一种经典的搜索算法,自上世纪80年代以来就被证明在发现计算机程序方面非常有效。这些方法因其简单性和可扩展性而特别适用于学习算法的发现。
在我们的实验中,种群最初由空程序组成。然后,它在一个反复迭代的过程中进化,以产生越来越好的学习算法。每个周期中,两个或更多的随机模型相互竞争,最准确的模型成为父模型。父模型克隆自身产生子代,子代会发生变异。这意味着子代码会以随机的方式进行修改,比如在代码中任意插入、删除或修改一行。然后在图像分类任务中评估变异后的算法。
与之前的 AutoML 工作相比,我们的 AutoML-Zero 设置使搜索空间变得非常稀疏,大约在 (10^{12}) 个候选者中只有一个准确的算法。这是由于提供的构建块非常基础,仅包括变量赋值、加法和矩阵乘法等基本操作。尽管搜索空间如此稀疏,进化搜索仍能在合理的时间内找到解决方案,其速度比纯随机搜索快数万倍。我们将搜索分布在多台机器上,这些机器偶尔会交换算法(类似于现实生活中的迁移)。此外,我们构建了小型代理分类任务,用于评估每个子算法,并使用高度优化的代码来执行这个评估。
随着时间的推移,进化搜索逐渐发现了更复杂、更有效的技术。最终,出现了最简单的算法,它用硬编码的权重表示线性模型。随着时间的推移,该算法发明了随机梯度下降法(SGD)来学习权重,尽管梯度本身并未作为构建块提供。尽管一开始存在缺陷,但 SGD 的问题很快得到了解决,随后一系列改进应用于预测和学习算法。在我们的简单场景中,该过程发现了几个已知对研究社区有用的创新概念。最终,我们的方法成功地构建了一个模型,其性能优于相似复杂度的手工设计模型。
随着时间的推移,进化实验的进展显示,算法变得越来越复杂和准确。
通过更多的实验,我们证明了通过控制“生态环境”(即进化过程中用来评估算法适应度的任务)来引导进化搜索是可行的。例如,当我们增加数据量时,出现了带有噪声的 ReLU,这有助于正则化。或者,当我们减少训练步数时,会出现学习率衰减,从而实现更快的收敛。这类有针对性的发现非常重要:如果自动工具发明者能想出一把锤子或一根针,那可能会很有趣;但如果我们给它看一些钉子时,它会想到一把锤子,给它看一些线时,它会想到一根针,那就更有趣了。通过这样的类比,在我们的工作中,当存在大量数据(“钉子”)时,就会发现有噪声的 ReLU(“锤子”),而当存在少量训练步骤时,学习率就会下降。
我们相信这只是初步工作。我们尚未从根本上演化出新的算法,但令人鼓舞的是,演化后的算法已经超过了搜索空间中存在的简单神经网络。目前,搜索过程需要大量的计算资源。随着未来几年硬件规模的扩大和搜索方法效率的提高,搜索空间可能会变得更加丰富,搜索结果也会得到改善。随着我们对 AutoML-Zero 的进一步了解,我们对发现新的机器学习算法的前景感到兴奋。
作者介绍:
Esteban Real,主任软件工程师。Chen Liang,软件工程师,供职于 Google Research、Brain Team。
参考阅读:
https://ai.googleblog.com/2020/07/automl-zero-evolving-code-that-learns.html