Vérification et validation pour l'IA avec MATLAB et Simulink

Workflows de V&V : le processus de développement en W

Les technologies d'IA révolutionnent les industries et transforment aussi bien notre façon de travailler que nos modes de vies. L'intégration croissante des systèmes d'IA dans des industries où la sécurité revêt une importance critique, telles que l'aérospatiale, l'automobile et la santé (Figure 1), amène ces systèmes à prendre des décisions qui ont un impact direct sur la sécurité et le bien-être des personnes. Il en résulte un besoin croissant de processus rigoureux de vérification et de validation pour expliquer, vérifier et valider le comportement des modèles.

Symboles représentant chaque industrie : un panneau Stop pour l'automobile, un avion pour l'aérospatiale et une radiographie du thorax pour le secteur médical.

Figure 1. Les réseaux de classification d'images sont utilisés dans les industries automobile, aérospatiale et médicale.

Dans le contexte de la certification en IA, les techniques de vérification et de validation (V&V) permettent d'identifier et d'atténuer les risques en démontrant que les modèles d'IA et les systèmes basés sur l'IA respectent les normes et réglementations industrielles.

Les workflows traditionnels de V&V, tels que le cycle en V, peuvent s'avérer insuffisants pour garantir la précision et la fiabilité des modèles d'IA. Pour une meilleure adéquation avec les applications d'IA, des adaptations de ces workflows, telles que le processus de développement en W (Figure 2), ont vu le jour.

Adaptation du cycle en V pour le développement de systèmes d'IA/de Machine Learning montrant les différentes étapes, des exigences à la vérification.

Figure 2. Processus de développement en W. D’après un diagramme original publié par l'Agence de l'Union européenne pour la sécurité aérienne (AESA). (Crédit image : AESA)

Les sections suivantes vous guideront à travers les étapes de V&V du processus de développement en W. Pour examiner ce processus plus en détail, consultez les ressources ci-dessous.

Implémentation du processus en W : étude de cas dans le secteur médical

Pour illustrer la mise en œuvre de ce processus sur un cas pratique, ce livre blanc vous présentera le développement d'un système d'IA médicale conçu pour examiner des radiographies du thorax et déterminer si un patient souffre d'une pneumonie. Cette étude de cas met en lumière les atouts et les défis de l'IA dans les applications critiques, en montrant pourquoi le modèle de classification des images doit être à la fois précis et robuste afin d’éviter les erreurs de diagnostic dommageables.

Des exigences à une modélisation robuste

La première moitié du processus de développement en W permet de s'assurer que les modèles d'IA répondent aux normes requises et se comportent de manière fiable dans des applications concrètes.

Exigences attribuées à la gestion du module ML

La première étape du cycle en W consiste à collecter les exigences spécifiques au module de Machine Learning. Les éléments clés à prendre en compte incluent l'implémentation, les tests et l'explicabilité du modèle. Requirements Toolbox™ facilite la création, la liaison et la validation des exigences (Figure 3).

L'application Requirements Editor affiche une exigence de justesse des tests pour un modèle de Machine Learning.

Figure 3. L'application Requirements Editor capture les exigences applicables au module de Machine Learning.

Gestion des données

L'étape suivante du cycle en W est la gestion des données, une étape essentielle pour l'apprentissage supervisé qui requiert des données labellisées. MATLAB® propose des applications de labellisation telles qu'Image Labeler et Signal Labeler pour une labellisation interactive et automatisée. L'utilisation d'imageDatastore, qui structure les fichiers image dans une perspective d'évolutivité, vous permet de gérer des jeux de données volumineux tels que les images utilisées pour l'apprentissage visant à détecter les cas de pneumonie :

trainingDataFolder = "pneumoniamnist\Train";

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

countEachLabel(imdsTrain)

Gestion du processus d'apprentissage

Avant l'apprentissage, il est essentiel de finaliser l'architecture du réseau et les options d'apprentissage, notamment l'algorithme, la fonction de perte et les hyperparamètres. L'application Deep Network Designer permet de concevoir et de visualiser les réseaux de manière interactive. Le code ci-dessous définit l'architecture d'un réseau de neurones à convolution (CNN) pour la classification d'images :

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];

Il peut s'avérer complexe de trouver les hyperparamètres optimaux, mais l'application Experiment Manager vous aide en explorant différentes valeurs par balayage ou optimisation bayésienne (Figure 4). Vous pouvez tester plusieurs configurations d'apprentissage en parallèle, en exploitant le hardware disponible pour rationaliser le processus.

Captures d'écran des configurations du balayage d'hyperparamètres et des couches du CNN dans l'application Experiment Manager.

Figure 4. Configuration du problème dans l'application Experiment Manager pour trouver un ensemble optimal d'hyperparamètres à partir de l'architecture exportée dans Deep Network Designer.

Apprentissage et validation initiale du modèle

La phase d'apprentissage commence par l'exécution d'expériences dans l'application Experiment Manager, ce qui permet d'obtenir un modèle initial d'une précision prometteuse (environ 96 % sur le jeu de données de validation). Cependant, il ne répond pas entièrement à toutes les exigences prédéfinies, telles que la robustesse. Le cycle en W étant itératif, d'autres améliorations sont nécessaires.

Capture d'écran de l'application Experiment Manager affichant les résultats des hyperparamètres du CNN et une matrice de confusion pour la détection des cas de pneumonie.

Figure 5. Recherche d'un modèle initial avec l'application Experiment Manager.

Vérification du processus d'apprentissage

Il est important de s'assurer que les modèles d'IA répondent aux exigences spécifiées, en particulier dans les applications critiques pour la sécurité. Les étapes suivantes du processus de développement en W consistent à implémenter des techniques de vérification pour confirmer que les performances du modèle correspondent aux attentes.

Test et compréhension des performances du modèle

Le modèle a été entraîné par un apprentissage adversarial utilisant la méthode FGSM (Fast Gradient Sign Method) pour améliorer sa robustesse face à des exemples contradictoires. Il a atteint une précision de plus de 90 %, surpassant ainsi les exigences prédéfinies et les performances de référence. Afin de mieux comprendre les performances du modèle, une matrice de confusion a été utilisée pour analyser les patterns d'erreur, tandis que des techniques d'explicabilité comme Grad-CAM (Figure 6) ont fourni des indications visuelles qui améliorent l'interprétabilité et la confiance accordée à ses décisions.

Une carte thermique Grad-CAM met en évidence les régions prédites comme pertinentes pour le diagnostic de pneumonie à partir d'une radiographie du thorax.

Figure 6. Comprendre les prédictions du réseau avec la méthode Grad-CAM (Gradient-weighted Class Activation Mapping).

Exemples contradictoires

Les exemples contradictoires sont de petites modifications imperceptibles des données d'entrée susceptibles d'entraîner des erreurs de classification par les réseaux de neurones, qui peuvent susciter une certaine inquiétude quant à la robustesse des tâches critiques, comme l'imagerie médicale (Figure 7).

La radiographie d'origine, réalisée sur des poumons atteints de pneumonie, est classée à tort comme normale après l'ajout d'un bruit contradictoire subtil.

Figure 7. Exemples contradictoires : effet des perturbations des entrées sur la classification des images.

Norme L-infini

La norme L-infini est utilisée pour comprendre et quantifier les perturbations contradictoires (Figure 8). Elle définit une plage dans laquelle les valeurs des pixels peuvent être modifiées. Cela aboutit à un nombre considérable de combinaisons possibles à tester, ce qui rend difficile l'évaluation de tous les scénarios.

Vue agrandie d'une radiographie avec des matrices montrant les étapes de la perturbation des pixels dans un réseau de neurones.

Figure 8. Norme L-infini : exemples de perturbations d'entrée possibles.

Vérification formelle de la robustesse

Les méthodes de vérification formelle offrent une approche mathématique qui permet d'évaluer et de garantir de façon systématique la robustesse des réseaux de neurones vis-à-vis d'un large éventail d'exemples contradictoires potentiels. La bibliothèque Deep Learning Toolbox™ Verification Library propose des méthodes de vérification formelle, telles que l'interprétation abstraite. Pour une image donnée du jeu de données de test, vous pouvez choisir une perturbation qui définit une large collection d'images perturbées issues de l’image initiale (Figure 9).

Workflow montrant une radiographie en entrée, un ensemble de perturbations, un modèle et des labels de sortie (vérifié, non prouvé ou non respecté).

Figure 9. Vérification formelle utilisant l'interprétation abstraite.

Il y a trois résultats possibles pour chaque image :

  • Vérifié : le label de sortie reste cohérent.
  • Non respecté : le label de sortie change.
  • Non prouvé : il est nécessaire de poursuivre les efforts de vérification ou d'améliorer le modèle.

Détection des données hors distribution

Un système d'IA digne de confiance doit produire des prédictions précises dans un contexte connu, mais il doit aussi être capable d'identifier les exemples inconnus du modèle et de les rejeter ou d'en confier le traitement à un expert humain par sécurité. La bibliothèque Deep Learning Toolbox Verification Library vous permet de créer un discriminateur de données hors distribution (OOD) afin d'attribuer un niveau de confiance aux prédictions du réseau en calculant un score de confiance de la distribution pour chaque observation (Figure 10). Le discriminateur propose également un seuil pour séparer les données appartenant à la distribution des données hors distribution.

Histogramme montrant les distributions des scores de confiance pour les données d'apprentissage et diverses perturbations.

Figure 10. Distribution des scores de confiance pour les jeux de données d'origine et dérivés.

De l'implémentation du modèle à la validation des exigences

Une fois le processus d'apprentissage vérifié, l'attention doit se tourner vers l'adaptation des modèles d'IA aux applications du monde réel. Ces dernières étapes du processus de développement en W consistent à préparer le modèle en vue du déploiement et à s'assurer qu'il répond aux exigences opérationnelles.

Implémentation du modèle et génération du code

Dans le workflow de développement en W, le passage de la vérification du processus d'apprentissage à l'implémentation du modèle est le moment où un modèle d'IA passe de l’ajustement à l'application concrète. La génération de code avec MATLAB et Simulink® automatise la conversion des modèles entraînés en code prêt à être déployé (par exemple C/C++ ou CUDA®, voir la Figure 11), ce qui réduit ainsi les efforts de codage manuel et minimise les erreurs.

Diagramme de génération du code à partir de modèles MATLAB vers des cibles CPU, GPU, microcontrôleur et FPGA.

Figure 11. Outils MATLAB et Simulink pour la génération de code.

Vous pouvez utiliser la fonction analyzeNetworkForCodegen de MATLAB pour vérifier si votre modèle de Deep Learning est prêt pour la génération de code. Cela garantit la compatibilité avec les bibliothèques cibles et, pour les applications critiques en matière de sécurité, cela vous permet de générer du code sans dépendances tierces. La génération automatique de code simplifie la certification, améliore la portabilité et permet un déploiement fiable sur diverses plateformes.

analyzeNetworkForCodegen(net)

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

Lorsque le déploiement nécessite une optimisation de la mémoire, des calculs en virgule fixe ou une efficacité du calcul, la bibliothèque Deep Learning Toolbox Model Quantization Library est très efficace. Des techniques telles que la quantification et l'élagage peuvent considérablement réduire la taille du modèle et la charge de calcul. Ainsi, le fait de convertir le modèle d'un format virgule flottante à int8 avec l'application Deep Network Quantizer permet de le compresser d'un facteur 4 en ne perdant que 0,7 % de précision (Figure 12).

Capture d'écran de l'application Deep Network Quantizer montrant les statistiques de plage dynamique et les résultats de validation d'un réseau de neurones.

Figure 12. Quantification d'un réseau de neurones profond avec l'application Deep Network Quantizer

Avec MATLAB Coder™ et GPU Coder™, vous pouvez générer du code C++ et CUDA afin de déployer des modèles d'IA sur des systèmes en temps réel où la vitesse et la faible latence sont essentielles. Cela implique de configurer le langage cible et les paramètres de Deep Learning tels que l'utilisation de cuDNN pour l'accélération 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

Vérification et intégration du modèle d'inférence

La phase de vérification et d'intégration du modèle d'inférence permet de s'assurer qu'un modèle d'IA, tel que celui utilisé pour la détection des cas de pneumonie, fonctionne de manière fiable sur des données inédites et s'intègre bien dans un système de soins de santé plus vaste. 

Après la conversion du modèle en C++ et CUDA, cette phase vérifie sa précision et l'intègre dans un système complet, avec des composants destinés à la surveillance d'exécution, à l'acquisition de données et à la visualisation. En simulant le système dans Simulink, vous pouvez vérifier que le modèle fonctionne efficacement en temps réel et maintient ses performances dans le système global (Figure 13).

Schéma d'un modèle d'IA avec surveillance de l'exécution et visualisation pour l'évaluation de la confiance.

Figure 13. Harnais Simulink intégrant le modèle de Deep Learning.

L'outil de surveillance de l'exécution peut aider à distinguer les entrées familières de celles qui ne le sont pas (Figure 14). Il signale en vert les prédictions fiables où les données correspondent à la distribution d'apprentissage, et en rouge les anomalies potentielles pour les cas hors distribution. Cette capacité renforce la sécurité et la fiabilité du système d'IA en garantissant non seulement qu'il effectue des prédictions précises, mais aussi qu'il est capable d'identifier et de traiter de manière appropriée les données inconnues.

Deux radiographies montrant respectivement des prédictions de pneumonie correcte et incorrecte, avec les scores de confiance associés.

Figure 14. Exemples de résultats du sous-système de surveillance de l'exécution.

À ce stade, il est essentiel d'implémenter une stratégie de tests exhaustive. Avec MATLAB Test™ ou Simulink Test™, vous pouvez créer des tests automatisés pour valider de manière approfondie la précision, les performances et l'intégration du modèle d'IA dans le système global.

Vérification indépendante des données et de l'apprentissage

La phase de vérification indépendante des données et de l'apprentissage garantit que les jeux de données d'apprentissage, de validation et de test sont correctement gérés, complets et représentatifs de l'espace d’entrée de l'application. Cela implique un examen indépendant après vérification du modèle d'inférence sur la plateforme cible. Cette phase confirme également que la vérification de l'apprentissage, y compris l'analyse de la couverture, a été réalisée de manière satisfaisante.

Vérification des exigences

La phase de vérification des exigences conclut le processus de développement en W en s'assurant que les exigences sont toutes intégralement implémentées et testées. Requirements Toolbox™ permet d'associer les fonctions et les tests aux exigences correspondantes, ce qui ferme ainsi la boucle de développement. Exécuter ces tests dans Requirements Editor permet de vérifier que toutes les exigences ont bien été satisfaites (Figure 15).

Figure 15. Exécuter des tests depuis l'application Requirements Editor.

Conclusion du processus de développement

La phase de vérification des exigences conclut le processus de développement en W. Dans cet exemple de dispositif médical, les étapes approfondies et méticuleuses de ce processus ont permis de s'assurer que le modèle d'IA de détection des cas de pneumonie est précis, robuste et prêt à être déployé. En liant les exigences à des fonctions et des tests spécifiques, vous aurez établi une traçabilité claire et vérifié chaque exigence de façon systématique, ce qui vous permettra de confirmer que le modèle répond aux normes rigoureuses des applications de santé. Vous avez désormais un outil fiable et prêt à être déployé pour améliorer les soins prodigués aux patients.