使用 Amazon SageMaker Clarify 解释文本分类模型预测

使用 Amazon SageMaker Clarify 解释文本分类模型预测

模型可解释性是指以人类可理解的方式将机器学习 (ML) 模型的预测与实例的输入特征值相关联的过程。 该字段通常被称为 可解释的人工智能 (XAI)。 亚马逊SageMaker澄清 是一个特点 亚马逊SageMaker 使数据科学家和 ML 工程师能够解释他们的 ML 模型的预测。 它使用与模型无关的方法,例如 形状可加的解释 (SHAP) 用于特征归因。 除了支持对表格数据的解释外,Clarify 还支持使用相同的 SHAP 算法对计算机视觉 (CV) 和自然语言处理 (NLP) 进行解释。

在这篇文章中,我们将说明如何使用 Clarify 来解释 NLP 模型。 具体来说,我们展示了如何解释使用 SageMaker BlazingText 算法。 这有助于您了解文本的哪些部分或单词对于模型所做的预测最重要。 除其他外,这些观察结果可用于改进各种流程,例如减少数据集中偏差的数据采集和模型验证,以确保模型按预期运行,并在部署模型时赢得所有利益相关者的信任。 这可能是许多应用领域的关键要求,例如情感分析、法律评论、医疗诊断等。

我们还提供了一个通用设计模式,您可以在将 Clarify 与任何 SageMaker 算法.

解决方案概述

SageMaker 算法具有固定的输入和输出数据格式。 例如,BlazingText 算法容器接受 JSON 格式的输入。 但客户通常需要与其数据管道兼容的特定格式。 我们提供了几个选项,您可以按照这些选项使用 Clarify。

选项​​A

在此选项中,我们使用 SageMaker 托管的推理管道功能。 推理管道是一个 SageMaker 模型,它构成了一系列处理推理请求的容器。 下图说明了一个示例。

澄清作业调用推理管道,其中一个容器处理数据格式,另一个容器保存模型。

您可以使用推理管道来部署您自己的自定义模型和打包在不同容器中的 SageMaker 内置算法的组合。 有关详细信息,请参阅 托管模型和预处理逻辑作为一个端点后面的串行推理管道. 由于 Clarify 仅支持 CSV 和 JSON 行作为输入,因此您需要完成以下步骤:

  1. 创建模型和容器以将数据从 CSV(或 JSON 行)转换为 JSON。
  2. 在用 BlazingText 算法进行模型训练步骤后,直接 部署模型. 这将使用接受 JSON 作为输入的 BlazingText 容器部署模型。 当使用不同的算法时,SageMaker 使用该算法的容器创建模型。
  3. 使用前面的两个模型创建一个 管道模型. 这将以线性顺序链接两个模型并创建一个模型。 例如,请参阅 使用 Scikit-learn 和线性学习器的推理管道.

通过这个解决方案,我们成功地创建了一个单一模型,其输入与 Clarify 兼容,并且可以被它用来生成解释。

选项B.

此选项演示如何通过使用您自己的容器来托管 SageMaker 模型,从而在 Clarify 和 SageMaker 算法之间集成不同数据格式的使用。 下图说明了解决方案中涉及的体系结构和步骤:

使用 Amazon SageMaker Clarify PlatoBlockchain 数据智能解释文本分类模型预测。垂直搜索。人工智能。

步骤如下:

  1. 通过 SageMaker Estimator 使用 BlazingText 算法来训练文本分类模型。
  2. 训练模型后,创建一个自定义 Docker 容器,该容器可用于创建 SageMaker 模型并可选择将模型部署为 SageMaker 模型端点。
  3. 配置并创建 Clarify 作业以使用托管容器生成可解释性报告。
  4. 自定义容器接受 CSV 格式的推理请求,并启用 Clarify 以生成解释。

应该注意的是,此解决方案演示了使用 Clarify 为 BlazingText 模型获取离线解释的想法。 有关在线可解释性的更多信息,请参阅 SageMaker Clarify 的在线可解释性.

这篇文章的其余部分解释了第二个选项中的每个步骤。

训练 BlazingText 模型

我们首先使用 BlazingText 算法训练文本分类模型。 在这个例子中,我们使用 DBpedia 本体数据集. DBpedia 是一项众包计划,使用来自维基百科等各种维基媒体项目的信息提取结构化内容。 具体来说,我们使用由创建的 DBpedia 本体数据集 张等. 它是通过从 DBpedia 14 中选择 2014 个非重叠类构建的。字段包含维基百科文章的摘要和相应的类。 文本分类模型的目标是在给定摘要的情况下预测文章的类别。

下面提供了训练模型的详细分步过程 笔记本. 训练完模型后,记下 亚马逊简单存储服务 (Amazon S3) 存储模型工件的 URI 路径。 有关分步指南,请参阅 使用 SageMaker BlazingText 进行文本分类.

在 SageMaker 上使用您自己的容器部署经过训练的 BlazingText 模型

使用 Clarify,有两个选项可以提供模型信息:

  • 创建 SageMaker 模型而不将其部署到端点 – 当向 Clarify 提供 SageMaker 模型时,它会使用该模型创建一个临时端点。
  • 创建 SageMaker 模型并将其部署到端点 – 当端点可用于 Clarify 时,它使用端点来获取解释。 这避免了临时端点的创建,并可以减少 Clarify 作业的运行时间。

在本文中,我们将第一个选项与 Clarify 一起使用。 我们使用 SageMaker Python 开发工具包 以此目的。 有关其他选项和更多详细信息,请参阅 创建您的端点并部署您的模型.

自带容器 (BYOC)

我们首先构建一个自定义 Docker 镜像,用于创建 SageMaker 模型. 您可以使用中的文件和代码 源目录 我们的 GitHub 存储库。

Dockerfile 描述了我们要构建的图像。 我们从标准的 Ubuntu 安装开始,然后安装 Scikit-learn。 我们也克隆 快速文本 并安装包。 它用于加载 BlazingText 模型以进行预测。 最后,我们以上述文件的形式添加实现我们算法的代码,并在容器中搭建环境。 整个 Dockerfile 在我们的存储库中提供,您可以按原样使用它。 参考 将您自己的推理代码与托管服务一起使用 有关 SageMaker 如何与您的 Docker 容器交互及其要求的更多详细信息。

此外, 预测器 包含加载模型和进行预测的代码。 它接受 CSV 格式的输入数据,这使其与 Clarify 兼容。

有了 Dockerfile 后,构建 Docker 容器并将其上传到 Amazon Elastic Container注册 (亚马逊 ECR)。 您可以在表格中找到分步过程 外壳脚本 在我们的 GitHub 存储库中,您可以使用它来创建 Docker 映像并将其上传到 Amazon ECR。

创建 BlazingText 模型

下一步是从 SageMaker Python SDK 创建模型对象 模型类 可以部署到 HTTPS 端点。 我们将 Clarify 配置为使用此模型来生成解释。 该步骤的代码及其他要求可参考 在 Amazon SageMaker 中使用您自己的容器部署经过训练的 SageMaker BlazingText 模型.

配置澄清

澄清 NLP 与回归和分类模型兼容。 它可以帮助您了解输入文本的哪些部分会影响模型的预测。 Clarify 支持 62 种语言,可以处理多种语言的文本。 我们使用 SageMaker Python SDK 来定义 Clarify 用于创建可解释性报告的三种配置。

首先,我们需要创建处理器对象并指定将用于预测和特征属性的输入数据集的位置:

import sagemaker
sagemaker_session = sagemaker.Session()
from sagemaker import clarify
clarify_processor = clarify.SageMakerClarifyProcessor(
role=role,
instance_count=1,
instance_type="ml.m5.xlarge",
sagemaker_session=sagemaker_session,
)
file_path = "<location of the input dataset>"

数据配置

在这里,您应该配置输入数据的位置、特征列以及您希望 Clarify 作业存储输出的位置。 这是通过在创建 DataConfig 对象时传递相关参数来完成的:

explainability_output_path = "s3://{}/{}/clarify-text-explainability".format(
sagemaker_session.default_bucket(), "explainability"
) explainability_data_config = clarify.DataConfig(
s3_data_input_path=file_path,
s3_output_path=explainability_output_path,
headers=["Review Text"],
dataset_type="text/csv",
)

模型配置

使用 ModelConfig,您应该指定有关训练模型的信息。 在这里,我们指定我们在先前步骤中创建的 BlazingText SageMaker 模型的名称,并设置其他参数,例如 亚马逊弹性计算云 (Amazon EC2) 实例类型和内容格式:

model_config = clarify.ModelConfig(
model_name=model_name,
instance_type="ml.m5.xlarge",
instance_count=1,
accept_type="application/jsonlines",
content_type="text/csv",
endpoint_name_prefix=None,
)

形状配置

这用于告知 Clarify 如何获取特征属性。 TextConfig 用于指定文本的粒度和语言。 在我们的数据集中,因为我们要将输入文本分解为单词,并且语言是英语,所以我们将这些值分别设置为 token 和 English。 根据数据集的性质,您可以将粒度设置为句子或段落。 基线设置为特殊标记。 这意味着 Clarify 将删除输入文本的子集并用基线中的值替换它们,同时获得用于计算 SHAP 值的预测。 这就是它如何确定标记对模型预测的影响,进而确定它们的重要性。 内核 SHAP 算法中要使用的样本数由 num_samples 争论。 较高的值会产生更强大的特征属性,但这也会增加作业的运行时间。 因此,您需要在两者之间做出权衡。 请参见以下代码:

shap_config = clarify.SHAPConfig(
baseline=[["<UNK>"]],
num_samples=1000,
agg_method="mean_abs",
save_local_shap_values=True,
text_config=clarify.TextConfig(granularity="token", language="english"),
)

欲了解更多信息,请参阅 使用 Shapley 值的特征属性亚马逊 AI 公平性和可解释性白皮书.

模型预测标签配置

为了 Clarify 提取预测标签或预测分数或概率,需要设置此配置对象。 请参见以下代码:

from sagemaker.clarify import ModelPredictedLabelConfig
modellabel_config = ModelPredictedLabelConfig(probability="prob", label="label")

有关更多详细信息,请参阅 文件 在 SDK 中。

运行澄清作业

创建不同的配置后,您现在就可以触发 Clarify 处理作业了。 处理作业验证输入和参数,创建临时端点,并使用 SHAP 算法计算局部和全局特征属性。 完成后,它会删除临时端点并生成输出文件。 请参见以下代码:

clarify_processor.run_explainability(
data_config=explainability_data_config,
model_config=model_config,
explainability_config=shap_config,
model_scores=modellabel_config,
)

此步骤的运行时间取决于数据集的大小和 SHAP 生成的样本数。

可视化结果

最后,我们展示了由 Clarify 处理作业生成的局部特征属性报告结果的可视化。 输出为 JSON 行格式并经过一些处理; 您可以绘制输入文本中标记的分数,如下例所示。 条形越高,对目标标签的影响就越大。 此外,正值与目标变量的较高预测相关联,负值与较低的预测相关联。 在此示例中,模型对输入文本“Wesebach is a river of Hesse Germany”进行了预测。 预测的类别是 Natural Place,分数表明模型发现单词“river”对进行此预测而言信息量最大。 这对人类来说是直观的,通过检查更多样本,您可以确定模型是否正在学习正确的特征并按预期表现。

使用 Amazon SageMaker Clarify PlatoBlockchain 数据智能解释文本分类模型预测。垂直搜索。人工智能。

结论

在本文中,我们解释了如何使用 Clarify 来解释来自使用 SageMaker BlazingText 训练的文本分类模型的预测。 开始使用示例笔记本解释文本分类模型的预测 SageMaker BlazingText 的文本可解释性.

我们还讨论了一种更通用的设计模式,您可以在将 Clarify 与 SageMaker 内置算法结合使用时使用。 有关详细信息,请参阅 什么是机器学习预测的公平性和模型可解释性. 我们也鼓励您阅读 亚马逊 AI 公平性和可解释性白皮书,其中概述了该主题并讨论了最佳实践和限制。


作者简介

使用 Amazon SageMaker Clarify PlatoBlockchain 数据智能解释文本分类模型预测。垂直搜索。人工智能。 皮纳克帕尼格拉希 与客户合作构建机器学习驱动的解决方案,以解决 AWS 上的战略业务问题。 当不忙于机器学习时,他会去远足、读书或参加运动。

使用 Amazon SageMaker Clarify PlatoBlockchain 数据智能解释文本分类模型预测。垂直搜索。人工智能。 达瓦尔·帕特尔 是 AWS 的首席机器学习架构师。 他曾与从大型企业到中型初创公司的组织合作,解决与分布式计算和人工智能相关的问题。 他专注于深度学习,包括 NLP 和计算机视觉领域。 他帮助客户在 SageMaker 上实现高性能模型推理。

时间戳记:

更多来自 AWS机器学习