发布于: Aug 23, 2022

借助 Amazon SageMaker Ground Truth 您可以轻松低成本地构建精确标记的机器学习数据集。为了降低标记成本,SageMaker Ground Truth 使用主动学习来区分难以标记和易于标记的数据对象(例如图像或文档)。难以标注的数据对象被发送给人工人员标记,而易于标注的数据对象则通过机器学习自动标记(auto-labeling)。

SageMaker Ground Truth 中的自动标记功能使用预定义的 Amazon SageMaker 算法来标记数据,并且仅当您使用受支持的 SageMaker Ground Truth 内置任务类型之一创建标记作业时才可用。

利用此博文,使用您自己的算法创建一个主动学习工作流程,在该工作流程中进行训练和推理。此示例可用作执行自定义标签作业主动学习和自动注释。

本文包含两个部分:

  • 在第 1 部分中,我们演示了如何使用 Amazon SageMaker 内置算法 BlazingText 创建主动学习工作流程。
  • 在第 2 部分中,我们用自定义 ML 模型替换 BlazingText 算法。

要运行和自定义这些部分中使用的代码,请在笔记本实例的 SageMaker 示例部分中使用笔记本

bring_your_own_model_for_sagemaker_labeling_workflows_with_active_learning.ipynb

(笔记本)。您可以进一步修改此代码。例如,您可以使用此 GitHub 存储库的 src 目录中提供的代码,使用不同的主动学习逻辑而不是随机选择。

本文引导您使用 UCI 新闻数据集完成自定义主动学习工作流。该数据集包含大约 420,000 篇文章的列表,这些文章分属以下四个类别之一:商业(b)、科学和技术 (t)、娱乐 (e) 和健康与医学 (m)。

对于此解决方案,您可以使用 Amazon Web Services Step Functions 为文本分类标签作业创建主动学习工作流。Amazon Web Services Step Functions 提供了一种管理分布式应用程序的简单方法。
 
下图描述了此解决方案的主动学习循环逻辑。

在 GitHub 中的 Python 模块对应于上述步骤:

  • 在 Bootstrap 中指定了“分析和处理输入清单”。
  • 在 MetaData 中指定“是否有足够的标签数据来开始主动学习?”。
  • 在 Labeling 中指定“使用 CreateLabelingJob 人工添加标签数据”。
  • 在 Output 中指定了“将标签数据添加到清单”和“将所有标签数据导出到清单”。
  • ActiveLearning 中指定了除“检查完成情况”之外的其余步骤。
  • “检查完成情况”不属于任何 Python 模块,而是直接在 Step Function 中指定。


主动学习工作流包含以下步骤:

  • 分析输入清单以确定已标记的数据对象的数量(count)。必须标记至少 20% 的数据才能启动主动学习循环。
    o 如果所有数据都已标记,请复制当前清单作为最终输出清单。
    o 如果标记的数据不足 20%,请使用 CreateLabelingJob 发送 20% 的数据进行人工标记。
  • 当有足够的数据来训练模型时,启动主动学习循环。
    o 转换作业结果所针对的自动标签数据具有最高的置信度来推断标签。
    o 调用 CreateLabelingJob,以较低的推理置信度人工标记未标记的数据对象的子集。
  • 重复该循环。

要使用本文创建自定义主动学习工作流,您需要完成以下先决条件:

  • 创建 Amazon Web Services 账户
  • 使用完成本演练所需的权限创建一个 IAM 角色。您的 IAM 角色必须附加以下 Amazon Web Services 托管策略:
    o IAMFullAccess
    o CloudWatchFullAccess
    o Amazon Web ServicesLambdaFullAccess
    o Amazon Web ServicesStepFunctionsFullAccess
    o AmazonSageMakerFullAccess
    o Amazon Web ServicesCloudFormationFullAccess
  • 熟悉 Amazon SageMaker 的标签、训练和批量转换、Amazon Web Services CloudFormation 和 Step Functions。

此外,您将需要一个 Amazon SageMaker Jupyter 笔记本实例来使用该笔记本。要了解如何创建新的 Amazon SageMaker Jupyter 笔记本实例,请参阅创建笔记本实例。使用附加了 AmazonSageMakerFullAccessIAM 策略的 IAM  角色来创建您的笔记本实例。

启动笔记本实例后,请在您的实例的 SageMaker 示例的 Ground Truth 标记作业部分中查找

bring_your_own_model_for_sagemaker_labeling_workflows_with_active_learning.ipynb

请参阅使用示例笔记本以了解如何查找 Amazon SageMaker 示例笔记本。

第一步是启动 CloudFormation 堆栈。这将在 Amazon Web Services Lambda, Step Functions 和 IAM 中创建创建主动学习工作流所需的资源。

您可以使用以下启动堆栈按钮在 Amazon Web Services Region us-east-1 中的 CloudFormation 控制台中启动堆栈。要在其他 Amazon Web Services 区域中启动堆栈,请参考 GitHub 存储库的 README 文件中的说明。

此 CloudFormation 堆栈在 Amazon Web Services Step Functions 中生成两个状态机:ActiveLearning-* 和 ActiveLearningLoop-*,其中 * 是您启动 CloudFormation 堆栈时使用的名称。

在 Amazon SageMaker Jupyter 笔记本实例中运行本演练的第 1 部分和第 2 部分时,将产生以下成本:

  • Amazon SageMaker Ground Truth 中的人员数据标签成本。这将取决于您使用的劳动力类型。如果您是 SageMaker Ground Truth 的新用户,我们建议您使用私人劳动力,并自己以员工身份来测试您的添加标签作业配置。
  • Amazon SageMaker 训练和推断成本。该成本将根据您使用的算法类型而有所不同。
  • Amazon SageMaker Jupyter 笔记本实例 EC2 成本。Amazon Web Services Lambda 和 Step Function 成本。使用提供的 CloudFormation 模板创建的主动学习工作流使用 Amazon Web Services Lambda 和 Step Functions。
  • S3 的存储成本。

相关文章