机器学习 (ML) 工作流的许多部分都依赖于 AI Platform。本文档简要介绍了整个机器学习流程,并说明了每种 AI Platform 服务在该流程中所处的位置。
如需简要了各项相关解服务,请参阅 AI Platform 技术概览。
机器学习的简要说明
机器学习 (ML) 是人工智能 (AI) 的一个分支。机器学习的目标是让计算机从您提供的数据中学习。您无需编写代码来描述计算机应采取的操作,而是提供一种根据预期行为的示例进行调整的算法。由算法和关联学习参数组成的最终程序称为“经过训练的模型”。
机器学习工作流
下图简要介绍了机器学习工作流的各个阶段。蓝色背景框表示 AI Platform 提供托管式服务和 API 的阶段:
如需开发和管理可正式投入使用的模型,您必须完成以下阶段:
确定数据来源并准备好数据。
开发模型。
使用您的数据训练机器学习模型:
- 训练模型
- 评估模型准确率
- 调整超参数
部署经过训练的模型。
向模型发送预测请求:
- 在线预测
- 批量预测
持续监控预测。
管理模型和模型版本。
请注意,以上阶段会进行迭代,因此您可能需要在流程中的任何阶段重新评估并返回上一步。
本页的其余部分会详细说明各个阶段。
在启动工作流之前,请先评估问题
在启动机器学习工作流以解决问题之前,请认真思考一下您要解决的问题。例如,先思考以下问题:
您要解决的问题是否清晰明确?
如果要使用机器学习识别数据中的模式,有多种不同的方法供您选择。但重点在于您要明确从模型中获取的信息以及原因。
机器学习是问题的最佳解决方案吗?
有监督机器学习(即本文档中描述的机器学习方法)非常适合解决某些类型的问题。
如果您可以访问用于训练模型的大型数据集,则应该只考虑使用机器学习来解决问题。数据是否足够没有定论,您应根据具体情况决定。模型中包含的每个特征(数据属性)都会使正确训练模型所需的实例(数据记录)数增加。如需获取有关特征工程的指导,请参阅机器学习最佳做法。
此外,您还必须考虑将数据集拆分为三个子集,一个用于训练,一个用于评估(或验证),还有一个用于测试。
当然,您也可以研究替代方案,从而以更简单、更具体的方法来解决问题。
如何衡量模型是否成功?
创建机器学习模型的最大挑战之一是知道模型开发阶段何时结束。很多人会掉入不断优化模型的陷阱之中,然而在准确率方面却仅有小幅提升。因此在开始这个过程之前,您应该明确成功的标准。比如确定能够满足您需求的准确率水平,并了解相应水平的误差会导致的后果。
确定数据来源并准备好数据
您必须能够访问大型训练数据集,其中包括您想能够根据其他特征来推断(预测)的特性(在机器学习中称为特征)。
例如,假设您希望使用模型来预测房屋的销售价格。 您的着手点应该是描述特定区域房屋特征的大型数据集(包含每栋房屋的销售价格)。
数据分析
在确定数据来源后,您必须分析和理解这些数据,并将其准备好以便在训练过程中输入到模型中。例如,您可能需要执行以下步骤:
- 集中来自多个来源的数据并实行标准化以整合成一个数据集。
- 将数据直观呈现以寻找其中的趋势。
- 使用以数据为中心的语言和工具来找出数据中的模式。
- 识别数据中的特征。这些特征包含您在模型中使用的数据属性的子集。
- 清理数据以查找由数据输入或测量中的错误引起的任何异常值。
数据预处理
在预处理步骤中,您需要将有效、干净的数据转换为最适合模型需求的格式。以下是数据预处理的一些示例:
- 将数字数据归一化为通用比例。
- 对数据应用格式规则。例如,移除文本特征的 HTML 标记。
- 通过简化减少数据冗余。例如,将文本特征转换为词袋表示法。
- 用数字表示文本。例如,为分类特征中的每个可能值分配值。
- 为数据实例分配键值。
Google Cloud 支持数据探索和准备
TensorFlow 提供了几个可用于 AI Platform 的预处理库。例如,tf.transform。
您可以在 AI Platform 上部署和提供 scikit-learn 流水线,以应用内置转换来进行训练和在线预测。应用自定义转换目前处于 Beta 版阶段。
您可以部署自定义预测例程(测试版)以确保 AI Platform 在预测时预处理输入的方式与训练期间预处理数据的方式相同。
此外,请考虑以下 Google Cloud 服务:
Vertex AI Workbench 用户管理的笔记本是预封装有 JupyterLab 笔记本的 Deep Learning VM Image 实例,而且针对从数据准备和探索到快速原型设计开发等深度学习数据科学任务进行了优化。
BigQuery 是一种全托管式数据仓库服务,允许使用标准 SQL 对实时数据进行即时分析。
Dataproc 是一种全托管式云服务,用于运行 Apache Spark 和 Apache Hadoop 集群。
Dataflow 是一种全托管式服务,用于以流式传输(实时)和批量(历史)模式对数据进行转换并丰富数据内容,同时保持同等的可靠性和表现力。
Dataprep 是一种智能的无服务器数据服务,用于直观地探索、清理和准备结构化数据及非结构化数据。
为模型编码
使用已有的机器学习技术或定义新的操作和方法来开发模型。
完成 TensorFlow 的入门指南后,您便可以开始学习。您还可以按照 scikit-learn 文档或 XGBoost 文档的说明来创建模型。然后查看一些专为用于 AI Platform 而设计的代码示例。
训练、评估和调节模型
AI Platform 可为您提供在云端训练和评估模型所需的服务。此外,AI Platform 还提供超参数调节功能,以优化训练过程。
在训练模型时,您可以为其提供您已知目标数据属性(特征)值的数据。或者,您也可以运行模型以预测训练数据的目标值,以便模型可以调整其设置以更好地拟合数据,从而更准确地预测目标值。
同样,在评估您训练的模型时,您需要为其提供包含目标值的数据。您可以将模型预测的结果与评估数据的实际值进行比较,并使用适合您模型的统计技术来衡量其成功与否。
此外,您还可以通过更改用于控制训练过程的操作或设置来调节模型,例如要运行的训练步数。这种技术称为超参数调节。
测试模型
在训练期间,您需将模型应用于已知数据以调整设置,从而改善结果。当您的结果足以满足应用的需求时,您应该将模型部署到应用使用的系统中并对其进行测试。
要测试您的模型,请在尽可能接近最终应用和生产基础架构的环境中运行数据。
请勿使用与训练和评估相同的数据集。理想情况下,您进行的每次测试都应使用一组单独的数据,以确保始终用全新的数据来测试模型。
另外,您也可以根据模型的性质创建不同的测试数据集。例如,您可以针对特定位置或时间点使用不同的数据集,或者划分实例以模仿不同的人口统计数据。
在测试过程中,您可以根据测试结果调整模型参数和超参数,这样便可发现模型中的问题或其与应用其余部分的交互方面的问题。
将模型托管到云端
AI Platform 提供了将经过训练的机器学习模型上传到云端的工具,以便您将预测请求发送到模型。
要在 AI Platform 上部署经过训练的模型,您必须使用机器学习框架提供的工具保存该模型。如此一来,表示经过训练的模型的信息将被序列化到一个文件中,之后您可以将该文件部署到云端进行预测。
接下来,您可以将保存的模型上传到 Cloud Storage 存储分区,并在 AI Platform 上创建模型资源,同时指定该模型的 Cloud Storage 路径。
部署模型时,您还可以提供自定义代码(Beta 版),以自定义模型处理预测请求的方式。
向模型发送预测请求
AI Platform 提供了向云端的模型发送预测请求所需的服务。
有两种方法可以从经过训练的模型中获取预测结果,即在线预测(有时称为“HTTP 预测”)和批量预测。无论使用哪种预测方法,您都可以将输入数据传递给在云端托管的机器学习模型,并获取每个数据实例的推断。
监控预测服务
持续监控预测。AI Platform 会提供 API 来检查正在运行的作业。此外,各种 Google Cloud 工具(例如 Cloud Logging 和 Cloud Monitoring)也支持已部署模型的操作。
管理模型和模型版本
AI Platform 提供了各种用于管理模型和版本的界面,包括 REST API、gcloud ai-platform
命令行工具和 Google Cloud 控制台。
后续步骤
- 通过 Keras 开始使用 AI Platform Training 和 AI Platform Prediction。
- 了解如何使用自定义容器进行训练。
- 了解如何在不编写代码的情况下使用 AI Platform 内置算法训练 TensorFlow 和 XGBoost 模型。
- 了解如何使用自定义预测例程为在线预测请求添加预处理和后处理。
- 将自定义代码和自定义 scikit-learn 转换添加到在线预测流水线中。
- 详细了解 AI Platform Training 和 AI Platform Prediction。