运行 SageMaker 澄清处理工作以进行偏见分析和可解释性 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

运行 SageMaker 澄清处理工作以进行偏见分析和可解释性

你使用 SageMaker 澄清处理作业,以分析训练数据中的潜在偏见来源,并检查训练模型是否存在偏见。对于分析中数据的过程 SageMaker 工作室,请参阅为训练前数据中的偏差生成报告 SageMaker 工作室. 这里的重点是训练后的偏差指标和 SHAP 值,以确保可解释性。模型预测可能是偏见的根源(例如,如果它们作出的预测更频繁地为一个群体产生负面结果而不是另一组)。 SageMaker 澄清与 SageMaker 实验以便在模型经过训练后,您可以识别要检查偏差的属性(例如收入)。 SageMaker 运行一组算法来检查训练过的模型,并为您提供关于每个属性不同类型的偏见的直观报告,例如高收入者与低收入收入者相比是否获得更积极的预测。

计算所需资源 SageMaker 澄清处理任务

在确定运行所需的计算资源时,请注意以下事项: SageMaker 澄清处理任务:

  • 处理作业可能需要几分钟或更长时间才能完成。

  • 计算解释可能比实际推断更加耗时。这包括启动计算资源的时间。

  • 计算解释可能比实际推断更密集计算。查看和监控使用 SageMaker 资源可能产生的费用。有关更多信息,请参阅 。亚马逊 SageMaker 定价.

运行澄清处理 Job

有关运行说明的示例笔记本 SageMaker 澄清 Studio 中的处理作业以检测训练后模型偏差,请参阅利用亚马逊进行可解释性和偏见检测 SageMaker 澄清.

如果您需要有关如何在亚马逊打开笔记本电脑的说明 SageMaker 工作室,请参阅创建或打开亚马逊 SageMaker Studio Notebook. 以下代码示例来自之前列出的示例笔记本。

在训练模型之后,实例化 SageMaker 使用以下命令澄清处理器:

from sagemaker import clarify clarify_processor = clarify.SageMakerClarifyProcessor( role=role, instance_count=1, instance_type='ml.c4.xlarge', sagemaker_session=session)

接下来,配置输入数据集、存储输出的位置、以DataConfig对象,请使用指定有关训练模型的信息ModelConfig,并使用提供有关预测格式的信息ModelPredictedLabelConfig.

bias_report_output_path = 's3://{}/{}/clarify-bias'.format(bucket, prefix) bias_data_config = clarify.DataConfig( s3_data_input_path=train_uri, s3_output_path=bias_report_output_path, label='Target', headers=training_data.columns.to_list(), dataset_type='text/csv') model_config = clarify.ModelConfig( model_name=model_name, instance_type='ml.c5.xlarge', instance_count=1, accept_type='text/csv') predictions_config = clarify.ModelPredictedLabelConfig(probability_threshold=0.8)

使用BiasConfig以提供有关哪些列包含方面的信息(敏感组,Sex),什么敏感特征(facet_values_or_threshold)可能是,理想的结果是什么(label_values_or_threshold)。

bias_config = clarify.BiasConfig( label_values_or_threshold=[1], facet_name='Sex', facet_values_or_threshold=[0])

您可以在处理作业中同时运行训前和训练后分析run_bias().

clarify_processor.run_bias( data_config=bias_data_config, bias_config=bias_config, model_config=model_config, model_predicted_label_config=predictions_config, pre_training_methods='all', post_training_methods='all')

在 Studio 中查看结果或从bias_report_output_pathS3 存储桶。

使用 Spark 运行澄清处理 Job

Apache Spark是用于大规模数据处理的统一分析引擎。处理大型数据集时,可以使用 Spark 处理功能 SageMaker 澄清以使您的 Clarify 处理作业能够更快地运行。要对澄清任务使用 Spark 处理,请将实例计数设置为大于 1 的数字。当每个 Clarify 处理器有多个实例时,澄清使用 Spark 分布式计算。

以下示例演示了如何使用。SageMakerClarify 处理器创建一个包含 5 个实例的 Clarify 处理器。

澄清使用 Spark 分布式处理器运行与此处理器相关联的任务。

from sagemaker import clarify clarify_processor = clarify.SageMakerClarifyProcessor( role=role, instance_count=5, instance_type='ml.c5.xlarge', max_runtime_in_seconds=1200, volume_size_in_gb=100)

如果您将 Clarine 作业配置为将本地 SHAP 值保存在ShapConfig类,Spark 将本地 SHAP 值 parallel 保存为多个零件文件。

如果您添加更多实例,我们建议您还增加模型配置中的实例数量ModelConfig对于影子端点。这是为了防止处理实例受到影子端点的瓶颈。具体来说,建议您使用 one-to-one 终端节点与处理实例的比率。

获取分析结果

在处理作业完成后,可以下载输出文件以在 Studio 中检查或可视化结果。输出目录包含以下文件:

  • analysis.json— JSON 格式的偏差指标和 SHAP 值。

  • report.ipynb— 静态笔记本可视化偏差指标和 SHAP 值。

  • explanations_shap/out.csv— 数据集中每行的本地(每个实例)SHAAP 值,格式与输入数据集相同。在每行上,输出文件都包含每个要素的 SHAP 值和预测的标注。

在分析 JSON 文件中,偏差指标和 SHAP 值分为三个单独的部分。

{ "explanations": { . . . } "pre_training_bias_metrics": { . . . } "post_training_bias_metrics": { . . . } }

SHAP 值在“explanations”部分。值对应于每个要素列的全局 SHAP 值。

"explanations": { "kernel_shap": { "label0": { "global_shap_values": { "feature_0": 0.022486410860333206, "feature_1": 0.007381025261958729, "feature_2": 0.006843906804137847 }, "expected_value": 0.508233428001 } } }

偏差指标位于训练前和训练后偏差指标部分。

{ "post_training_bias_metrics": { "label": "target", "label_value_or_threshold": "1", "facets": { "feature_2": [ { "value_or_threshold": "1", "metrics": [ { "name": "DI", "description": "Disparate Impact (DI)", "value": 0.711340206185567 }, { "name": "DCR", "description": "Difference in Conditional Rejections (DCR)", "value": -0.34782608695652184 } { . . . } ] } ] } } }

有关偏差指标和 SHAP 值以及如何对其进行解析的更多信息,请参阅亚马逊 AI 公平性和可解释性白皮书.

报告笔记本中提供了最高 SHAP 值的条形图和带有偏差指标的表格。