改善特徵式解釋

使用自訂訓練模型時,您可以設定特定參數來改善說明。本指南說明如何檢查 Vertex Explainable AI 提供的錯誤說明,以及如何調整 Vertex Explainable AI 設定來減少錯誤。

如果您想搭配 AutoML 表格型模型使用 Vertex Explainable AI,則無需執行任何設定;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 設定。

針對整合梯度技術,我們會比較特徵歸因值的總和,以及輸入分數和基準分數的預測值差異,藉此計算近似誤差。就積分梯度技巧而言,特徵歸因是基準和輸入值之間梯度值積分的近似值。我們使用 高斯積分法規則來近似積分,因為這比 Riemann 和方法更準確。

查看預測結果與基準輸出結果的差異

對於每個 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"
        }
    }
}

後續步驟

  • 請按照設定說明的指南,實作本頁所述的任何設定變更。