什么是自动化机器学习 (AutoML)?

自动化机器学习,也称为自动化 ML 或 AutoML,是自动化机器学习模型开发的耗时、迭代任务的过程。它允许数据科学家、分析师和开发人员构建大规模、高效和生产力的机器学习模型,同时保持模型质量。 Azure 机器学习中的自动化 ML 基于我们 Microsoft 研究部门的突破。

AutoML 是如何工作的?

在训练期间,Azure 机器学习会并行创建多个管道,为你尝试不同的算法和参数。该服务通过与特征选择配对的机器学习算法进行迭代,每次迭代都会生成一个带有训练分数的模型。您想要优化的指标的得分越高,模型就被认为越“适合”您的数据。一旦达到实验中定义的退出标准,它将停止。

使用 Azure 机器学习,您可以通过以下步骤设计和运行自动化 ML 训练实验:

下图说明了此过程。 Automated Machine learning

.pkl

虽然模型构建是自动化的,但您还可以了解特征对于生成的模型有多重要或相关。

何时使用 AutoML:分类、回归、预测、计算机视觉和 NLP

当您希望 Azure 机器学习使用您指定的目标指标来训练和调整模型时,请应用自动化 ML。自动化机器学习使机器学习模型开发过程民主化,并使用户无论其数据科学专业知识如何,都能够为任何问题确定端到端的机器学习管道。

各行业的 ML 专业人士和开发人员可以使用自动化 ML 来:

  • 无需丰富的编程知识即可实施机器学习解决方案
  • 节省时间和资源
  • 利用数据科学最佳实践
  • 提供敏捷的问题解决能力

分类

分类是一种监督学习,其中模型使用训练数据进行学习,并将这些学习应用到新数据。 Azure 机器学习专门针对这些任务提供特征化,例如用于分类的深度神经网络文本特征化器。了解有关特征化选项的更多信息。您还可以在此处找到 AutoML 支持的算法列表。

分类模型的主要目标是根据训练数据的学习来预测新数据将属于哪些类别。常见的分类示例包括欺诈检测、手写识别和对象检测。

请参阅此 Python 笔记本中的分类和自动化机器学习示例:银行营销。

回归

与分类类似,回归任务也是常见的监督学习任务。 Azure 机器学习提供特定于回归问题的特征化。了解有关特征化选项的更多信息。您还可以在此处找到 AutoML 支持的算法列表。

与预测输出值是分类的分类不同,回归模型基于独立预测变量来预测数值输出值。在回归中,目标是通过估计一个变量如何影响其他变量来帮助建立这些独立预测变量之间的关系。例如,基于汽油里程、安全评级等特征的汽车价格。

请参阅这些 Python 笔记本中的回归和自动化机器学习预测示例:硬件性能。

时间序列预测

建立预测是任何业务不可或缺的一部分,无论是收入、库存、销售还是客户需求。您可以使用自动化机器学习来结合技术和方法,并获得推荐的高质量时间序列预测。您可以在此处找到 AutoML 支持的算法列表。

自动化时间序列实验被视为多元回归问题。过去的时间序列值被“旋转”,成为回归器和其他预测器的附加维度。与经典时间序列方法不同,这种方法的优点是在训练过程中自然地合并多个上下文变量及其相互关系。自动化机器学习为数据集和预测范围中的所有项目学习单一但通常内部分支的模型。因此,可以使用更多数据来估计模型参数,并且可以推广到未见过的序列。

高级预测配置包括:

  • 假期检测和特征化
  • 时间序列和 DNN 学习器(Auto-ARIMA、Prophet、ForecastTCN)
  • 许多模型支持通过分组
  • 滚动源交叉验证
  • 可配置的滞后
  • 滚动窗口聚合特征

请参阅此 Python 笔记本中的预测和自动化机器学习示例:能源需求。

计算机视觉

对计算机视觉任务的支持使您可以轻松生成针对图像分类和对象检测等场景的图像数据训练模型。

借助此功能,您可以:

  • 与 Azure 机器学习数据标记功能无缝集成
  • 使用标记数据生成图像模型
  • 通过指定模型算法和调整超参数来优化模型性能。
  • 将生成的模型下载或部署为 Azure 机器学习中的 Web 服务。
  • 利用 Azure 机器学习 MLOps 和 ML Pipelines 功能进行大规模运营。

通过 Azure 机器学习 Python SDK 支持为视觉任务创作 AutoML 模型。可以从 Azure 机器学习工作室 UI 访问生成的实验作业、模型和输出。

图像自动化机器学习支持以下计算机视觉任务:

任务 描述
多类图像分类 仅使用一组类别中的单个标签对图像进行分类的任务 - 例如每个图像都被分类为“猫”或“狗”或“鸭”的图像
多标签图像分类 图像可能具有一组标签中的一个或多个标签的任务 - 例如图像可以同时标记为“猫”和“狗”
物体检测 识别图像中的对象并使用边界框定位每个对象的任务,例如找到图像中的所有狗和猫,并在每个狗和猫周围绘制一个边界框。
实例分割 在像素级别识别图像中的对象,在图像中的每个对象周围绘制多边形的任务。

自然语言处理:NLP

支持自动化 ML 中的自然语言处理 (NLP) 任务,让您可以轻松生成基于文本数据训练的模型,用于文本分类和命名实体识别场景。通过 Azure 机器学习 Python SDK 支持编写自动化的 ML 训练 NLP 模型。可以从 Azure 机器学习工作室 UI 访问生成的实验作业、模型和输出。

NLP能力支持:

  • 使用最新的预训练 BERT 模型进行端到端深度神经网络 NLP 训练
  • 使用标记数据生成 NLP 模型
  • 多语言支持 104 种语言
  • 使用 Horovod 进行分布式训练

训练、验证和测试数据

通过自动化机器学习,您可以提供 训练数据 训练 ML 模型,并且您可以指定要执行的模型验证类型。自动化机器学习执行模型验证作为训练的一部分。也就是说,自动化 ML 使用 验证数据 根据所应用的算法调整模型超参数,以找到最适合训练数据的组合。然而,每次调整迭代都使用相同的验证数据,这会引入模型评估偏差,因为模型会不断改进并适应验证数据。

为了帮助确认这种偏差不会应用于最终推荐的模型,自动化 ML 支持使用 测试数据 评估自动化 ML 在实验结束时推荐的最终模型。当您提供测试数据作为 AutoML 实验配置的一部分时,默认情况下会在实验结束(预览)时测试此推荐模型。

特征工程

特征工程是使用数据的领域知识来创建帮助机器学习算法更好地学习的特征的过程。在 Azure 机器学习中,应用缩放和标准化技术来促进特征工程。这些技术和特征工程统称为特征化。

对于自动化机器学习实验,特征化会自动应用,但也可以根据您的数据进行自定义。详细了解包含哪些特征化 (SDK v1) 以及 AutoML 如何帮助防止模型中的过度拟合和不平衡数据。

定制特征化

还可以使用其他特征工程技术,例如编码和转换。

通过以下方式启用此设置:

合奏模型

自动化机器学习支持默认启用的集成模型。集成学习通过组合多个模型而不是使用单个模型来提高机器学习结果和预测性能。集成迭代显示为您工作的最终迭代。自动化机器学习使用投票和堆叠集成方法来组合模型:

  • 表决:基于预测类概率(对于分类任务)或预测回归目标(对于回归任务)的加权平均值进行预测。
  • 堆叠:堆叠结合了异构模型并根据各个模型的输出训练元模型。当前默认的元模型是用于分类任务的 LogisticRegression 和用于回归/预测任务的 ElasticNet。

带有排序集成初始化的 Caruana 集成选择算法用于决定在集成中使用哪些模型。在较高层面上,该算法使用最多五个具有最佳个体分数的模型来初始化集成,并验证这些模型是否在最佳分数的 5% 阈值内,以避免初始集成不佳。然后,对于每次集成迭代,都会将新模型添加到现有集成中,并计算结果分数。如果新模型提高了现有集成分数,则集成会更新以包含新模型。

请参阅 AutoML 包以更改自动化机器学习中的默认集成设置。

AutoML 和 ONNX

借助 Azure 机器学习,您可以使用自动化 ML 构建 Python 模型并将其转换为 ONNX 格式。一旦模型采用 ONNX 格式,它们就可以在各种平台和设备上运行。了解有关使用 ONNX 加速 ML 模型的更多信息。

在此 Jupyter Notebook 示例中了解如何转换为 ONNX 格式。了解 ONNX 支持哪些算法。

ONNX 运行时还支持 C#,因此您可以使用在 C# 应用程序中自动构建的模型,无需重新编码或 REST 端点引入的任何网络延迟。了解有关通过 ML.NET 在 .NET 应用程序中使用 AutoML ONNX 模型以及通过 ONNX 运行时 C# API 推理 ONNX 模型的更多信息。

下一步

有多种资源可帮助您启动并运行 AutoML。

教程/操作方法

教程是 AutoML 场景的端到端介绍性示例。

操作方法文章提供了有关自动化 ML 提供的功能的更多详细信息。例如,

  • 配置自动训练实验的设置

Jupyter 笔记本示例

查看 [自动化机器学习示例的 GitHub 笔记本存储库](https://github.com/Azure/azureml-examples/tree/main/sdk/python/jobs/automl-standalone-jobs) 中的详细代码示例和用例。

Python SDK 参考

通过 AutoML Job 类参考文档加深您对 SDK 设计模式和类规范的专业知识。