自动化机器学习 (AutoML)?
自动化机器学习也称为自动化 ML 或 AutoML,是将机器学习模型开发过程中耗时的反复性任务自动化的过程。 数据科学家、分析师和开发人员可以使用它来生成高度可缩放、高效且高产能的 ML 模型,同时保证模型的质量。 Azure 机器学习中的自动化 ML 基于 Microsoft Research 部门的突破性技术。
传统的机器学习模型开发是资源密集型的,需要具备丰富的领域知识,并需要花费大量的时间来生成和比较数十个模型。 使用自动化机器学习可以缩减生成生产就绪型 ML 模型所需的时间,同时使工作变得更轻松高效。
Azure 机器学习中 AutoML 的使用方法
Azure 机器学习提供了以下两种使用自动化 ML 的体验。 请参阅以下各部分,了解每种体验 (v1) 中的功能可用性。
编程经验丰富的客户可以使用 Azure 机器学习 Python SDK。 请先查看教程:使用自动化机器学习预测出租车费 (v1)。
编程经验有限/无经验的客户可以使用 https://studio.ml.azure.cn 上的 Azure 机器学习工作室。 请先查看以下教程:
试验设置
可以使用以下设置来配置自动化 ML 试验。
Python SDK | 工作室 Web 体验 | |
---|---|---|
将数据拆分为训练/验证集 | ✓ | ✓ |
支持 ML 任务:分类、回归和预测 | ✓ | ✓ |
支持计算机视觉任务:图像分类、物体检测和实例分段 | ✓ | |
基于主要指标进行优化 | ✓ | ✓ |
支持将 Azure 机器学习计算作为计算目标 | ✓ | ✓ |
配置预测范围、目标滞后和滚动窗口 | ✓ | ✓ |
设置退出条件 | ✓ | ✓ |
设置并发迭代数 | ✓ | ✓ |
删除列 | ✓ | ✓ |
块算法 | ✓ | ✓ |
交叉验证 | ✓ | ✓ |
支持在 Azure Databricks 群集上训练 | ✓ | |
查看工程特征名称 | ✓ | |
特征化摘要 | ✓ | |
假日特征化 | ✓ | |
日志文件详细级别 | ✓ |
模型设置
可将这些设置应用到自动化 ML 试验生成的最佳模型。
Python SDK | 工作室 Web 体验 | |
---|---|---|
最佳模型注册、部署、可解释性 | ✓ | ✓ |
启用投票集成和堆栈集成模型 | ✓ | ✓ |
显示基于非主要指标的最佳模型 | ✓ | |
启用/禁用 ONNX 模型兼容性 | ✓ | |
测试模型 | ✓ | ✓(预览) |
作业控制设置
使用这些设置可以查看和控制试验作业及其子作业。
Python SDK | 工作室 Web 体验 | |
---|---|---|
作业摘要表 | ✓ | ✓ |
取消作业和子作业 | ✓ | ✓ |
获取护栏 | ✓ | ✓ |
暂停和恢复作业 | ✓ |
何时使用 AutoML:分类、回归、预测、计算机视觉和 NLP
想要通过 Azure 机器学习使用指定的目标指标训练和优化模型时,可以运用自动化 ML。 自动化 ML 可将机器学习模型开发过程标准化,并使其用户(无论是否具备数据科学知识)能够在端到端的机器学习管道中识别任何问题。
各行业的 ML 专业人员和开发人员可以使用自动化 ML 来实现以下目的:
- 无需丰富的编程知识,即可实现机器学习解决方案
- 节省时间和资源
- 利用数据科学最佳做法
- 提供灵活的问题解决方法
分类
分类是一个常见的机器学习任务。 分类是一种监督式学习,其中的模型使用训练数据进行学习,并将学习所得应用于新数据。 Azure 机器学习为这些任务专门提供特征化,例如用于分类的深度神经网络文本特征化器。 详细了解特征化 (v1) 选项。
分类模型的主要目标是根据从其训练数据中获得的经验,预测新数据将属于哪些类别。 常见分类示例包括欺诈检测、手写识别和对象检测。 有关详细信息和示例,请参阅使用自动化 ML (v1) 创建分类模型。
参阅以下 Python 笔记本中的分类和自动化机器学习示例:欺诈检测、营销预测和新闻组数据分类
回归
类似于分类,回归任务也是常见的监督式学习任务。
不同于分类(其中的预测输出值是分类的),回归模型基于独立的预测器预测数字输出值。 在回归中,目标是通过估计一个变量对其他变量的影响,帮助建立这些独立预测因子变量之间的关系。 例如,基于每英里耗油量、安全评级等特征预测汽车价格。 有关详细信息和示例,请参阅使用自动化机器学习 (v1) 的回归。
参阅以下 Python 笔记本中用于预测的回归和自动化机器学习示例:CPU 性能预测
时序预测
生成预测是任何业务(无论是收入、库存、销售还是客户需求)中不可或缺的组成部分。 可以使用自动化 ML 来合并多种技术和方法,获得推荐的高质量时序预测结果。 有关详细信息,请参阅以下操作指南:用于时序预测的自动化机器学习 (v1)。
自动化时序试验被视为多元回归问题。 将“透视”过去的时序值,使其成为回归量与其他预测指标的附加维度。 与传统时序方法不同,这种方法的优点是,在训练过程中自然包含多个上下文变量及其相互关系。 自动化 ML 会针对数据集和预测时间范围内的所有项目,习得通常有内部分支的单个模型。 这样就可以使用更多的数据来估计模型参数,使得未知系列的泛化成为可能。
高级预测配置包括:
- 假日检测和特征化
- 时序和 DNN 教学器(Auto-ARIMA、Prophet、ForecastTCN)
- 通过分组实现的多模型支持
- 滚动原点交叉验证
- 可配置滞后
- 滚动窗口聚合特征
参阅以下 Python 笔记本中用于预测的回归和自动化机器学习示例:销售预测、需求预测和预测 GitHub 的每日活跃用户。
计算机视觉
支持计算机视觉任务,让你能够轻松地生成针对图像数据训练的模型,用于图像分类和对象检测等场景。
借助此功能,可以:
- 与 Azure 机器学习数据标签功能无缝集成
- 使用标签数据生成图像模型
- 通过指定模型算法并优化超参数来优化模型性能。
- 下载生成的模型或将其部署为 Azure 机器学习中的 Web 服务。
- 利用 Azure 机器学习 MLOps 和 ML 管道 (v1) 功能大规模运行。
支持通过 Azure 机器学习 Python SDK 为视觉任务创作 AutoML 模型。 可以从 Azure 机器学习工作室 UI 访问生成的试验作业、模型和输出。
了解如何为计算机视觉模型设置 AutoML 训练。
图像自动 ML 支持以下计算机视觉任务:
任务 | 说明 |
---|---|
多类图像分类 | 仅使用一组类中的单个标签对图像进行分类的任务 - 例如,每个图像都分类为“猫”或“狗”或“鸭子”图像 |
多标签图像分类 | 图像可以具有一组标签中的一个或多个标签的任务 - 例如,图像可以同时标记为“猫”和“狗” |
对象检测 | 用于标识图像中的对象以及使用边界框定位每个对象的任务,例如,在图像中查找所有狗和猫,并围绕每个对象绘制边界框。 |
实例分段 | 在像素级别标识图像中对象的任务,围绕图像中的每个对象绘制多边形。 |
自然语言处理:NLP
支持自动化 ML 中的自然语言处理 (NLP) 任务,让你能够轻松地生成针对文本数据训练的模型,用于文本分类和命名实体识别场景。 通过 Azure 机器学习 Python SDK 支持创作自动化 ML 训练的 NLP 模型。 可以从 Azure 机器学习工作室 UI 访问生成的试验作业、模型和输出。
NLP 功能支持:
- 使用最新预先训练的 BERT 模型进行端到端深度神经网络 NLP 训练
- 与 Azure 机器学习数据标签无缝集成
- 使用标记数据生成 NLP 模型
- 提供 104 种语言的多语言支持
- 使用 Horovod 进行分布式训练
了解如何为 NLP 模型 (v1) 设置 AutoML 训练。
自动化 ML 的工作原理
在训练期间,Azure 机器学习会创建多个尝试不同算法和参数的并行管道。 该服务将迭代与特征选择配对的 ML 算法,每次迭代都会生成带有训练评分的模型。 模型的评分越高,则认为它可以更好地“拟合”数据。 一旦达到试验中定义的退出条件,机器学习就会停止。
使用 Azure 机器学习可以通过以下步骤设计和运行自动化 ML 训练试验:
识别要解决的 ML 问题:分类、预测、回归或计算机视觉。
选择是要使用 Python SDK 还是工作室 Web 体验:了解 Python SDK 与工作室 Web 体验之间的搭配用法。
- 如果你的编程经验有限或者没有经验,请在 https://studio.ml.azure.cn 上尝试使用 Azure 机器学习工作室 Web 体验
- Python 开发人员请查看 Azure 机器学习 Python SDK (v1)
指定已标记训练数据的源和格式:Numpy 数组或 Pandas 数据帧
配置模型训练的计算目标,例如本地计算机、Azure 机器学习计算、远程 VM 或 带有 SDK v1 的 Azure Databricks。
配置自动化机器学习参数,用于确定要对不同模型运行的迭代次数、超参数设置、高级预处理/特征化,以及在确定最佳模型时要查看的具体指标。
提交训练作业。
查看结果
下图演示了此过程。
还可以检查记录的作业信息,其中包含的指标是在作业期间收集的。 训练作业会生成一个包含模型和数据预处理的 Python 序列化对象(.pkl
文件)。
模型生成是自动化的,同时,你也可以了解特征对于生成的模型而言如何重要或者彼此相关。
有关本地和远程托管 ML 计算目标的指导
自动化 ML 的 Web 界面始终使用远程计算目标。 但使用 Python SDK 时,可以选择本地计算或远程计算目标进行自动化 ML 训练。
- 本地计算:训练在本地便携式计算机或 VM 计算中发生。
- 远程计算:训练在机器学习计算群集中发生。
选择计算目标
选择计算目标时请考虑以下因素:
- 选择本地计算:如果你的方案涉及到使用小数据和短训练(即,每个子作业持续几秒或几分钟)进行初始探索或演示,则可能更适合在本地计算机上进行训练。 这样就无需进行设置,并且可以直接使用基础结构资源(电脑或 VM)。
- 选择远程 ML 计算群集:如果使用较大的数据集进行训练(例如,在生产训练中创建需要较长时间训练的模型),则远程计算可以提供好得多的端到端时间性能,因为
AutoML
会在群集节点之间并行化训练。 在远程计算上,内部基础结构的启动时间大约会根据每个子作业增加 1.5 分钟,如果 VM 尚未启动并运行,则群集基础结构的启动时间也会额外增加几分钟。
优点和缺点
选择是要使用本地还是远程计算时,请考虑两者的以下优点和缺点。
优点(优势) | 缺点(劣势) | |
---|---|---|
本地计算目标 | ||
远程 ML 计算群集 |
功能可用性
使用远程计算时,有更多的功能可用,如下表中所示。
功能 | Remote | Local |
---|---|---|
数据流式处理(最高 100 GB 的大数据支持) | ✓ | |
基于 DNN-BERT 的文本特征化和训练 | ✓ | |
现成的 GPU 支持(训练和推理) | ✓ | |
图像分类和标记支持 | ✓ | |
用于预测的 Auto-ARIMA、Prophet 和 ForecastTCN 模型 | ✓ | |
并行执行的多个作业/迭代 | ✓ | |
在 AutoML 工作室 Web 体验 UI 中创建具有可解释性的模型 | ✓ | |
工作室 Web 体验 UI 中的特征工程自定义 | ✓ | |
Azure 机器学习超参数优化 | ✓ | |
Azure 机器学习管道工作流支持 | ✓ | |
继续作业 | ✓ | |
预测 | ✓ | ✓ |
在笔记本中创建和运行试验 | ✓ | ✓ |
在 UI 中注册和可视化试验的信息与指标 | ✓ | ✓ |
数据护栏 | ✓ | ✓ |
训练、验证和测试数据
借助自动化 ML,可以提供训练数据来训练 ML 模型,并可以指定要执行的模型验证类型。 自动化 ML 在训练中执行模型验证。 也就是说,自动化 ML 使用验证数据根据应用的算法来优化模型超参数,以找到最适合训练数据的最佳组合。 但是,每次优化迭代都使用相同的验证数据,这样会导致模型评估偏差,因为模型会不断改进和适应这些验证数据。
为帮助确认此类偏差未应用于最终推荐的模型,自动化 ML 支持使用测试数据来评估自动化 ML 在试验结束时推荐的最终模型。 如果在 AutoML 试验配置中提供测试数据,则在默认情况下,会在试验(预览版)结束时测试此推荐模型。
重要
使用测试数据集测试模型以评估生成的模型是一项预览功能。 此功能是一个试验性预览功能,可能会随时更改。
了解如何通过 SDK (v1) 或 Azure 机器学习工作室配置 AutoML 试验以使用测试数据(预览版)。
还可以通过提供自己的测试数据或留出一部分训练数据来测试任何现有的自动化 ML 模型(预览版)(v1),包括子作业中的模型。
特性工程
特征工程是使用数据领域知识创建有助于优化机器学习算法学习效果的特征的过程。 在 Azure 机器学习中,应用缩放和规范化技术来简化特征工程。 这些技术和特征工程统称为特征化。
对于自动机器学习试验,会自动应用特征化,但也可以基于你的数据进行自定义。 详细了解包含的特征化 (v1)以及 AutoML 如何帮助防止模型中出现过度拟合与数据不均衡。
注意
自动化机器学习特征化步骤(特征规范化、处理缺失数据,将文本转换为数字等)成为了基础模型的一部分。 使用模型进行预测时,将自动向输入数据应用在训练期间应用的相同特征化步骤。
自定义特征化
还提供了其他特征工程技术,例如编码和转换。
可通过以下方式启用此设置:
Azure 机器学习工作室:通过这些 (v1) 步骤在“查看其他配置部分”启用“自动特征化”。
Python SDK:在 AutoMLConfig 对象中指定
"feauturization": 'auto' / 'off' / 'FeaturizationConfig'
。 详细了解如何启用特征化 (v1)。
集成模型
自动化机器学习支持默认已启用的系综模型。 系综学习通过组合多个模型而不是使用单个模型,来改善机器学习结果和预测性能。 系综迭代显示为作为的最后一个迭代。 自动化机器学习使用投票和堆叠系综方法来组合模型:
- 投票:根据预测类概率(对于分类任务)或预测回归目标(对于回归任务)的加权平均值进行预测。
- 堆叠:堆叠方法组合异构的模型,并根据各个模型的输出训练元模型。 当前的默认元模型是 LogisticRegression(对于分类任务)和 ElasticNet(对于回归/预测任务)。
提供排序系综初始化的 Caruana 系综选择算法用于决定要在系综中使用的模型。 从较高层面看,此算法使用个体评分最高的最多五个模型来初始化集成,并验证这些模型是否在最佳评分的 5% 阈值范围内,以避免初始系综不佳。 然后,对于每个系综迭代,会将一个新模型添加到现有系综,并计算最终评分。 如果新模型改善了现有的系综评分,则会更新系综以包含新模型。
请参阅操作指南 (v1),了解如何在自动化机器学习中更改默认系综设置。
AutoML 和 ONNX
借助 Azure 机器学习,可以使用自动化 ML 来生成 Python 模型并将其转换为 ONNX 格式。 在模型采用 ONNX 格式后,可以在各种平台和设备上运行这些模型。 详细了解如何使用 ONNX 加速 ML 模型。
在此 Jupyter 笔记本示例中了解如何转换为 ONNX 格式。 了解 ONNX (v1) 支持的算法。
ONNX 运行时还支持 C#。因此,你可以在 C# 应用中使用自动生成的模型,而无需重新编写代码,同时可避免 REST 终结点造成的任何网络延迟。 详细了解在带有 ML.NET 的 .NET 应用程序中使用 AutoML ONNX 模型和使用 ONNX 运行时 C# API 推断 ONNX 模型。
后续步骤
有多种资源可帮助你启动并运行 AutoML。
教程/操作指南
教程是 AutoML 方案的端到端介绍性示例。
对于代码优先体验,请遵循教程:使用 AutoML 和 Python (v1) 训练回归模型。
对于低代码或无代码体验,请参阅教程:在 Azure 机器学习工作室中使用无代码 AutoML 训练分类模型。
有关使用 AutoML 训练计算机视觉模型的信息,请参阅教程使用 AutoML 和 Python (v1) 训练对象检测模型。
操作方法文章进一步详细介绍了自动化 ML 提供的功能。 例如,
配置自动训练试验的设置
了解如何使用时序数据 (v1) 训练预测模型。
了解如何查看从自动化 ML 模型生成的代码。
Jupyter 笔记本示例
查看用于自动化机器学习的 GitHub 笔记本存储库示例中的详细代码示例和用例。
Python SDK 参考
阅读 AutoML 类参考文档,加深你对 SDK 设计模式和类规范的专业知识的理解。
注意
自动化机器学习功能也可以在其他 Microsoft 解决方案(例如 ML.NET、HDInsight、Power BI 和 SQL Server)中使用