"Les réseaux neuronaux peuvent-ils devenir sûrs ?"[TRIBUNE de Ken Wenger, CoreAVI] Les réseaux neuronaux vont régir notre futur, que ce soit à bord d'avions et de voitures autonomes ou dans le domaine des technologies médicales. Mais les réseaux neuronaux peuvent-ils vraiment devenir sûrs en matière d'expressivité et d'exécution ? Et quel est le rôle des plateformes IA dans ce contexte ? Ken Wenger, Principal Software Engineer chez CoreAVI donne ici un éclairage sur ces questions cruciales pour le développement des réseaux de neurones dans les applications critiques. Bien qu’ils suscitent de grands espoirs, les réseaux neuronaux sont devenus de véritables boîtes de Pandore. Alors que les concepts liés à cette technologie existent déjà depuis des décennies, ce n'est que tout récemment qu'ils sont passés de l'informatique générale à des applications pratiques, notamment en raison de l’utilisation de plus en plus large des processeurs graphiques universels avec un accès à une programmation parallèle. Aujourd'hui, les réseaux neuronaux sont au cœur de toute application complexe de traitement d'images et leur succès est dû à leur capacité à reconnaître et à apprendre des modèles dans des données complexes. Si on fait un peu de prospective, un avion pourrait faire le tour du monde sans cockpit ni pilote et les résultats d'examens médicaux pourraient être vérifiés et diagnostiqués immédiatement, sans avoir à attendre l’examen d’un médecin spécialiste. Et certaines entreprises du secteur automobile promettent que des voitures entièrement autonomes sillonneront nos routes dans les trois ans à venir.
Distinguer expressivité et exécution Pour certains, cette question n’est pas pertinente puisque les réseaux neuronaux sont trop complexes à analyser. Mais force est de constater que les réseaux neuronaux font d'ores et déjà partie du monde des applications critiques. Tesla les emploie notamment à grande échelle dans sa flotte actuelle de voitures à pilote automatique et les hôpitaux se fient de plus en plus aux algorithmes d'apprentissage profond pour le diagnostic des patients. Il s’avère que ce sont des outils utiles et performants qui vont s’installer durablement dans la vie industrielle. C'est pourquoi il est très important de comprendre comment ils fonctionnent et s'ils peuvent être appliqués en toute sécurité. Lors de l'évaluation d'un système destiné à un environnement critique, deux aspects doivent être pris en compte : l'expressivité et l'exécution du système. L'expressivité. Dans le cas d'un réseau neuronal, l'expressivité détermine la sortie de ce dernier. Par exemple, face à l'image d'un chat, le réseau doit classer cette image comme étant celle d'un chat. Cependant, aucun système n'est parfait et parfois les réseaux neuronaux présentent des dysfonctionnements. Au lieu d'identifier un chat, le réseau pourrait classer l'image comme étant celle d'une pastèque. Même les réseaux neuronaux dont l'apprentissage s'est fait avec un degré de précision élevé de plus de 97% peuvent commettre de telles erreurs. Contrairement à une erreur relativement mineure, ici la confusion entre un lampadaire et un être humain peut avoir des conséquences très graves dans le cas d’applications critiques.
Pour tenter de découvrir comment un réseau neuronal parvient à une prédiction donnée, un vaste domaine de la recherche consiste à utiliser des simulations afin de découvrir au moins le secteur des entrées susceptible d'entraîner la défaillance du système. Mais les simulations suffisent-elles pour autant à certifier la sécurité d'un système ? L'exécution. Ceci nous amène au deuxième aspect d'un réseau neuronal dont on cherche à prouver la sécurité : l'exécution. La seule preuve que l'expressivité d'un réseau neuronal est fiable ne révèle en rien si l'exécution de ce dernier est déterministe ou sûre. Si les simulations peuvent accroître la confiance en la fiabilité de l'expressivité d'un réseau neuronal, elles ne donnent toutefois que peu d'informations sur le degré de fiabilité de son exécution en conditions réelles. Or les directives relatives aux applications critiques exigent en règle générale qu'un logiciel soit exécuté de manière déterministe dans le temps et l'espace. La gestion des systèmes critiques est traditionnellement assurée par des systèmes d'exploitation temps réel au sein desquels les processus en cours d'exécution sont soigneusement orchestrés à travers des tranches temporelles. Un industriel doit par conséquent être en mesure de calculer le temps d'exécution d'un morceau de code dans le pire des cas afin de s'assurer qu'il pourra être exécuté au sein d'un laps de temps défini. De façon similaire, les ressources du système telles que la mémoire sont minutieusement réparties entre les différents processus en cours. Les logiciels critiques doivent donc être en mesure d'allouer les ressources du système de manière prévisible de sorte que la taille d'allocation dans le pire des cas est connue et que le système ne vient pas soudainement à manquer de mémoire en cours d'exécution. Le problème de l'exécution ne peut ici être résolu qu'en basant les systèmes d’intelligence artificielle (IA) uniquement sur des piles logicielles certifiables. A ce niveau, l'exécution de simulations ou toute autre tentative d'accroître la confiance en la prédiction d'un réseau aide à résoudre une partie du problème : cela démontre que la sortie du réseau est fiable et digne de confiance. Néanmoins, l'exécution de simulations du système en générant des entrées réparties ne fournit aucun renseignement sur la manière dont plusieurs processus avec différents niveaux de priorité peuvent utiliser des ressources communes au sein d'un environnement critique. Elle ne nous éclaire pas sur ce qui se passe si l'unité de calcul est surchargée par les demandes d'une autre tâche en cours d'exécution. Il faudrait donc faire des simulations en permanence et intégrer ces scénarios à la liste des cas d'application à simuler pour résoudre cette difficulté. En suivant ce raisonnement, il serait donc judicieux d'ajouter aux simulations l'ensemble des scénarios et d'accroître ainsi la confiance en la sécurité d'un système. Cette approche est toutefois partiellement erronée car elle suggère que les scénarios exécutés peuvent réellement être simulés. Ce qui n’est pas le cas. Aller vers une certification de la sécurité des système d’IA Concrètement, il est donc important de tenir compte de la grande différence qui existe entre le fait de prouver l'aspect sécuritaire de l'expressivité d'un réseau neuronal et celui de prouver la sécurité de son exécution. Afin de prouver l'exécution déterministe d'un réseau neuronal, il n'est pas décisif en fait de savoir comment un réseau neuronal commet des erreurs, mais seulement s'il est exécuté avec succès ou s'il fait des erreurs. Il s’agit de vérifier qu’il est toujours exécuté de manière prévisible, consomme la même quantité de ressources et que l'exécution se fait au sein d'un laps de temps défini. Ce qui est primordial pour garantir non seulement l'intégrité du processus IA en cours d'exécution, mais également l'intégrité de tous les autres processus qui sont exécutés sur le système matériel et utilisent celui-ci de manière conjointe.
Une fois l'expressivité élucidée, comment alors pourrait-on encore prouver que l'exécution de ces bibliothèques et de ces plateformes est sûre ? Au-delà, est-il réellement possible de certifier Python ? Aura-t-on un jour atteint un niveau de simulation suffisant pour que personne n'ait plus à se soucier du château de cartes branlant sur lequel tout repose ? L'industrie se bat pour résoudre une partie du problème et s'assurer que l'expressivité des réseaux neuronaux présente une sécurité avérée. En attendant, il convient de concevoir les systèmes d’IA sur une meilleure base afin de résoudre l'autre partie du problème par le biais d'une plateforme sûre, sur laquelle CoreAVI travaille, et qui dès le départ est pensée pour utiliser des interfaces de programmation standard critiques (API). |