Verificación y validación para IA con MATLAB y Simulink

Flujos de trabajo de V+V: Proceso de desarrollo en forma de W

La tecnología de IA está revolucionando sectores y transformando cómo trabajamos y vivimos. A medida que los sistemas de IA se integran en sectores de seguridad crítica, como aeroespacio, automoción y atención médica (Figura 1), van tomando decisiones que afectan directamente a la seguridad y bienestar de las personas. Esto ha desembocado en una necesidad creciente de procesos de verificación y validación rigurosos para explicar, verificar y validar el comportamiento de modelos.

Símbolos representativos de cada sector: señal de stop para automoción, avión para aeroespacio y radiografía de tórax para medicina.

Figura 1. Las redes de clasificación de imágenes se utilizan en los sectores de automoción, aeroespacio y medicina.

En cuanto a la certificación en IA, las técnicas de verificación y validación (V+V) ayudan a identificar y mitigar riesgos, así como demostrar que los modelos de IA y sistemas basados en IA cumplen con normativas y con estándares de la industria.

En ocasiones, los flujos de trabajo de V+V tradicionales, como el ciclo en V, no son suficientes para garantizar la precisión y fiabilidad de modelos de IA. Por ello, se han desarrollado adaptaciones más adecuadas para aplicaciones de IA, como el proceso de desarrollo en forma de W (Figura 2).

Modelo en V adaptado del desarrollo de sistemas de IA/Machine Learning, que muestra las etapas desde los requisitos hasta la verificación.

Figura 2. Proceso de desarrollo en forma de W basado en un diagrama original publicado por la Agencia de la Unión Europea para la Seguridad Aérea (EASA). (Imagen cortesía de EASA)

Las siguientes secciones presentan las etapas de V+V del proceso de desarrollo en forma de W. Para examinar más de cerca este proceso, consulte los siguientes recursos.

Implementación del proceso en forma de W: Caso clínico

Para ilustrar un caso práctico de este proceso, este white paper describe paso a paso el desarrollo de un sistema de IA médico diseñado para detectar neumonía a partir de radiografías de tórax. Este caso clínico destaca las fortalezas y desafíos de la IA en aplicaciones de seguridad crítica, y muestra por qué el modelo de clasificación de imágenes debe ser preciso y robusto para evitar diagnósticos erróneos perjudiciales.

De los requisitos al modelado robusto

La primera mitad del proceso de desarrollo en forma de W garantiza que los modelos de IA cumplen con los estándares requeridos y funcionan de modo fiable en aplicaciones del mundo real.

Gestión de requisitos asignados al componente de ML

La primera etapa del ciclo en W consiste en recopilar requisitos específicos del componente de Machine Learning. Entre las consideraciones clave se encuentran implementación, pruebas y explicabilidad del modelo. Requirements Toolbox™ facilita la creación, vinculación y validación de requisitos (Figura 3).

App Requirements Editor que muestra un requisito de precisión de prueba para un modelo de Machine Learning.

Figura 3. La app Requirements Editor captura requisitos para el componente de Machine Learning.

Gestión de datos

La siguiente etapa del ciclo en W es la gestión de datos, que resulta crucial para el aprendizaje supervisado, ya que requiere datos etiquetados. MATLAB® ofrece las apps de etiquetado interactivo y automatizado Image Labeler y Signal Labeler. Sirviéndose de imageDatastore, que estructura archivos de imagen para escalabilidad, puede gestionar conjuntos de datos de imagen de gran tamaño, como los utilizados para entrenar el modelo de detección de neumonía:

trainingDataFolder = "pneumoniamnist\Train";

imdsTrain = imageDatastore(trainingDataFolder,IncludeSubfolders=true,LabelSource="foldernames");

countEachLabel(imdsTrain)

Gestión del proceso de aprendizaje

Antes del entrenamiento, es esencial definir la arquitectura de la red y las opciones de entrenamiento, como el algoritmo, la función de pérdida y los hiperparámetros. La app Deep Network Designer permite diseñar y visualizar redes de manera interactiva. El siguiente código define la arquitectura de una red neuronal convolucional (CNN) para clasificación de imágenes:

numClasses = numel(classNames);
layers = [
 imageInputLayer(imageSize,Normalization="none")
 convolution2dLayer(7,64,Padding=0)
 batchNormalizationLayer()
 reluLayer()
 dropoutLayer(0.5)
 averagePooling2dLayer(2,Stride=2)
 convolution2dLayer(7,128,Padding=0)
 batchNormalizationLayer()
 reluLayer()
 dropoutLayer(0.5)
 averagePooling2dLayer(2,Stride=2)
 fullyConnectedLayer(numClasses)
 softmaxLayer];

Buscar hiperparámetros óptimos puede resultar complejo, pero la app Experiment Manager ofrece ayuda explorando distintos valores mediante barrido u optimización bayesiana (Figura 4). Se pueden probar múltiples configuraciones de entrenamiento en paralelo, aprovechando el hardware disponible para agilizar el proceso.

Configuración de barrido de hiperparámetros y configuración de capas de CNN en la app Experiment Manager.

Figura 4. Configuración del problema en la app Experiment Manager para encontrar un conjunto de hiperparámetros óptimo a partir de la arquitectura exportada en Deep Network Designer.

Entrenamiento del modelo y validación inicial

La fase de entrenamiento comienza con experimentos en la app Experiment Manager, que generan un modelo inicial con una precisión aproximada del 96% en el conjunto de validación. No obstante, no cumple el requisito predefinido de solidez. Dado que el ciclo en W es iterativo, se necesitan más ajustes.

Experiment Manager que muestra resultados de hiperparámetros de CNN y una matriz de confusión para detección de neumonía.

Figura 5. Búsqueda de un modelo inicial con la app Experiment Manager.

Verificación del proceso de aprendizaje

Garantizar que los modelos de IA cumplen con los requisitos especificados es importante, especialmente en aplicaciones de seguridad crítica. En las siguientes etapas del proceso de desarrollo en forma de W se implementan técnicas de verificación para confirmar que el rendimiento del modelo responde a las expectativas.

Pruebas y análisis del rendimiento del modelo

El modelo se entrenó con el método de signo de gradiente rápido (FGSM) para reforzar la robustez ante ejemplos antagónicos. Alcanzó una precisión de más del 90%, superando los requisitos y puntos de referencia predefinidos. Para comprender mejor su rendimiento, se utilizó una matriz de confusión para analizar patrones de error. Técnicas de explicabilidad como Grad-CAM (Figura 6) ofrecieron perspectivas visuales que mejoran la interpretabilidad y confianza en las decisiones.

Mapa de calor de Grad-CAM que resalta regiones relevantes para la predicción de neumonía a partir de una radiografía de tórax.

Figura 6. Interpretación de las predicciones de una red sirviéndose de mapeo de activación de clase ponderado por gradiente (Grad-CAM).

Ejemplos antagónicos

Los ejemplos antagónicos son cambios pequeños e imperceptibles en las entradas que pueden provocar errores de clasificación, lo que plantea dudas sobre su robustez en tareas de seguridad crítica como la captura de imágenes médicas (Figura 7).

La imagen de rayos X original de pulmones con neumonía se clasifica erróneamente como normal tras agregar ruido antagónico sutil.

Figura 7. Ejemplos antagónicos: Efecto de la perturbación de entradas en la clasificación de imágenes.

Norma L-infinito

La norma L-infinito se utiliza para comprender y cuantificar perturbaciones antagónicas (Figura 8). Define un rango dentro del que pueden alterarse los valores de píxeles. Esto genera innumerables combinaciones posibles para probar, lo que dificulta evaluar todos los escenarios.

Imagen ampliada de una radiografía con matrices que muestran etapas de perturbación de píxeles en una red neuronal.

Figura 8. Norma L-infinito: Ejemplos de posibles perturbaciones de entradas.

Verificación formal de la robustez

Los métodos de verificación formal ofrecen un enfoque matemático que proporciona una forma sistemática de evaluar y garantizar la robustez de redes neuronales frente a una amplia gama de posibles ejemplos antagónicos. Deep Learning Toolbox™ Verification Library ofrece métodos de verificación formal, como la interpretación abstracta. A partir de una imagen del conjunto de prueba, puede seleccionar una perturbación que defina una amplia colección de imágenes alteradas para una imagen concreta (Figura 9).

Flujo de trabajo que muestra una imagen de rayos X de entrada, conjunto de perturbaciones, modelo y etiquetas de salida: verificada, no comprobada o infringida.

Figura 9. Verificación formal con interpretación abstracta.

Existen tres salidas posibles para cada una de las imágenes:

  • Verificada: La etiqueta de salida permanece coherente.
  • Infringida: La etiqueta de salida cambia.
  • No comprobada: Se necesita más verificación o mejorar el modelo.

Detección de datos fuera de distribución

Un sistema de IA fiable debe generar predicciones precisas en un contexto conocido. Pero también debe identificar ejemplos desconocidos para el modelo, y rechazarlos o derivarlos a una persona experta para una gestión segura. Con Deep Learning Toolbox Verification Library, puede crear un discriminador de datos fuera de distribución (OOD) para asignar un nivel de confianza a las predicciones de una red calculando una puntuación de confianza de distribución para cada observación (Figura 10). El discriminador también proporciona un umbral para separar los datos dentro y fuera de la distribución.

Histograma que muestra distribuciones de puntuaciones de confianza para datos de entrenamiento y diversas perturbaciones.

Figura 10. Distribución de puntuaciones de confianza para los conjuntos de datos originales y derivados.

De la implementación del modelo a la validación de requisitos

Una vez verificado el proceso de aprendizaje, la atención se centra en adaptar los modelos de IA a aplicaciones del mundo real. En estas últimas etapas del proceso de desarrollo en forma de W, se prepara el modelo para su despliegue y se garantiza que cumple con los requisitos de funcionamiento.

Implementación del modelo y generación de código

La transición desde la verificación del proceso de aprendizaje hasta la implementación del modelo en el flujo de trabajo de desarrollo en forma de W marca el momento en que un modelo de IA pasa de la fase de optimización a la aplicación en el mundo real. La generación de código con MATLAB y Simulink® automatiza la conversión de modelos entrenados en código desplegable, por ejemplo, C/C++ o CUDA® (Figura 11), lo que reduce errores y esfuerzo de codificación manual.

Diagrama de generación de código a partir de modelos de MATLAB para CPU, GPU, microcontrolador y FPGA objetivos.

Figura 11. Herramientas de generación de código de MATLAB y Simulink.

Puede utilizar la función analyzeNetworkForCodegen en MATLAB para verificar si un modelo de Deep Learning está listo para la generación de código. Esto garantiza la compatibilidad con librerías objetivo y, en aplicaciones de seguridad crítica, permite generar código sin dependencias de terceros. La generación automática de código simplifica la certificación, mejora la portabilidad y permite un despliegue fiable en diferentes plataformas.

analyzeNetworkForCodegen(net)

 Supported
 _________
 none "Yes"
 arm-compute "Yes"
 mkldnn "Yes"
 cudnn "Yes"
 tensorrt "Yes"

Deep Learning Toolbox Model Quantization Library resulta muy eficaz cuando el despliegue requiere optimizar memoria, aritmética de punto fijo o eficiencia computacional. Técnicas de cuantización y poda pueden reducir significativamente el tamaño del modelo y la carga computacional, como por ejemplo, comprimir un modelo hasta 4 veces con una disminución de solo 0,7% en la precisión al convertir de punto flotante a int8 con la app Deep Network Quantizer (Figura 12).

App Deep Network Quantizer que muestra estadísticas de rango dinámico y resultados de validación para una red neuronal.

Figura 12. Cuantización de una red neuronal profunda con la app Deep Network Quantizer.

Con MATLAB Coder™ y GPU Coder™, puede generar código C++ y CUDA para desplegar modelos de IA en sistemas en tiempo real donde velocidad y baja latencia son críticas. Esto implica configurar el lenguaje objetivo y los ajustes de Deep Learning, como el uso de cuDNN para aceleración por GPU.

cfg = coder.gpuConfig("mex"); 

cfg.TargetLang = "C++"; 

cfg.GpuConfig.ComputeCapability = "6.1"; 

cfg.DeepLearningConfig = coder.DeepLearningConfig("cudnn"); 

cfg.DeepLearningConfig.AutoTuning = true; 

cfg.DeepLearningConfig.CalibrationResultFile = "quantObj.mat"; 

cfg.DeepLearningConfig.DataType = "int8"; 

input = ones(inputSize,"int8"); 

codegen -config cfg -args input predictCodegen -report

Verificación e integración del modelo de inferencia

La fase de verificación e integración del modelo de inferencia garantiza que un modelo de IA, como el utilizado para detección de neumonía, funciona de modo fiable con datos nuevos y no vistos, y que se integra adecuadamente en un sistema de atención médica más amplio.

Después de convertir el modelo a C++ y CUDA, esta fase verifica su precisión y lo incorpora en un sistema integral, junto con componentes de supervisión en tiempo de ejecución, captura de datos y visualización. Simular el sistema en Simulink permite verificar que el modelo funciona eficazmente en tiempo real y mantiene su rendimiento dentro del sistema general (Figura 13).

Diagrama de un modelo de IA con supervisión en tiempo de ejecución y visualización para evaluación de confianza.

Figura 13. Arnés de prueba de Simulink que integra el modelo de Deep Learning.

El monitor en tiempo de ejecución puede ayudar a distinguir entre entradas conocidas y desconocidas (Figura 14). Destaca en verde las predicciones de confianza cuando los datos coinciden con la distribución de entrenamiento, y en rojo las posibles anomalías para casos de OOD. Esta prestación mejora la seguridad y fiabilidad del sistema de IA, ya que no solo garantiza que realiza predicciones exactas, sino que también identifica y gestiona adecuadamente datos desconocidos.

Dos radiografías que muestran predicciones correctas e incorrectas de neumonía con puntuaciones de confianza.

Figura 14. Ejemplos de la salida del subsistema del monitor en tiempo de ejecución.

En esta etapa, es esencial implementar una estrategia de pruebas integral. Con MATLAB Test™ o Simulink Test™, puede crear pruebas automatizadas para validar a fondo la precisión, rendimiento e integración en el sistema general del modelo de IA.

Verificación independiente de datos y aprendizaje

La fase de verificación independiente de datos y aprendizaje garantiza que los conjuntos de datos de entrenamiento, validación y prueba se gestionan correctamente, y que son completos y representativos del espacio de entrada de la aplicación. Incluye una revisión independiente después de verificar el modelo de inferencia en la plataforma objetivo. Además, esta fase confirma que la verificación del aprendizaje y el análisis de cobertura se han completado satisfactoriamente.

Verificación de requisitos

La fase de verificación de requisitos concluye el proceso de desarrollo en forma de W, y garantiza que todos los requisitos estén completamente implementados y probados. Con Requirements Toolbox™, las funciones y pruebas se enlazan a sus requisitos correspondientes, lo que cierra el ciclo de desarrollo. La ejecución de estas pruebas desde Requirements Editor verifica que todos los requisitos se han cumplido con éxito (Figura 15).

Figura 15. Ejecución de pruebas en Requirements Editor.

Resumen del proceso de desarrollo

Después de la verificación de requisitos, el proceso de desarrollo en forma de W se considera completo. En este ejemplo de dispositivo médico, las etapas exhaustivas y minuciosas de este proceso han garantizado que el modelo de IA para detección de neumonía sea preciso y robusto, y que esté preparado para desplegarse. Enlazar requisitos a funciones y pruebas concretas establece una trazabilidad clara y verifica sistemáticamente cada requisito, lo que confirma que el modelo cumple con los estrictos estándares de las aplicaciones de atención médica. Ahora se puede desplegar una herramienta fiable que contribuye a mejorar la atención a pacientes.