Partager

La vérification des réseaux de neurones : un défi à relever

© Adobe Stock / immimagery
La vérification formelle de réseaux de neurones présente de nombreux défis. Si des langages existent pour décrire finement les comportements attendus de ces logiciels, les outils de validation actuels ne prennent pas en compte toute la richesse de ces langages. Le CEA-List étudie les pratiques issues du domaine des langages de programmation pour étendre ce qu’il est possible de vérifier.

Notre société repose sur des systèmes logiciels critiques (par exemple pour la sûreté ferroviaire ou nucléaire) dont le dysfonctionnement peut entraîner des conséquences graves pour les personnes, l’environnement et les infrastructures. Un très haut niveau de confiance dans leur bon fonctionnement est donc exigé avant leur déploiement. Parmi les domaines qui composent la recherche informatique, la science des langages de programmation s’attache à inventer de nouvelles façons de concevoir et écrire des logiciels plus sûrs.

Toutefois, l’intégration de réseaux de neurones dans les systèmes critiques rebat les cartes. Leurs modalités de conception les rendent difficiles à décrire formellement et donc à vérifier. En particulier, Python, le langage de programmation le plus utilisé pour la conception des réseaux de neurones, est très difficile à analyser. De plus, les réseaux de neurones ne sont constitués que de successions de très gros calculs algébriques, sans lien apparent avec le résultat qu’ils fournissent.

Par conséquent, les caractéristiques des réseaux de neurones sont très éloignées de celles des logiciels classiques auxquels est habituée la communauté de la vérification de programmes.

Nous avons d’abord décrit les conséquences de la vérification des réseaux de neurones sur les outils de vérification de programmes. Les points à retenir sont les suivants :

  • Les bancs d’essai existants pour la vérification de réseaux de neurones sont biaisés sur une classe de problèmes très spécifiques, qui semblent éloignés des attentes réelles des acteurs industriels
  • Les formats d’entrée des outils de vérification actuels sont très bas-niveau (proches du langage machine), créant une distance importante et non-maîtrisée entre la description formelle d’un programme et ce qu’il est possible de vérifier (voir Figure 1).

 


Figure 1 : distance entre la spécification formelle d’un programme et son comportement effectif.


Nous avons ensuite proposé d’adapter aux réseaux de neurones des pratiques déjà connues dans la recherche en langage de programmation :

  • d’une part, décrire les propriétés attendues de sûreté et de sécurité directement dans le langage de programmation ;
  • d’autre part, dans une approche plus réaliste, s’inspirer de la littérature des langages de spécification d’interface pour spécifier a posteriori des systèmes déjà existants : une partie de la description formelle du système est ajoutée dans le programme lui-même ; ces informations pourront être plus facilement exploitées par les outils de vérification existants.

 
Nous avons enfin proposé des langages de description adaptés à cette approche.

La spécification des réseaux de neurones constitue un important sujet de recherche, auquel nous devons répondre à un niveau fondamental : celui du langage de programmation.

Rebecca Cabean

Julien Girard-Satabin

Ingénieur-chercheur — CEA-List

En savoir plus

Projets

  • Projet SAIF du PEPR Intelligence Artificielle,
  • Projet DeepGreen

Publication majeure

  • « Neural Network Verification is a Programming Language Challenge ». L. C. Corneiro, M. L. Daggitt,
    J. Girard-Satabin, O. Isac, T. T. Johnson, G. Katz, E. Komendantskaya, A. Lemesle, E. Manino, A. Sinkarovs, H. Wu, In European Symposium on Programming (ESOP), 2025. https://doi.org/10.48550/arXiv.2501.05867 Plateforme logicielle CAISAR