Améliorer les explications

Lorsque vous travaillez avec des modèles personnalisés, vous pouvez configurer des paramètres spécifiques pour améliorer les explications. Ce guide décrit comment inspecter les explications que vous obtenez de la part de Vertex Explainable AI dans le but d'identifier des erreurs. Il explique également comment ajuster votre configuration de Vertex Explainable AI pour limiter les erreurs.

Si vous souhaitez utiliser Vertex Explainable AI avec un modèle tabulaire AutoML, aucune configuration n'est requise. Vertex AI configure automatiquement le modèle pour Vertex Explainable AI. Ignorez ce document et consultez la page Obtenir des explications.

Les méthodes d'attribution des caractéristiques Vertex Explainable AI s'appuient sur des variantes de valeurs de Shapley. Étant donné que les valeurs de Shapley sont très coûteuses en calcul, Vertex Explainable AI fournit des approximations au lieu de valeurs exactes.

Vous pouvez réduire l'erreur d'approximation et vous rapprocher des valeurs exactes en modifiant les entrées suivantes :

  • Augmentez le nombre d'étapes d'intégration ou de chemins.
  • Modifiez les références en entrée sélectionnées.
  • Ajoutez d'autres références en entrée. Avec les méthodes des gradients intégrés et XRAI, l'utilisation de références supplémentaires augmente la latence. L'utilisation de références supplémentaires avec la méthode d'échantillonnage des valeurs de Shapley n'augmente pas la latence.

Détecter des erreurs dans les explications

Une fois que vous avez demandé et reçu des explications de Vertex Explainable AI, vous pouvez vérifier les explications afin d'identifier toute erreur d'approximation. Si les explications présentent une erreur d'approximation élevée, les explications peuvent ne pas être fiables. Cette section décrit plusieurs manières de rechercher des erreurs.

Vérifier le champ approximationError

Pour chaque Attribution, Vertex Explainable AI renvoie une erreur d'approximation dans le champ approximationError. Si votre erreur d'approximation dépasse 0,05, envisagez d'ajuster votre configuration de Vertex Explainable AI.

Pour la technique des gradients intégrés, nous calculons l'erreur d'approximation en comparant la somme des attributions de caractéristiques à la différence entre les valeurs prédites pour le score d'entrée et le score de référence. Pour la technique des gradients intégrés, l'attribution des caractéristiques est une approximation de l'intégrale des valeurs de gradient entre la référence et l'entrée. Nous utilisons la règle de quadrature de Gauss pour obtenir une approximation de l'intégrale, car elle est plus précise que les méthodes de sommes de Riemann.

Vérifier la différence entre les prédictions et les résultats de référence

Pour chaque Attribution, Vertex Explainable AI renvoie une valeur instanceOutputValue, qui représente la partie du résultat de la prédiction pour laquelle les attributions de caractéristiques sont demandées, et une valeur baselineOutputValue, qui représente cette partie des résultats de prédiction si la prédiction a été effectuée sur une référence d'entrée plutôt que sur l'instance d'entrée réelle.

Si la différence entre instanceOutputValue et baselineOutputValue est inférieure à 0,05 pour les attributions, vous devrez peut-être modifier vos références d'entrée.

Ajuster la configuration

Les sections suivantes décrivent comment ajuster votre configuration de Vertex Explainable AI pour réduire l'erreur. Pour effectuer l'une des modifications suivantes, vous devez configurer un nouveauModel ressource avec un élément ExplanationSpec mis à jour ou remplacer la ressource ExplanationSpec de votre Model existant en redéployant la ressource Endpoint ou en obtenant de nouvelles prédictions par lot.

Augmenter le nombre d'étapes ou de chemins

Pour réduire l'erreur d'approximation, vous pouvez augmenter :

Ajuster les références

Les références en entrée représentent une caractéristique qui ne fournit pas d'informations supplémentaires. Les références des modèles tabulaires peuvent être des valeurs médianes, minimales, maximales ou aléatoires par rapport à vos données d'entraînement. De même, pour les modèles d'images, les références peuvent être une image noire, une image blanche, une image grise ou une image avec des valeurs de pixels aléatoires.

Lorsque vous configurez Vertex Explainable AI, vous pouvez éventuellement spécifier le champ input_baselines. Sinon, Vertex AI choisit des valeurs de référence d'entrée pour . Si vous rencontrez les problèmes décrits dans les sections précédentes de ce guide, vous pouvez ajuster input_baselines pour chaque entrée de votre Model.

En général :

  • Commencez par une référence représentant les valeurs médianes.
  • Remplacez cette référence par une valeur aléatoire.
  • Essayez deux références représentant les valeurs minimales et maximales.
  • Ajoutez une autre référence représentant des valeurs aléatoires.

Exemple de données tabulaires

Le code Python suivant crée un message ExplanationMetadata pour un modèle TensorFlow hypothétique entraîné sur des données tabulaires.

Notez que input_baselines correspond à une liste dans laquelle vous pouvez spécifier plusieurs références. Cet exemple définit une seule référence. La référence correspond à une liste de valeurs médianes pour les données d'entraînement (train_data dans cet exemple).

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"
        }
    }
}

Pour plus de contexte sur l'utilisation de ces ExplanationMetadata, consultez la section Configurer des explications pour les modèles personnalisés.

Pour définir deux références représentant des valeurs minimales et maximales, définissez input_baselines comme suit : [train_data.min().values.tolist(), train_data.max().values.tolist()]

Exemple de données d'image

Le code Python suivant crée un message ExplanationMetadata pour un modèle TensorFlow hypothétique entraîné sur des données d'image.

Notez que input_baselines correspond à une liste dans laquelle vous pouvez spécifier plusieurs références. Cet exemple définit une seule référence. La référence correspond à une liste de valeurs aléatoires. L'utilisation de valeurs aléatoires pour une référence d'image est une bonne approche si les images de votre ensemble de données d'entraînement contiennent beaucoup de zones en noir et blanc.

Sinon, définissez input_baselines sur [0, 1] pour représenter les images en noir et blanc.

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"
        }
    }
}

Étape suivante