改善特徵式解釋

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

如要搭配使用 Vertex Explainable AI 和 AutoML 表格模型,無須進行任何設定,Vertex AI 會自動為 Vertex Explainable AI 設定模型。略過這份文件,並參閱「取得說明」。

Vertex Explainable AI 特徵歸因方法全都是以 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 資源或取得新的批次推論,藉此覆寫 ExplanationSpec

增加步數或路徑

如要減少近似值誤差,可以增加下列值:

調整基準線

輸入基準代表未提供額外資訊的特徵。表格模型的基準可以是中位數、最小值、最大值或隨機值 (以訓練資料為依據)。同樣地,對於圖片模型,基準可以是黑色圖片、白色圖片、灰色圖片,或是具有隨機像素值的圖片。

設定 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"
        }
    }
}

後續步驟

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