改进基于特征的说明

使用自定义训练的模型时,您可以配置特定参数来改进说明。本指南介绍如何检查从 Vertex Explainable AI 获取的误差说明以及如何调整 Vertex Explainable AI 配置以缓解误差。

如果您想要将 Vertex Explainable AI 与 AutoML 表格模型搭配使用,则无需执行任何配置;Vertex AI 会自动为 Vertex Explainable AI 配置模型。请跳过本文档并阅读获取说明

Vertex Explainable AI 特征归因方法均基于 Shapley 值的变体。由于 Shapley 值的计算开销非常大,因此 Vertex Explainable AI 会提供近似值,而不是确切值。

您可以通过更改以下输入来减少近似误差并接近确切值:

  • 增加积分步数或路径数。
  • 更改您选择的输入基准。
  • 添加更多输入基准。将其他基准与积分梯度和 XRAI 方法配合使用时会增加延迟时间。将其他基准与采样 Shapley 方法配合使用时不会增加延迟时间。

检查说明是否存在错误

向 Vertex Explainable AI 请求并接收说明后,您可以查看近似误差的说明。如果说明中有很高的近似误差,则该说明可能不太可靠。本部分介绍了检查误差的方法。

检查 approximationError 字段

对于每个 Attribution,Vertex Explainable AI 会在 approximationError 字段中返回近似误差。如果近似误差超过 0.05,请考虑调整 Vertex Explainable AI 配置。

对于积分梯度方法,我们通过将特征归因的总和与输入得分与基准得分的预测值之间的差异进行比较,从而计算近似误差。对于积分梯度方法,特征归因是基准和输入之间梯度值的积分的近似值。我们使用高斯求积规则来计算积分的近似值,因为它比黎曼和方法更准确。

检查预测结果和基准输出之间的差异

对于每个 Attribution,Vertex Explainable AI 会返回 instanceOutputValue(表示特征归因的预测输出部分)和 baselineOutputValue(表示如果是对输入基准(而非实际输入实例)上执行预测,预测输出的此部分会是什么)。

如果对于任何归因,instanceOutputValuebaselineOutputValue 之间的误差小于 0.05,您可能需要更改输入基准

调整配置

以下各部分介绍了调整 Vertex Explainable AI 配置以减少误差的方法。要进行以下任何更改,您必须:使用更新后的 ExplanationSpec 配置新的 Model 资源,或者替换现有 ModelExplanationSpec(具体方法是将其重新部署到 Endpoint 或获取新的批量预测结果)。

增加步数或路径数

如需减少近似误差,您可以增加:

调整基准

输入基准表示不提供其他任何信息的特征。表格模型的基准可以是与训练数据相关的中间值、最小值、最大值或随机值。同样,对于图片模型,基准可以是黑色图片、白色图片、灰色图片或具有随机像素值的图片。

配置 Vertex Explainable AI 时,您可以选择指定 input_baselines 字段。否则,Vertex AI 会为您选择输入基准。如果您遇到本指南前面部分中所述的问题,则可能需要调整 Model 的每个输入的 input_baselines

一般来说:

  • 从一个表示中间值的基准开始。
  • 将此基准更改为表示随机值的基准。
  • 请尝试使用两个基准,分别表示最小值和最大值。
  • 添加另一个表示随机值的基准。

表格数据示例

以下 Python 代码为使用表格数据训练的假设 TensorFlow 模型创建 ExplanationMetadata 消息

请注意,input_baselines 是可以指定多个基准的列表。此示例仅设置了一个基准。该基准是训练数据的中间值列表(本例中为 train_data)。

explanation_metadata = {
    "inputs": {
        "FEATURE_NAME": {
            "input_tensor_name": "INPUT_TENSOR_NAME",
            "input_baselines": [train_data.median().values.tolist()],
            "encoding": "bag_of_features",
            "index_feature_mapping": train_data.columns.tolist()
        }
    },
    "outputs": {
        "OUTPUT_NAME": {
            "output_tensor_name": "OUTPUT_TENSOR_NAME"
        }
    }
}

如需了解使用此 ExplanationMetadata 的更多背景信息,请参阅为自定义模型配置说明

如需设置代表最小值和最大值的两个基准,请按如下所示设置 input_baselines[train_data.min().values.tolist(), train_data.max().values.tolist()]

图片数据示例

以下 Python 代码为使用图片数据训练的假设 TensorFlow 模型创建 ExplanationMetadata 消息

请注意,input_baselines 是可以指定多个基准的列表。此示例仅设置了一个基准。基准是随机值的列表。如果训练数据集中的图片包含大量黑白字符,则可以使用图片基准的随机值。

否则,请将 input_baselines 设为 [0, 1] 以表示黑白图片。

random_baseline = np.random.rand(192,192,3)

explanation_metadata = {
    "inputs": {
        "FEATURE_NAME": {
            "input_tensor_name": "INPUT_TENSOR_NAME",
            "modality": "image",
            "input_baselines": [random_baseline.tolist()]
        }
    },
    "outputs": {
        "OUTPUT_NAME": {
            "output_tensor_name": "OUTPUT_TENSOR_NAME"
        }
    }
}

后续步骤

  • 按照配置说明指南来实现本页面介绍的所有配置更改。