Logotipo de Zephyrnet

Explicabilidad de ML con el depurador de Amazon SageMaker

Fecha:

El aprendizaje automático (ML) afecta a las industrias de todo el mundo, desde la industria de servicios financieros (FSI) y la fabricación hasta los vehículos autónomos y la exploración espacial. ML ya no es solo una tecnología de aspiración exclusiva de instituciones académicas y de investigación; se ha convertido en una tecnología convencional que tiene el potencial de beneficiar a organizaciones de todos los tamaños. Sin embargo, la falta de transparencia en el proceso de LD y la naturaleza de caja negra de los modelos resultantes es un obstáculo para la adopción mejorada del LD en industrias como los servicios financieros y la atención médica.

Para un equipo que desarrolla modelos de LA, la responsabilidad de explicar las predicciones del modelo aumenta a medida que aumenta el impacto de las predicciones en los resultados comerciales. Por ejemplo, es probable que los consumidores acepten una recomendación de película de un modelo de ML sin necesidad de una explicación. El consumidor puede o no estar de acuerdo con la recomendación, pero la necesidad de justificar la predicción es relativamente baja para los desarrolladores de modelos. Por el contrario, si un modelo de ML predice si se aprueba una solicitud de préstamo de crédito o si se administra la dosis del medicamento de un paciente, los desarrolladores del modelo son responsables de explicar la predicción. Deben abordar preguntas como "¿Por qué se rechazó mi préstamo?" o "¿Por qué debo tomar 10 mg de este medicamento?" Por esta razón, es importante ganar visibilidad en el proceso de capacitación y desarrollar modelos de ML explicables en humanos.

Amazon SageMaker es un servicio totalmente administrado que permite a los desarrolladores y científicos de datos construir, entrenar e implementar rápida y fácilmente modelos ML a cualquier escala. Depurador de Amazon SageMaker es una capacidad dentro de Amazon SageMaker que proporciona automáticamente visibilidad en el proceso de capacitación del modelo para análisis en tiempo real y fuera de línea. Amazon SageMaker Debugger guarda el estado del modelo interno a intervalos periódicos, que puede analizar en tiempo real tanto durante el entrenamiento como fuera de línea una vez que se completa el entrenamiento. El depurador de Amazon SageMaker identifica problemas durante la capacitación del modelo y proporciona información sobre las predicciones que hace el modelo capacitado. Amazon SageMaker Debugger viene con un conjunto de reglas incorporadas que detectan problemas comunes de capacitación y monitorean condiciones comunes críticas para una capacitación exitosa También puedes autor reglas personalizadas para monitorear tu trabajo de entrenamiento.

Esta publicación analiza la explicabilidad de ML, la popular herramienta de explicabilidad SHAP (SHapley Additive exPlanation) y la integración nativa de SHAP con Amazon SageMaker Debugger. Como parte de esta publicación, proporcionamos un cuaderno detallado que muestra cómo usar el depurador de Amazon SageMaker para proporcionar explicaciones en un caso de uso de servicios financieros, en el que el modelo predice si los ingresos de una persona son superiores o inferiores a $ 50,000. Para esta publicación, usamos el UCI Adulto conjunto de datos

ML explicabilidad

La explicabilidad es la medida en que puede explicar la mecánica interna de un ML o sistema de aprendizaje profundo en términos humanos. Está en contraste con el concepto de cuadro negro, en el que incluso los diseñadores no pueden explicar por qué un AI llega a una decisión específica.

Hay dos tipos de explicabilidad: global y local. La explicabilidad global tiene como objetivo hacer que el modelo ML general sea transparente y completo, mientras que la explicabilidad local se centra en explicar las predicciones individuales del modelo.

La capacidad de explicar un modelo de ML y sus predicciones genera confianza y mejora la adopción de ML: el modelo ya no es una caja negra que hace predicciones en el vacío. Esto aumenta el nivel de comodidad de los consumidores de las predicciones del modelo. Para los propietarios de modelos, la capacidad de comprender la incertidumbre inherente a los modelos ML ayuda a depurar el modelo cuando las cosas salen mal y a mejorar el modelo para obtener mejores resultados comerciales.

Esta publicación considera dos técnicas de explicabilidad: importancia de la característica y SHAP.

Importancia de la característica

La importancia de la característica es una técnica que explica las características que componen los datos de entrenamiento utilizando una puntuación (importancia). Indica cuán útil o valiosa es la característica en relación con otras características. En el caso de uso de la predicción de ingresos individuales utilizando XGBoost, la puntuación de importancia indica el valor de cada característica en la construcción de los árboles de decisión potenciados dentro del modelo. Cuanto más un modelo usa un atributo para tomar decisiones clave con árboles de decisión, mayor es la importancia relativa del atributo.

FORMA

La herramienta de código abierto SHAP utiliza valores de Shapely basados ​​en la teoría de juegos de coalición. Explica una predicción de ML al suponer que cada valor de característica de la instancia de datos de entrenamiento es un jugador en un juego en el que la predicción es el pago. Los valores de Shapley indican cómo distribuir el pago de manera justa entre las características. Los valores consideran todas las predicciones posibles para una instancia y usan todas las combinaciones posibles de entradas. Debido a este enfoque exhaustivo, SHAP puede garantizar la coherencia y la precisión local. Para más información, vea el documentación en el sitio web de SHAP.

Depurador de Amazon SageMaker

Amazon SageMaker Debugger proporciona una visibilidad completa de la capacitación del modelo ML al monitorear, registrar y analizar los datos del tensor que capturan el estado de un trabajo de capacitación. Cuando tiene un trabajo de capacitación con Amazon SageMaker Debugger habilitado, configura qué tensores guardar, dónde guardar los tensores y las pruebas que se ejecutarán en el conjunto de datos de capacitación. Los tensores, agrupados en colecciones, definen el estado del trabajo de capacitación en cualquier instante particular de su ciclo de vida. Las colecciones de tensor integradas de Amazon SageMaker Debugger incluyen importancia de la característica, SHAP completo y SHAP promedio. Para obtener más información sobre la depuración y la detección automática de errores comunes durante la capacitación del modelo, vea Depurador de Amazon SageMaker: depure los modelos de aprendizaje automático.

El resto de esta publicación destaca cómo habilitar Amazon SageMaker Debugger para un trabajo de capacitación, use average_shap y full_shap colecciones de tensor incorporadas, y visualizan y analizan los tensores capturados para la explicación del modelo.

Descripción general del tutorial

El tutorial incluye los siguientes pasos de alto nivel:

  1. Examinar el conjunto de datos de entrenamiento que representa el problema.
  2. Entrene el modelo en Amazon SageMaker con el depurador activado
  3. Visualice y analice la salida del depurador

Estos pasos son específicos para usar tensores integrados para explicabilidad en Amazon SageMaker. Hay otros pasos necesarios para importar bibliotecas, configurar permisos de IAM y otras funciones, que esta publicación no trata. Puede recorrer y ejecutar el código con lo siguiente cuaderno en el repositorio de GitHub.

Para este caso de uso, usted predice si el ingreso de un individuo es menor, mayor o igual a $ 50,000 en función de varias características como la edad del individuo, el estado civil, la cantidad de horas trabajadas y la ganancia de capital. Usas el UCI Adulto conjunto de datos

Examinando los datos de entrenamiento

Para comprender las características que componen los datos de entrenamiento, descargue el conjunto de datos. La siguiente captura de pantalla muestra las primeras líneas de datos.

La siguiente captura de pantalla muestra la lista de características.

El conjunto de datos consta de 12 características diferentes que capturan la edad, la educación y otros detalles de un individuo. Utiliza XGBoost para predecir la probabilidad de que una persona gane más de $ 50,000 al año en ingresos anuales. El objetivo es comprender cómo cada característica impacta el modelo XGBoost y sus predicciones.

Entrenamiento del modelo XGBoost con Amazon SageMaker Debugger habilitado

Entrena el modelo XGBoost utilizando el API de estimador de Amazon SageMaker. Para habilitar el depurador de Amazon SageMaker durante el entrenamiento, cree un DebuggerHookConfig objetar y agregar esta configuración a la API Estimator. los DebuggerHookConfig especifica las colecciones de tensor que le interesa recopilar y el Amazon S3 ubicación para guardar los tensores recogidos. Para este caso de uso, usted recolecta feature_importance, average_shapy full_shap cada 10 iteraciones durante el proceso de capacitación, según lo cual save_interval especifica en el código.

Para supervisar el proceso de capacitación, cree una regla de depurador de Amazon SageMaker. Para esta publicación, use el Amazon SageMaker incorporado LossNotDecreasing regla para monitorear la colección de métricas. La regla le avisa si los tensores en las métricas no han disminuido en más de 10 pasos.

Puede configurar la regla, la configuración de enlace del depurador y el Estimador con una sola API. Ver el siguiente código:

from sagemaker.debugger import rule_configs, Rule, DebuggerHookConfig, CollectionConfig
from sagemaker.estimator import Estimator xgboost_estimator = Estimator( role=role, base_job_name=base_job_name, train_instance_count=1, train_instance_type='ml.m5.4xlarge', image_name=container, hyperparameters=hyperparameters, train_max_run=1800, debugger_hook_config=DebuggerHookConfig( s3_output_path=bucket_path, # Required collection_configs=[ CollectionConfig( name="metrics", parameters={ "save_interval": str(save_interval) } ), CollectionConfig( name="feature_importance", parameters={ "save_interval": str(save_interval) } ), CollectionConfig( name="full_shap", parameters={ "save_interval": str(save_interval) } ), CollectionConfig( name="average_shap", parameters={ "save_interval": str(save_interval) } ), ], ), rules=[ Rule.sagemaker( rule_configs.loss_not_decreasing(), rule_parameters={ "collection_names": "metrics", "num_steps": str(save_interval * 2), }, ), ],
)

A continuación, comience un trabajo de capacitación utilizando el objeto Estimador que creó. Ver el siguiente código:

from sagemaker.session import s3_input train_input = s3_input("s3://{}/{}/{}".format(bucket, prefix, "data/train.csv"), content_type="csv") validation_input = s3_input( "s3://{}/{}/{}".format(bucket, prefix, "data/validation.csv"), content_type="csv") xgboost_estimator.fit( {"train": train_input, "validation": validation_input}, # This is a fire and forget event. By setting wait=False, you submit the job to run in the background. # Amazon SageMaker starts one training job and release control to next cells in the notebook. # Follow this notebook to see status of the training job. wait=False
)

Recibe el siguiente resultado:

Training job status: InProgress, Rule Evaluation Status: InProgress
Training job status: InProgress, Rule Evaluation Status: InProgress
…..

Como resultado del código anterior, se inicia Amazon SageMaker un trabajo de entrenamiento y un trabajo de regla para ti. Para verificar el estado del trabajo de evaluación de reglas, ingrese el siguiente código:

xgboost_estimator.latest_training_job.rule_job_summary()

Recibe el siguiente resultado:

[{'RuleConfigurationName': 'LossNotDecreasing', 'RuleEvaluationJobArn': 'arn:aws:sagemaker:us-west-2:xxxxxxxxxxxx:processing-job/demo-smdebug-xgboost-adult-lossnotdecreasing-95f1ab04', 'RuleEvaluationStatus': 'InProgress', 'LastModifiedTime': datetime.datetime(2020, 3, 15, 4, 0, 31, 217000, tzinfo=tzlocal())}]

Visualizar y analizar la salida del depurador

En este paso, visualizas el feature_importance, full_shapy average_shap tensores capturados durante el entrenamiento. El análisis incluye llegar a explicaciones globales y locales del modelo para comprender cómo las características individuales contribuyen a las predicciones del modelo. También observa brevemente las predicciones atípicas.

Utilice el depurar biblioteca y el concepto de un juicio, que representa una sola carrera de entrenamiento. El objeto de prueba incluye la ruta a la ubicación del tensor y permite el acceso a los tensores de consulta.

Dentro de un juicio, un paso representa un solo lote del trabajo de capacitación. Cada prueba tiene múltiples pasos. Un tensor recolectado tiene un valor particular en cada paso. Los valores del tensor se almacenan en la ubicación de Amazon S3 que especificó anteriormente. Ver el siguiente código:

from smdebug.trials import create_trial
s3_output_path = xgboost_estimator.latest_job_debugger_artifacts_path()
trial = create_trial(s3_output_path)

Recibe el siguiente resultado:

[2020-03-15 04:01:46.743 ip-172-16-11-140:23602 INFO s3_trial.py:42] Loading trial debug-output at path s3://sagemaker-us-west-2-xxxxxxxxxxxx/demo-smdebug-xgboost-adult-income-predi-2020-03-15-03-58-05-031/debug-output

Para ver los tensores recopilados, ingrese el siguiente código:

trial.tensor_names()

Recibe el siguiente resultado:

['average_shap/f0', 'average_shap/f1', ….. , 'average_shap/f11' 'feature_importance/cover/f0',….., 'feature_importance/cover/f1, 'feature_importance/gain/f0',…., 'feature_importance/gain/f11', 'feature_importance/weight/f0', …,'feature_importance/weight/f11', 'full_shap/f0', …, 'full_shap/f9', 'train-error', 'validation-error']

Los nombres reales de las características no se incluyen en los nombres de tensor; están representados como f0, f1, y así. Esto evita que los nombres de características sensibles aparezcan en el análisis. Alternativamente, el siguiente código usa los nombres de funciones reales que guardó anteriormente. Puede usar cualquiera de los enfoques según sus requisitos.

Para ver la average_shap valor tensorial para f1, ingrese el siguiente código:

trial.tensor("average_shap/f1").values()

Recibe el siguiente resultado:

 {0: array([0.], dtype=float32), 5: array([0.], dtype=float32), … 50: array([0.00796671], dtype=float32)}

También puede trazar los tensores recopilados para múltiples características. Por ejemplo, para trazar el feature_importance, ingrese el siguiente código:

plot_feature_importance(trial, importance_type="cover")

El siguiente gráfico muestra el resultado:

Del mismo modo, puede trazar el average_shap valores de tensor recopilados para todas las características. Ver el siguiente gráfico.

Las dos parcelas anteriores le dan una idea de cómo cambian las métricas trazadas durante el proceso de capacitación.

Explicaciones globales

Los métodos explicativos globales le permiten comprender el modelo y sus contribuciones de características en conjunto sobre múltiples puntos de datos. El siguiente gráfico es un diagrama de barras agregado que traza el valor medio absoluto de SHAP para cada entidad. Específicamente, la siguiente gráfica indica que el valor de la relación (Wife= 5, Husband= 4, Own-child= 3, Other-relative= 2, Unmarried= 1, Not-in-family= 0) juega el papel más importante para predecir si la probabilidad de ingreso es mayor a $ 50,000.

Puede ver aún más la distribución del valor SHAP para cada característica. El siguiente diagrama de resumen proporciona más contexto que el gráfico de barras. Indica qué características son más importantes y también su rango de efectos sobre el conjunto de datos. El color le permite hacer coincidir cómo los cambios en el valor de una característica afectan el cambio en la predicción (por ejemplo, un aumento en la edad conduce a mayores probabilidades de registro para la predicción, lo que finalmente conduce a True predicciones más a menudo). También puede ver que el género del individuo (Sex) afecta negativamente la predicción.

El rojo indica el valor más alto de la función, y el azul indica más bajo (normalizado sobre las funciones). Esto permite conclusiones como un aumento en la edad conduce a mayores probabilidades de registro para la predicción, lo que eventualmente conduce a predicciones verdaderas con más frecuencia.

Explicaciones locales

Las explicaciones locales se centran en explicar cada predicción individual. Una explicación del gráfico de fuerza muestra cómo las características contribuyen a impulsar la salida del modelo desde el valor base (la salida promedio del modelo sobre el conjunto de datos) a la salida del modelo. Las características que impulsan la predicción más alto están en rojo; los que empujan la predicción más abajo están en azul.

La siguiente gráfica indica que para este punto de datos en particular, la probabilidad de predicción (0.48) es mayor que el promedio (~ 0.2), principalmente porque esta persona está en una relación (Relationship = Wife), y en menor grado debido a la edad superior a la media. Del mismo modo, el modelo reduce la probabilidad debido a Sex y Race valores, lo que indica un sesgo en el comportamiento del modelo (posiblemente debido a un sesgo en los datos).

SHAP permite apilar múltiples gráficos de fuerza después de rotar 90 grados para comprender las explicaciones de múltiples puntos de datos. Ver la siguiente trama.

Aunque esta publicación muestra los gráficos de fuerza apilados estáticos, puede hacer que el gráfico sea interactivo habilitando Javascript en el cuaderno completo. Esto le permite comprender cómo cambia la salida en función de cada función de forma independiente. Esta acumulación de gráficos de fuerza proporciona un equilibrio entre la explicabilidad local y global.

Los valores atípicos

Los valores atípicos son valores extremos que se desvían de otras observaciones sobre los datos. Es útil comprender la influencia de varias características para las predicciones atípicas para determinar si se trata de una novedad, un error experimental o una deficiencia en el modelo.

La siguiente gráfica de fuerza muestra valores atípicos de predicción que están a ambos lados del valor de referencia. El gráfico indica que "si   workclass=Federal-gov, Age=38 y Relationship=Wife (es decir, la esposa de un empleado federal) es probablemente un caso atípico para el grupo de ingresos ”.

El cuaderno proporciona un análisis atípico más detallado.

Conclusión

Esta publicación discutió la importancia de la explicabilidad para una mejor adopción de ML e introdujo la capacidad de Amazon SageMaker Debugger con colecciones de tensor incorporadas para permitir la explicabilidad del modelo. La publicación también proporcionó un cuaderno detallado que lo guía a través de la capacitación de un modelo ML para un caso de uso de servicios financieros de predicción de ingresos individuales. Luego analizó las explicaciones globales y locales del modelo visualizando los tensores capturados. Con su capacidad de proporcionar información en tiempo real sobre el proceso de capacitación y el análisis fuera de línea de los datos del tensor capturados, Amazon SageMaker Debugger es una herramienta muy poderosa para los equipos que desarrollan modelos de ML. Pruebe Amazon SageMaker Debugger y deje sus comentarios en los comentarios.


Sobre los autores

Mona Mona es una arquitecta especialista en soluciones de IA / ML que trabaja con el equipo mundial del sector público de AWS. Ella trabaja con clientes del sector público mundial de AWS para ayudarlos a adoptar el aprendizaje automático a gran escala.

Rahul Iyer es gerente de desarrollo de software en AWS AI. Dirige el equipo de Algoritmos de Marco, construyendo y optimizando marcos de aprendizaje automático como XGBoost y Scikit-learn.

Sireesha Muppala es arquitecta especialista en soluciones de IA / ML en AWS, y brinda orientación a los clientes sobre la arquitectura e implementación de soluciones de aprendizaje automático a escala. Ella recibió su Ph.D. en Informática de la Universidad de Colorado, Colorado Springs. En su tiempo libre, a Sireesha le encanta correr y caminar por los senderos de Colorado.

Fuente: https://aws.amazon.com/blogs/machine-learning/ml-explainability-with-amazon-sagemaker-debugger/

punto_img

Información más reciente

punto_img