Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

参与魔王 杜伟 小舟

谷歌AutoML新进展,进化算法加持,仅用数学运算自动找出ML算法

仅使用基础数学运算就能自动搜索机器学习算法?谷歌 Quoc V. Le 等人提出了 AutoML-Zero 方法。

AutoML-Zero 旨在通过从空程序或随机程序开始,仅使用基础数学运算,来自动发现能够解决机器学习任务的计算机程序。其目标是同时搜索 ML 算法的所有属性,包括模型结构和学习策略,同时将人类偏见最小化。

近来,机器学习(ML)取得了显著的成功,这要归功于深度神经网络等 ML 算法。与此同时,这一领域研究中遇到的困难又催生了 AutoML,AutoML 旨在实现 ML 算法的自动化设计。

目前,AutoML 主要通过结合复杂的手动设计组件来开发解决方案。神经架构搜索就是一个典型的示例,在这个子域中,研究人员基于复杂层(如卷积、批归一化和 dropout)来自动构建神经网络。

在 AutoML 中使用这些手动设计组件的另一种方法是从零开始搜索完整的算法。这种方法具有一定的难度,因为它需要探索大型且稀疏的搜索空间。但同时,这种方法也具有巨大的潜在益处,它不会偏向于我们已经了解的东西,并且有可能发现新的、更好的 ML 架构。

从零开始学习算法的早期研究主要聚焦算法的一个方面(如学习规则),以减少搜索空间和计算量。但自 20 世纪 90 年代后这类研究逐渐冷门,直到现在才重新得到重视。

2018 年 3 月,谷歌大脑团队即进行相关研究,使用进化的 AutoML 来发现神经网络架构。如今,谷歌将这项研究进一步扩展,证明从零开始进化 ML 算法是有可能的。相关研究被 ICML 2020 接收,这项研究出自谷歌大脑团队 Quoc V. Le 等学者之手。

  • 论文链接:https://arxiv.org/pdf/2003.03384.pdf

  • GitHub 项目地址:https://github.com/google-research/google-research/tree/master/automl_zero#automl-zero


在这项研究中,谷歌提出了新方法 AutoML-Zero,该方法从空程序(empty program)开始,仅使用基本的数学运算作为构造块,使用进化方法来自动找出完整 ML 算法的代码。

在一些小的图像分类问题上,AutoML-Zero 方法重新发现了一些基本的 ML 技巧,如具备反向传播的双层神经网络和线性回归等,而这些是之前的研究人员经过数年时间才发现的。

这一结果表明,自动发现更新颖的 ML 算法以解决更棘手的问题,这一想法在未来是可行的。

接下来,我们来看 AutoML-Zero 方法的具体实现原理。

从零开始进化学习算法

谷歌使用经典进化方法的变体「正则化进化搜索方法」来搜索算法空间。这些方法被证明在发现计算机程序方面很有效,其简洁性和可扩展性使得它们非常适合发现学习算法。

正则化进化搜索方法中的 cycle。

在这项研究中,谷歌团队使用空程序对群体进行初始化,然后不断重复循环来生成更好的学习算法。

在每一次循环中,两个(或更多)随机模型展开竞争,最准确的模型成为「parent」。之后 parent 模型复制自己得到变异了的子模型,即子模型的代码以随机形式进行了修改,例如任意插入、移除或修改一行代码。

接下来,研究人员在图像分类任务上评估变异后的算法。

整个过程如下图所示:

使用空程序对群体进行初始化。经过多代后,得到进化后的群体。其中两个算法进行竞争,最准确的一个获胜并生成子模型。经过多次迭代后,最终的群体包含高度准确的分类器。

探索有难度的搜索空间

与之前的 AutoML 工作不同,AutoML-Zero 的搜索空间非常稀疏:准确算法的比例大约是 1:1012。原因在于算法构造块的细粒度,它仅包含基础运算,如变量赋值、加和矩阵相乘。在这样的环境下,随机搜索无法在合理时间内找到解,然而进化的速度提升了数万倍。

谷歌研究者将搜索分配到多个机器上,并构建了多个小型分类任务以评估每个子算法。此类评估使用高度优化的代码执行。

尽管搜索空间稀疏,但随着时间的推移,进化搜索也能发现更复杂和有效的技术。

最开始进化搜索发现的是最简单的算法——具备硬编码权重的线性模型。经过一段时间后,随机梯度下降(SGD)被创造出来学习权重,尽管梯度本身还没有作为构造块。一开始 SGD 存在一些缺陷,但它很快就进行了迭代修复,并开始了对预测和学习算法的一系列改进。

在谷歌的实验案例中,这一搜索过程发现了一些已有的有用概念。最后,该方法构建的模型优于具有类似复杂性的手动设计模型。

进化实验的流程。从左到右按时间顺序,谷歌研究者发现算法变得越来越复杂,也越来越准确。

进化后的算法

上图描述了由该方法生成的最佳进化算法。最终得到的算法包含了多项技术,如将噪声注入作为数据增强方式、双线性模型、梯度归一化和加权平均等。对基线的改进也可以迁移到搜索中未用到的数据集。

谷歌在论文中介绍了进化后代码的不同行对这些技术的实现,并通过控制变量研究验证了它们的价值。

通过更多的实验,研究者发现,控制进化过程评估算法适用性的任务能够指导进化搜索。

例如,当数据量减少时,noisy ReLU 就会出现。当训练步骤减少时,学习率有所衰减,从而加快收敛速度。


这类有针对性的发现很重要。自动发明工具的机器造出锤子或针是件很有趣的事,但是如果它能在你展示钉子后造出锤子,展示线后造出针,这不是更有趣吗?

这就像刚才提到的,当数据量较少时(「钉子」),noisy ReLU 出现(「锤子」);当训练步骤减少时(「线」),学习率出现下降(「针」)。

结论

谷歌这项研究还比较初级,尚未进化出新的算法。但是进化后得到的算法能够超越搜索空间中存在的简单神经网络,这一点已经足够振奋人心。目前,搜索进程需要大量计算。未来几年,随着硬件设备的发展,搜索方法变得更加高效,搜索结果或许会有所改进。

原文链接:https://ai.googleblog.com/2020/07/automl-zero-evolving-code-that-learns.html

理论谷歌AutoML
相关数据
线性回归技术

在现实世界中,存在着大量这样的情况:两个变量例如X和Y有一些依赖关系。由X可以部分地决定Y的值,但这种决定往往不很确切。常常用来说明这种依赖关系的最简单、直观的例子是体重与身高,用Y表示他的体重。众所周知,一般说来,当X大时,Y也倾向于大,但由X不能严格地决定Y。又如,城市生活用电量Y与气温X有很大的关系。在夏天气温很高或冬天气温很低时,由于室内空调、冰箱等家用电器的使用,可能用电就高,相反,在春秋季节气温不高也不低,用电量就可能少。但我们不能由气温X准确地决定用电量Y。类似的例子还很多,变量之间的这种关系称为“相关关系”,回归模型就是研究相关关系的一个有力工具。

随机梯度下降技术

梯度下降(Gradient Descent)是遵循成本函数的梯度来最小化一个函数的过程。这个过程涉及到对成本形式以及其衍生形式的认知,使得我们可以从已知的给定点朝既定方向移动。比如向下朝最小值移动。 在机器学习中,我们可以利用随机梯度下降的方法来最小化训练模型中的误差,即每次迭代时完成一次评估和更新。 这种优化算法的工作原理是模型每看到一个训练实例,就对其作出预测,并重复迭代该过程到一定的次数。这个流程可以用于找出能导致训练数据最小误差的模型的系数。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

随机搜索技术

批归一化技术

批归一化(Batch Normalization,BN)由谷歌于2015年提出,是一个深度神经网络训练的技巧,它不仅可以加快模型的收敛速度,还能在一定程度上缓解深层网络中的“梯度弥散”问题,从而使得训练深层网络模型更加容易和稳定。目前BN已经成为几乎所有卷积神经网络的标配技巧了。从字面意思看来Batch Normalization(简称BN)就是对每一批数据进行归一化。

推荐文章
暂无评论
暂无评论~