自动化机器学习也称为自动化 ML 或 AutoML,是将机器学习模型开发过程中耗时的反复性任务自动化的过程。 数据科学家、分析师和开发人员可以使用它来生成高度可缩放、高效且高产能的 ML 模型,同时保证模型的质量。 Azure 机器学习中的自动化 ML 基于
Microsoft Research 部门
的突破性技术。
在训练期间,Azure 机器学习会创建多个尝试不同算法和参数的并行管道。 该服务将迭代与特征选择配对的 ML 算法,每次迭代都会生成带有训练评分的模型。 要优化的指标的分数越好,模型就越被视为“适合”数据。 一旦达到试验中定义的退出条件,机器学习就会停止。
节省时间和资源
应用数据科学最佳做法
提供灵活的问题解决方法
分类是一种监督式学习,其中的模型使用训练数据进行学习,并将学习所得应用于新数据。 Azure 机器学习为这些任务专门提供特征化,例如用于分类的深度神经网络文本特征化器。 有关特征化选项的详细信息,请参阅
数据特征化
。 还可以在
支持的算法
中找到 AutoML 支持的算法列表。
分类模型的主要目标是根据从训练数据习得的内容来预测新数据属于哪些类别。 常见分类示例包括欺诈检测、手写识别和对象检测。
请参阅此 Python 笔记本中的分类和自动化机器学习示例:
银行营销
。
类似于分类,回归任务也是常见的监督式学习任务。 Azure 机器学习提供特定于回归问题的特征化。 详细了解
特征化选项
。 还可以在
支持的算法
中找到 AutoML 支持的算法列表。
不同于分类(其中的预测输出值是分类的),回归模型基于独立的预测器预测数字输出值。 在回归中,目标是通过估计一个变量对其他变量的影响,帮助建立这些独立预测因子变量之间的关系。 例如,模型可能会基于里程油耗和安全评级等特征预测汽车价格。
请参阅以下 Python 笔记本中用于预测的回归和自动化机器学习示例:
硬件性能
。
生成预测是任何业务(无论是收入、库存、销售还是客户需求)中不可或缺的组成部分。 可以使用自动化 ML 来合并多种技术和方法,获得推荐的高质量时序预测结果。 可以在
支持的算法
中找到 AutoML 支持的算法列表。
自动化时序试验被视为多元回归问题。 将“透视”过去的时序值,使其成为回归量与其他预测器的更多维度。 与传统时序方法不同,这种方法的优点是,在训练过程中自然包含多个上下文变量及其相互关系。 自动化 ML 会针对数据集和预测时间范围内的所有项目,习得通常有内部分支的单个模型。 这样,就有更多数据可用于估计模型参数,使得未知系列的泛化成为可能。
高级预测配置包括:
假日检测和特征化
时序和 DNN 学习器(Auto-ARIMA、Prophet、ForecastTCN)
通过分组实现的多模型支持
滚动原点交叉验证
可配置滞后
滚动窗口聚合特征
请参阅此 Python 笔记本中的预测和自动化机器学习示例:
能源需求
。
计算机视觉
支持计算机视觉任务,让你能够轻松地生成针对图像数据训练的模型,用于图像分类和对象检测等场景。
借助此功能,可以:
与
Azure 机器学习数据标签
功能无缝集成。
使用标签数据生成图像模型。
通过指定模型算法并优化超参数来优化模型性能。
下载生成的模型或将其部署为 Azure 机器学习中的 Web 服务。
大规模运作,利用 Azure 机器学习
MLOps
和
ML 管道
功能。
支持通过 Azure 机器学习 Python SDK 为视觉任务创建 AutoML 模型。 可以从 Azure 机器学习工作室 UI 访问生成的试验作业、模型和输出。
了解如何
为计算机视觉模型设置 AutoML 训练
。
图像来自:
http://cs231n.stanford.edu/slides/2021/lecture_15.pdf
图像自动 ML 支持以下计算机视觉任务:
自然语言处理:NLP
支持自动化 ML 中的自然语言处理 (NLP) 任务,让你能够轻松地生成针对文本数据训练的模型,用于文本分类和命名实体识别场景。 通过 Azure 机器学习 Python SDK 支持创作自动化 ML 训练的 NLP 模型。 可以从 Azure 机器学习工作室 UI 访问生成的试验作业、模型和输出。
NLP 功能支持:
使用最新预先训练的 BERT 模型进行端到端深度神经网络 NLP 训练
与
Azure 机器学习数据标签
无缝集成
使用标记数据生成 NLP 模型
提供 104 种语言的多语言支持
使用 Horovod 进行分布式训练
了解如何
为 NLP 模型设置 AutoML 训练
。
训练、验证和测试数据
借助自动化 ML,可以提供训练数据来训练 ML 模型,并可以指定要执行的模型验证类型。
自动化 ML 在训练中执行模型验证。 也就是说,自动化 ML 使用验证数据根据应用的算法来优化模型超参数,以找到适合训练数据的最佳组合。 但是,每次优化迭代都使用相同的验证数据,这样会导致模型评估偏差,因为模型会不断改进和适应这些验证数据。
为帮助确认此类偏差未应用于最终推荐的模型,自动化 ML 支持使用测试数据来评估自动化 ML 在试验结束时推荐的最终模型。 如果在 AutoML 试验配置中提供测试数据,则在默认情况下,会在试验(预览版)结束时测试此推荐模型。
使用测试数据集测试模型以评估生成的模型是一项预览功能。 此功能是一个
试验性
预览功能,可能会随时更改。
了解如何
通过 SDK
或
Azure 机器学习工作室配置 AutoML 试验以使用测试数据(预览版)
。
特征工程是使用数据领域知识创建有助于优化机器学习算法学习效果的特征的过程。 在 Azure 机器学习中,应用缩放和规范化技术来简化特征工程。 这些技术和特征工程统称为特征化。
对于自动机器学习试验,会自动应用特征化,但也可以基于你的数据进行自定义。
详细了解包含的特征化 (SDK v1)
以及 AutoML 如何帮助
防止模型中出现过度拟合与数据不均衡
。
自动化机器学习特征化步骤(例如特征规范化、处理缺失数据、将文本转换为数字)成为了基础模型的一部分。 使用模型进行预测时,将自动向输入数据应用在训练期间应用的相同特征化步骤。
自定义特征化
还提供了其他特征工程技术,例如编码和转换。
可通过以下方式启用此设置:
Azure 机器学习工作室:
通过以下步骤
在“查看其他配置”部分中启用“自动特征化”。
Python SDK:在
AutoML 作业
对象中指定特征工程。 详细了解如何
启用特征化
。
自动化机器学习支持默认已启用的系综模型。 系综学习通过组合多个模型而不是使用单个模型,来改善机器学习结果和预测性能。 系综迭代显示为作为的最后一个迭代。 自动化机器学习使用投票和堆叠系综方法来组合模型:
投票
:根据预测类概率(针对分类任务)或预测回归目标(针对回归任务)的加权平均值进行预测。
堆叠
:组合异构的模型,并根据各个模型的输出训练元模型。 当前的默认元模型是 LogisticRegression(对于分类任务)和 ElasticNet(对于回归/预测任务)。
提供排序系综初始化的
Caruana 系综选择算法
用于决定要在系综中使用的模型。 从较高层面看,此算法使用个体评分最高的最多五个模型来初始化集成,并验证这些模型是否在最佳评分的 5% 阈值范围内,以避免初始系综不佳。 然后,对于每个系综迭代,会将一个新模型添加到现有系综,并计算最终评分。 如果新模型改善了现有的系综评分,则会更新系综以包含新模型。
请参阅
AutoML 包
,了解如何在自动化机器学习中更改默认系综设置。
AutoML 和 ONNX
借助 Azure 机器学习,可以使用自动化 ML 来生成 Python 模型并将其转换为 ONNX 格式。 在模型采用 ONNX 格式后,可以在各种平台和设备上运行这些模型。 详细了解如何
使用 ONNX 加速 ML 模型
。
在此 Jupyter 笔记本示例中
了解如何转换为 ONNX 格式。 了解
ONNX 支持的算法
。
ONNX 运行时还支持 C#。因此,你可以在 C# 应用中使用自动生成的模型,而无需重新编写代码,同时可避免 REST 终结点造成的任何网络延迟。 详细了解
在带有 ML.NET 的 .NET 应用程序中使用 AutoML ONNX 模型
和
使用 ONNX 运行时 C# API 推断 ONNX 模型
。
有多种资源可帮助你启动并运行 AutoML。
教程/操作指南
教程是 AutoML 方案的端到端介绍性示例。
对于代码优先体验,请遵循
教程:使用 AutoML 和 Python 训练物体检测模型
对于低代码或无代码体验,请参阅
教程:在 Azure 机器学习工作室中使用无代码 AutoML 训练分类模型
。
操作方法文章进一步详细介绍了自动化 ML 提供的功能。 例如,
配置自动训练试验的设置
在 Azure 机器学习工作室中没有代码
。
使用 Python SDK
。
了解如何
使用 Python 训练计算机视觉模型
。
了解如何
查看从自动化 ML 模型生成的代码 (SDK v1)
。
Jupyter 笔记本示例
查看
用于自动化机器学习的 GitHub 笔记本存储库示例
中的详细代码示例和用例。
Python SDK 参考
阅读
AutoML Job 类参考文档
,加深你对 SDK 设计模式和类规范的专业知识的理解。
自动化机器学习功能也可以在其他 Microsoft 解决方案(例如
ML.NET
、
HDInsight
、
Power BI
和
SQL Server
)中使用。