Migliorare le spiegazioni basate su caratteristiche

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:

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