使用自訂訓練模型時,您可以設定特定參數來改善說明。本指南說明如何檢查 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
,代表如果預測是針對輸入基準而非實際輸入例項執行,預測輸出的這部分會是什麼。
如果 instanceOutputValue
和 baselineOutputValue
之間的差異小於任何歸因值的 0.05,您可能需要變更輸入基準值。
調整設定
以下各節說明如何調整 Vertex Explainable AI 設定,以減少錯誤。如要進行下列任何變更,您必須使用更新的 ExplanationSpec
設定新的 Model
資源,或是將現有 Model
的 ExplanationSpec
覆寫,方法是將其重新部署至 Endpoint
資源,或是取得新的批次預測結果。
增加步驟或路徑
如要減少近似值誤差,您可以增加:
- Shapley 取樣路徑數量 (
SampledShapleyAttribution.pathCount
) - 積分梯度 (
IntegratedGradientsAttribution.stepCount
) 或 XRAI (XraiAttribution.stepCount
) 的積分步驟數
調整基準線
輸入基準代表未提供額外資訊的特徵。表格模型的基準可以是中位數、最小值、最大值或隨機值 (以訓練資料為依據)。同樣地,對於圖像模型,基準可以是黑色圖片、白色圖片、灰色圖片,或含有隨機像素值的圖片。
設定 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"
}
}
}
後續步驟
- 請按照設定說明的指南,實作本頁所述的任何設定變更。