Migliorare le spiegazioni basate su caratteristiche

Quando utilizzi modelli con addestramento personalizzato, puoi configurare parametri specifici 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 devi eseguire alcuna configurazione; Vertex AI configura automaticamente il modello per Vertex Explainable AI. Salta questo documento e leggi Ricevere 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 dispendiosi in termini di risorse di calcolo, Vertex Explainable AI fornisce approssimazione anziché 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 degli 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 controllare le spiegazioni per verificare la presenza di errori di approssimazione. Se le spiegazioni presentano un errore di approssimazione elevato, le spiegazioni 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, ti consigliamo 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 riferimento. Per la tecnica dei gradienti integrati, l'attribuzione delle funzionalità è un'approssimazione dell'integrale dei valori del gradiente tra il valore di riferimento e l'input. Utilizziamo la regola della quadratura di Gauss per approssimare l'integrale perché è più precisa 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 sarebbe stata se la previsione fosse stata eseguita su un valore di riferimento dell'input anziché sull'istanza di input effettiva.

Se la differenza tra instanceOutputValue e baselineOutputValue è inferiore a 0,05 per qualsiasi attribuzione, potrebbe essere necessario modificare le linee di base di input.

Modificare la configurazione

Le sezioni seguenti descrivono i modi per modificare la configurazione dell'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:

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. 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 il campo input_baselines. In caso contrario, Vertex AI sceglie le linee di base di input per te. Se riscontri i problemi descritti nelle sezioni precedenti di questa guida, ti consigliamo di modificare il valore 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 linee di base, 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ù linee di base. Questo esempio imposta una sola linea di riferimento. La base di riferimento è un elenco di valori mediana 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ù linee di base. Questo esempio imposta una sola linea di riferimento. La base di riferimento è un elenco di valori random. L'utilizzo di valori casuali per un riferimento di immagini è un buon approccio se le immagini nel set di dati di addestramento contengono molto 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