Press "Enter" to skip to content

自动机器学习(AutoML)的困境

基础设施工程师的视角

Photo by Fabrizio Conti on Unsplash

自动机器学习(AutoML)在过去几年一直是一个热门话题。即使有着取代人类机器学习专家的雄心壮志,但长期以来并没有看到太多的采用,对于AutoML的期望正在迅速下降,这严格遵循了Gartner的曲线。

AutoML在Gartner曲线上的位置(作者提供的图像)

在这一点上,我们需要了解AutoML的当前状态,并找出明天的发展方向。我是一名开发了两个AutoML库AutoKeras和KerasTuner的软件工程师。在本文中,我将帮助您回顾AutoML是什么,以及阻止AutoML大规模采用的缺失环节。

什么是AutoML?

想象一下,一个对机器学习了解有限的人面临一个现实世界的图像分类问题。他们可以清楚地定义问题,并且有可用的训练数据。在这种情况下,AutoML可以帮助构建训练好的机器学习模型。

从输入和输出的角度来看,AutoML执行以下操作。

从输入和输出角度看AutoML(作者提供的图像)

它接收问题定义和训练数据,并输出一个经过训练的机器学习模型,可以直接部署。例如,对于一个图像分类任务,它接收训练图像数据集作为输入,并输出一个经过训练的图像分类模型。

AutoML试图自动化的步骤可能包括数据预处理、特征工程、模型选择、超参数调优、神经网络架构搜索、模型训练、在测试数据上进行推理和数据后处理。

总而言之,自动化机器学习(AutoML)试图通过以自动化的方式提供端到端解决方案,弥合当今各种复杂的机器学习模型和训练技术与它们可以解决的现实世界问题之间的差距。

AutoML如何工作?

对于给定的任务和数据集,AutoML系统会高效地尝试一系列相关的方法或模型,并为您选择最佳的方法。

您可以将其视为一个包含以下步骤的循环:

  • 生成模型配置。
  • 使用配置创建并训练模型。
  • 评估验证数据上的模型。
  • 根据评估结果学习和改进配置。

AutoML系统中的智能代理通过学习评估结果,生成配置并不断改进。

许多算法可以用作智能代理,例如贝叶斯优化或强化学习。然而,在智能代理的核心,它所做的是函数逼近和函数最大化。让我们逐个来看。

  • 函数逼近。智能代理试图学习模型配置与模型性能之间的关系。用数学语言来说,它试图学习一个函数y=f(x),其中x是模型配置,y是模型的性能。
  • 函数最大化。智能代理的最终目标是找到具有最佳模型性能的模型配置。换句话说,我们希望找到使得f(x)值最大化的x,即argmax f(x)。

AutoML的影响

可以想象,如果广泛采用,AutoML的影响将是巨大的。它可以极大地提高机器学习从业者的生产力。他们不再需要花费大量时间微调模型配置的细节。他们可能只需要仔细定义任务并手动约束搜索空间,以更快地获得结果。

AutoML今天能做什么?

目前,AutoML的应用相当有限,主要集中在以下两个方面。

  • 快速试验。一些机器学习工程师可能希望快速尝试在他们的任务和数据集上进行机器学习。他们可以使用AutoML作为起点。如果他们获得了相对好的结果,他们可以进一步手工开发机器学习解决方案。
  • 机器学习教育。刚开始学习机器学习的学生可以使用AutoML来了解机器学习的能力。他们不需要接触机器学习解决方案的所有细节,只需快速了解整个过程。

AutoML在未来能做什么?

对于AutoML未来能做什么的期望远远超过了今天的能力。我们将其总结为以下三个主要目标。

  • 对于机器学习专家:提高数据科学家和机器学习工程师的生产力。
  • 对于领域专家:领域专家,如医生或机械工程师,可以轻松地将AutoML应用于他们的问题。
  • 对于生产工程师:找到的解决方案可以轻松部署到生产环境中。

AutoML的问题

我们了解了目前的情况以及AutoML的发展方向。问题是我们如何实现这一目标。我们将今天面临的问题总结为三个类别。当这些问题得到解决时,AutoML将实现大规模应用。

问题1:缺乏商业激励

与开发可用的机器学习解决方案相比,建模是微不足道的。可用的解决方案可能包括但不限于数据收集、清理、验证、模型部署和监控等步骤。对于可以雇佣人员完成所有这些步骤的公司来说,雇佣机器学习专家进行建模的成本开销微不足道。当他们可以雇佣一支专家团队而几乎没有成本开销时,他们不会费心尝试像AutoML这样的新技术。

因此,只有当所有其他步骤的成本降低到最低点时,人们才会开始使用AutoML。也就是说,当雇佣人员进行建模的成本变得显著时。现在,让我们看看我们朝这个目标迈进的路线图。

许多步骤可以自动化。我们应该对云服务的发展持乐观态度,开发机器学习解决方案中的许多步骤可以自动化,例如数据验证、监控和提供服务。然而,有一个关键的步骤永远无法自动化,那就是数据标记。除非机器能够自我教导,否则人类始终需要为机器准备数据。

数据标记可能成为开发ML解决方案的主要成本。如果我们能够降低数据标记的成本,他们将有商业激励使用AutoML来节省建模的成本,这将是开发ML解决方案的唯一成本。

长期解决方案:不幸的是,目前还没有降低数据标记成本的终极解决方案。我们将依靠未来在“小数据学习”方面的研究突破。一种可能的途径是投资于迁移学习。

然而,人们对迁移学习不感兴趣,因为很难在这个主题上发表论文。有关更多详细信息,您可以观看这个视频《为什么大多数机器学习研究是无用的》。

短期解决方案:在短期内,我们可以使用小数据对预训练的大型模型进行微调,这是一种简单的迁移学习和小数据学习方法。

总结:随着云服务自动化了开发ML解决方案中的大部分步骤,AutoML可以使用预训练模型从较小的数据集中学习以降低数据标记成本,企业将有商业激励应用AutoML来降低他们在ML建模方面的成本。

问题2:缺乏可维护性

所有的深度学习模型都不可靠。模型的行为有时是不可预测的。很难理解模型为什么会给出特定的输出。

工程师维护模型。今天,当出现问题时,我们需要一位工程师来诊断和修复模型。公司与工程师沟通,以便对深度学习模型进行任何更改。

与工程师相比,AutoML系统更难与之交互。今天,你只能将其作为一种一次性方法来使用,通过提前给AutoML系统明确定义的一系列数学目标来创建深度学习模型。如果在实践中使用模型时遇到任何问题,它将无法帮助你解决。

长期解决方案:我们需要在人机交互领域进行更多的研究。我们需要一种更直观的方式来定义目标,以便由AutoML创建的模型更可靠。我们还需要更好的方式与AutoML系统进行交互,以满足新要求或修复任何问题,而无需花费太多资源搜索所有不同的模型。

短期解决方案:支持更多类型的目标,如FLOPS和参数数量,以限制模型大小和推理时间,并使用加权混淆矩阵处理不平衡的数据。当模型出现问题时,人们可以向AutoML系统添加相关的目标,让它生成一个新的模型。

问题3:缺乏基础设施支持

在开发AutoML系统时,我们发现现有的深度学习框架中缺少一些我们需要的功能。没有这些功能,AutoML系统的能力将受到限制。总结如下:

首先,具有灵活统一API的最先进模型。为构建一个有效的AutoML系统,我们需要一个大型的最先进模型池来组装最终的解决方案。模型池需要定期更新和维护。此外,调用模型的API需要高度灵活和统一,这样我们才能从AutoML系统中以编程方式调用它们。它们被用作构建端到端机器学习解决方案的构建块。

为解决此问题,我们开发了KerasCV和KerasNLP,这是基于Keras的面向计算机视觉和自然语言处理任务的专用库。它们将最先进的模型封装成简单、清晰、灵活的API,满足AutoML系统的需求。

第二,模型的自动硬件部署。AutoML系统可能需要在多个GPU和多台机器上构建和训练大型模型。AutoML系统应该能够在任何给定的计算资源上运行,这要求它动态地决定如何分配模型(模型并行)或训练数据(数据并行)给给定的硬件。

令人惊讶和不幸的是,今天的深度学习框架都无法自动将模型分布在多个GPU上。你必须明确指定每个张量的GPU分配。当硬件环境发生变化时,例如GPU的数量减少,你的模型代码可能无法再工作。

我还没有看到这个问题的明确解决方案。我们必须给深度学习框架一些时间来发展。有一天,模型定义代码将独立于张量硬件部署代码。

第三,模型的部署简易性。AutoML系统生成的任何模型都可能需要在云服务、终端设备等上进行部署。假设在部署之前,你仍然需要雇佣一位工程师为特定的硬件重新实现模型,这很可能是目前的情况。为什么不直接让同一个工程师一开始就实现模型,而不使用AutoML系统呢?

人们正在致力于解决这个部署问题。例如,Modular创建了一个统一的格式,用于表示所有模型,并将所有主要硬件提供商和深度学习框架集成到该表示中。当使用深度学习框架实现模型时,可以将其导出到此格式,并部署到支持它的硬件上。

结论

尽管我们讨论了所有这些问题,但我仍然对AutoML在长期内持有信心。我相信这些问题最终会得到解决,因为自动化和效率是深度学习发展的未来。虽然AutoML今天还没有被广泛采用,但只要机器学习革命继续,它也将被广泛应用。

Leave a Reply

Your email address will not be published. Required fields are marked *