Quando lavori con modelli addestrati personalizzati, puoi configurare parametri specifici per migliorare le spiegazioni. Questa guida descrive come ispezionare le spiegazioni che ottieni da Vertex Explainable AI per individuare gli errori e come modificare la configurazione di Vertex Explainable AI per mitigarli.
Se vuoi utilizzare Vertex Explainable AI con un modello tabulare AutoML, non devi eseguire alcuna configurazione. Vertex AI configura automaticamente il modello per Vertex Explainable AI. Salta questo documento e leggi Ottenere spiegazioni.
I metodi di attribuzione delle caratteristiche di Vertex Explainable AI si basano tutti su varianti dei valori di Shapley. Poiché i valori di Shapley sono molto costosi dal punto di vista computazionale, Vertex Explainable AI fornisce approssimazioni anziché i valori esatti.
Puoi ridurre l'errore di approssimazione e avvicinarti ai valori esatti modificando i seguenti input:
- Aumentando il numero di passaggi per l'integrale o il numero di percorsi.
- Modifica delle linee di base di input selezionate.
- Aggiunta di altre basi degli input. Con i metodi dei gradienti integrati e XRAI, l'utilizzo di ulteriori immagini di riferimento aumenta la latenza. L'utilizzo di baseline aggiuntive con il metodo del valore di Shapley campionato non aumenta la latenza.
Esaminare le spiegazioni dell'errore
Dopo aver richiesto e ricevuto spiegazioni da Vertex Explainable AI, puoi controllare le spiegazioni per l'errore di approssimazione. Se le spiegazioni presentano un errore di approssimazione elevato, potrebbero non essere affidabili. Questa sezione descrive diversi modi per verificare la presenza di errori.
Controlla il campo approximationError
Per ogni
Attribution
,
Vertex Explainable AI restituisce l'errore di approssimazione nel campo approximationError
. Se
l'errore di approssimazione supera 0,05, valuta la possibilità di modificare la configurazione di Vertex Explainable AI.
Per la tecnica dei gradienti integrati, calcoliamo l'errore di approssimazione confrontando la somma delle attribuzioni delle caratteristiche con la differenza tra i valori previsti per il punteggio di input e il punteggio di base. Per la tecnica dei gradienti integrati, l'attribuzione delle caratteristiche è un'approssimazione dell'integrale dei valori del gradiente tra la base e l'input. Utilizziamo la regola di quadratura gaussiana per approssimare l'integrale perché è più precisa dei metodi di somma di Riemann.
Controllare la differenza tra le inferenze e l'output di base
Per ogni
Attribution
,
Vertex Explainable AI restituisce un instanceOutputValue
, che rappresenta la parte dell'output di inferenza a cui si riferiscono le attribuzioni delle caratteristiche, e un baselineOutputValue
, che rappresenta l'aspetto di questa parte dell'output di inferenza se l'inferenza fosse stata eseguita su una baseline di input anziché sull'istanza di input effettiva.
Se la differenza tra instanceOutputValue
e baselineOutputValue
è
inferiore a 0,05 per qualsiasi attribuzione, potresti dover modificare le
baseline di input.
Modificare la configurazione
Le sezioni seguenti descrivono i modi per modificare la configurazione di Vertex Explainable AI
per ridurre gli errori. Per apportare una delle seguenti modifiche, devi configurare una nuova risorsa
Model
con un ExplanationSpec
aggiornato o ignorare il ExplanationSpec
della risorsa
Model
esistente eseguendo di nuovo il deployment in una risorsa Endpoint
o ottenendo nuove inferenze batch.
Aumentare i passi o i percorsi
Per ridurre l'errore di approssimazione, puoi aumentare:
- il numero di percorsi per Shapley campionato
(
SampledShapleyAttribution.pathCount
) - il numero di passaggi per l'integrale per i gradienti integrati
(
IntegratedGradientsAttribution.stepCount
) o XRAI (XraiAttribution.stepCount
)
Regolare le linee di base
Le basi di input rappresentano una caratteristica che non fornisce informazioni aggiuntive. Le basi per i modelli tabulari possono essere valori mediani, minimi, massimi o casuali in relazione ai dati di addestramento. Allo stesso modo, per i modelli di immagini, le basi possono essere un'immagine nera, un'immagine bianca, un'immagine grigia o un'immagine con valori di pixel casuali.
Quando configuri Vertex Explainable AI, puoi specificare facoltativamente il
campo input_baselines
.
In caso contrario, Vertex AI sceglie le baseline di input per te. Se riscontri i problemi descritti nelle sezioni precedenti di questa guida, ti consigliamo di regolare il input_baselines
per ogni input del tuo Model
.
In generale:
- Inizia con una linea di base che rappresenti i valori mediani.
- Modifica questa base di riferimento in modo che rappresenti valori casuali.
- Prova due baseline, che rappresentano i valori minimo e massimo.
- Aggiungi un'altra base di riferimento che rappresenti valori casuali.
Esempio per i dati tabulari
Il seguente codice Python crea un ExplanationMetadata
messaggio per un ipotetico
modello TensorFlow addestrato su dati tabulari.
Tieni presente che input_baselines
è un elenco in cui puoi specificare più
valori di base. Questo esempio imposta una sola base di riferimento. La base è un elenco di valori mediani
per i dati di addestramento (train_data
in questo esempio).
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"
}
}
}
Per ulteriori informazioni su come utilizzare questo ExplanationMetadata
, consulta Configurazione delle spiegazioni per i modelli addestrati personalizzati.
Per impostare due baseline che rappresentano i valori minimo e massimo, imposta
input_baselines
come segue:
[train_data.min().values.tolist(), train_data.max().values.tolist()]
Esempio per i dati immagine
Il seguente codice Python crea un messaggio ExplanationMetadata
per un ipotetico modello TensorFlow addestrato su dati delle immagini.
Tieni presente che input_baselines
è un elenco in cui puoi specificare più
valori di base. Questo esempio imposta una sola base di riferimento. La base di riferimento è un elenco di valori casuali. L'utilizzo di valori casuali per una baseline dell'immagine è un buon approccio se le
immagini nel set di dati di addestramento contengono molti elementi in bianco e nero.
In caso contrario, imposta input_baselines
su [0, 1]
per rappresentare le immagini in bianco e nero.
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"
}
}
}
Passaggi successivi
- Segui la guida per configurare le spiegazioni per implementare le modifiche alla configurazione descritte in questa pagina.