Mejorar las explicaciones basadas en características

Cuando trabajes con modelos con entrenamiento personalizado, podrás configurar parámetros específicos para mejorar las explicaciones. En esta guía se describe cómo inspeccionar las explicaciones que obtienes de Vertex Explainable AI para detectar errores y cómo ajustar la configuración de Vertex Explainable AI para mitigarlos.

Si quieres usar Vertex Explainable AI con un modelo tabular de AutoML, no tienes que hacer ninguna configuración. Vertex AI configura automáticamente el modelo para Vertex Explainable AI. Salta este documento y consulta Cómo obtener explicaciones.

Todos los métodos de atribución de funciones de Vertex Explainable AI se basan en variantes de los valores de Shapley. Como los valores de Shapley son muy costosos desde el punto de vista computacional, Vertex Explainable AI proporciona aproximaciones en lugar de los valores exactos.

Para reducir el error de aproximación y acercarte a los valores exactos, puedes cambiar los siguientes datos:

  • Aumentar el número de pasos integrales o el número de rutas.
  • Cambiar las líneas de base de entrada que selecciones.
  • Añadir más líneas de base de entrada. Con los métodos de degradados integrados y XRAI, el uso de líneas de base adicionales aumenta la latencia. Usar líneas de base adicionales con el método de Shapley muestreado no aumenta la latencia.

Consultar las explicaciones de los errores

Después de solicitar y recibir explicaciones de Vertex Explainable AI, puedes consultar las explicaciones para ver si hay errores de aproximación. Si las explicaciones tienen un error de aproximación alto, es posible que no sean fiables. En esta sección se describen varias formas de comprobar si hay errores.

Consulta el campo approximationError

Por cada Attribution, Vertex Explainable AI devuelve el error de aproximación en el campo approximationError. Si el error de aproximación supera 0,05, plantéate ajustar la configuración de Vertex Explainable AI.

En el caso de la técnica de gradientes integrados, calculamos el error de aproximación comparando la suma de las atribuciones de las características con la diferencia entre los valores predichos de la puntuación de entrada y la puntuación de referencia. En la técnica de gradientes integrados, la atribución de características es una aproximación de la integral de los valores de gradiente entre la línea de base y la entrada. Usamos la regla de cuadratura gaussiana para aproximar la integral porque es más precisa que los métodos de suma de Riemann.

Comprobar la diferencia entre las inferencias y la salida de referencia

Por cada Attribution, Vertex Explainable AI devuelve un instanceOutputValue, que representa la parte de la salida de inferencia a la que corresponden las atribuciones de la función, y un baselineOutputValue, que representa la parte de la salida de inferencia que se obtendría si la inferencia se realizara en una línea de base de entrada en lugar de en la instancia de entrada real.

Si la diferencia entre instanceOutputValue y baselineOutputValue es inferior a 0,05 en alguna atribución, puede que tengas que cambiar las líneas de base de entrada.

Ajustar la configuración

En las siguientes secciones se describen formas de ajustar la configuración de Vertex Explainable AI para reducir los errores. Para hacer cualquiera de los siguientes cambios, debes configurar un recurso ModelnuevoExplanationSpec con un recurso ExplanationSpecModel actualizado o anular el recurso ExplanationSpecModel actualExplanationSpecModelExplanationSpecModelExplanationSpecModelExplanationSpecModelExplanationSpecModelExplanationSpecModelExplanationSpecModelExplanationSpecModelEndpoint

Aumentar los pasos o las rutas

Para reducir el error de aproximación, puede aumentar lo siguiente:

Ajustar líneas de base

Las líneas de base de entrada representan una función que no proporciona información adicional. Las líneas de base de los modelos tabulares pueden ser la mediana, el mínimo, el máximo o valores aleatorios en relación con los datos de entrenamiento. Del mismo modo, en el caso de los modelos de imagen, las líneas de base pueden ser una imagen negra, blanca o gris, o una imagen con valores de píxeles aleatorios.

Cuando configures Vertex Explainable AI, puedes especificar el campo input_baselines. De lo contrario, Vertex AI elegirá las líneas de base de entrada por ti. Si tienes los problemas que se describen en las secciones anteriores de esta guía, te recomendamos que ajustes el input_baselines de cada entrada de tu Model.

En general:

  • Empieza con una línea de referencia que represente los valores medios.
  • Cambia esta línea de base por una que represente valores aleatorios.
  • Prueba con dos líneas de base que representen los valores mínimo y máximo.
  • Añade otra línea de base que represente valores aleatorios.

Ejemplo de datos tabulares

El siguiente código de Python crea un ExplanationMetadata mensaje para un hipotético modelo de TensorFlow entrenado con datos tabulares.

Ten en cuenta que input_baselines es una lista en la que puedes especificar varias líneas de base. En este ejemplo, se define solo una línea de base. La línea de base es una lista de valores medios de los datos de entrenamiento (train_data en este ejemplo).

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

Consulta Configurar explicaciones para modelos con entrenamiento personalizado para obtener más información sobre cómo usar esta ExplanationMetadata.

Para definir dos líneas de base que representen los valores mínimo y máximo, configura input_baselines de la siguiente manera: [train_data.min().values.tolist(), train_data.max().values.tolist()]

Ejemplo de datos de imágenes

El siguiente código de Python crea un ExplanationMetadata mensaje para un hipotético modelo de TensorFlow entrenado con datos de imágenes.

Ten en cuenta que input_baselines es una lista en la que puedes especificar varias líneas de base. En este ejemplo, se define solo una línea de base. La línea de base es una lista de valores aleatorios. Usar valores aleatorios para una línea de base de imagen es una buena opción si las imágenes de tu conjunto de datos de entrenamiento contienen mucho blanco y negro.

De lo contrario, asigna el valor [0, 1] a input_baselines para representar imágenes en blanco y negro.

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

Siguientes pasos

  • Sigue la guía para configurar explicaciones e implementa los cambios de configuración que se describen en esta página.