Migliorare le spiegazioni basate su caratteristiche

Quando lavori con modelli con addestramento personalizzato, puoi configurare modelli parametri per migliorare le spiegazioni. Questa guida descrive come ispezionare le spiegazioni fornite da Vertex Explainable AI per rilevare errori e come modificare la configurazione di Vertex Explainable AI per ridurli.

Se vuoi utilizzare Vertex Explainable AI con un modello tabulare AutoML, non dovrai eseguire alcuna configurazione, Vertex AI configura automaticamente il modello per Vertex Explainable AI. Salta questo documento e leggilo Recupero delle 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 del calcolo, Vertex Explainable AI fornisce delle approssimazioni anziché dei valori esatti.

Puoi ridurre l'errore di approssimazione e avvicinarti ai valori esatti modificando i seguenti input:

  • Aumentare il numero di passaggi per l'integrale o il numero di percorsi.
  • Modifica delle linee di base di input selezionate.
  • Aggiunta di altre basi di input. Con i metodi di gradienti integrati e XRAI, l'utilizzo di soglie di riferimento aggiuntive aumenta la latenza. L'utilizzo di linee di base aggiuntive con il metodo del valore di Shapley campionato non aumenta la latenza.

Esamina le spiegazioni degli errori

Dopo aver richiesto e ricevuto spiegazioni da Vertex Explainable AI, puoi consultare le spiegazioni per un errore di approssimazione. Se le spiegazioni presentano un errore di approssimazione elevato, le spiegazioni potrebbero non essere affidabili. Questa sezione descrive diversi modi per verifica che non ci siano errori.

Controlla il campo approximationError

Per ogni Attribution, Vertex Explainable AI restituisce un errore di approssimazione nel campo approximationError. Se l'errore di approssimazione supera 0,05, ti consigliamo di modificare la configurazione di Vertex Explainable AI.

Per la tecnica dei gradienti integrati, calcoliamo l'errore di approssimazione per Confrontando la somma delle attribuzioni delle caratteristiche con la differenza tra le i valori del punteggio di input e del punteggio di riferimento. Per la tecnica dei gradienti integrati, l'attribuzione delle caratteristiche è un'approssimazione dell'integrale dei valori del gradiente. tra la base di riferimento e l'input. Utilizziamo regola della quadratura gaussiana per è un'approssimazione dell'integrale perché è più accurato dei metodi di somma di Riemann.

Controllare la differenza tra le previsioni e l'output di riferimento

Per ogni Attribution, Vertex Explainable AI restituisce un instanceOutputValue, che rappresenta la parte dell' output della previsione a cui si riferiscono le attribuzioni delle caratteristiche, e un baselineOutputValue, che rappresenta la parte dell'output della previsione che si otterrebbe se la previsione fosse eseguita su un valore di riferimento dell'input anziché sull'istanza di input effettiva.

Se la differenza tra instanceOutputValue e baselineOutputValue è meno di 0,05 per qualsiasi attribuzione, potrebbe essere necessario modificare basi 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 risorsaModel con un ExplanationSpec aggiornato o sostituire il ExplanationSpec del tuoModel esistente eseguendone il nuovo deployment in una risorsa Endpoint o ottenendo nuove previsioni collettive.

Aumentare i passaggi o i percorsi

Per ridurre l'errore di approssimazione, puoi aumentare:

Regola basi di riferimento

Le basi di input rappresentano una caratteristica che non fornisce informazioni aggiuntive. Le basi per i modelli tabulari possono essere mediana, minima, massima o casuale rispetto ai dati di addestramento. Analogamente, 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 Campo input_baselines: In caso contrario, Vertex AI sceglie le linee di base di input per te. Se riscontrati i problemi descritti nelle sezioni precedenti di questa guida, potresti voler regolare il input_baselines per ogni input di 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 basi di riferimento, che rappresentano i valori minimo e massimo.
  • Aggiungi un'altra base di riferimento che rappresenta 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ù linee di base. Questo esempio imposta una sola linea di base. Il valore di riferimento è un elenco di valori medi 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 la sezione Configurazione delle spiegazioni per i modelli addestrati personalizzati.

Per impostare due linee di base 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 delle immagini

Il seguente codice Python crea un ExplanationMetadata messaggio per un ipotetico modello TensorFlow addestrato su dati di immagini.

Tieni presente che input_baselines è un elenco in cui puoi specificare più base di riferimento. Questo esempio imposta una sola linea di base. La base di riferimento è un elenco di valori random. L'utilizzo di valori casuali per una base di riferimento di un'immagine è un buon approccio nel caso in cui nel set di dati di addestramento contengono molte immagini 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 la configurazione spiegazioni per implementare eventuali modifiche alla configurazione descritte in questa pagina.