使用自訂訓練模型時,您可以設定特定參數來改善說明。本指南說明如何檢查 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
,代表如果推論是針對輸入基準而非實際輸入執行個體進行,推論輸出結果的這部分會是什麼。
如果任何歸因的 instanceOutputValue
和 baselineOutputValue
差異小於 0.05,您可能需要變更輸入基準。
調整設定
以下各節說明如何調整 Vertex Explainable AI 設定,以減少錯誤。如要進行下列任一變更,您必須使用更新的 ExplanationSpec
設定新的 Model
資源,或將現有 Model
的 ExplanationSpec
重新部署至 Endpoint
資源或取得新的批次推論,藉此覆寫 ExplanationSpec
。
增加步數或路徑
如要減少近似值誤差,可以增加下列值:
- Sampled 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"
}
}
}
後續步驟
- 請按照設定說明指南操作,實作本頁面所述的任何設定變更。