Ressource
En ligne . Parents . Professeurs du secondaire . Jeu . 2017, 04 Avril . Plateforme . Bonne feuille . tensorflow . réseau de neuronesJouez avec les neurones de la machine
« L’intelligence artificielle est la science de faire faire à des machines des choses qui demanderaient de l’intelligence si elles étaient faites par des humains». Tout est dit par le fondateur de l’intelligence artificielle, Marvin Minsky. Exit les fantasmes du genre* de celui d’une «servante-robot, qui sert [le] café [au lit] le matin ». Et comme le mentionne Cédric Villani au lancement de sa mission de réflexion sur ces sujets, notre meilleure arme est «une grande qualité de formation» sur ce sujet qui est «l’affaire de [toutes et] tous». Soit. Et si on commençait, là, maintenant ? Ça vous dirait de soulever le capot de l’intelligence artificielle ?
Un réseau de neurones est un mécanisme générique composé de petites unités (des pseudo-neurones) connectées les unes aux autres. Chaque unité fait une opération très simple : elle prend des valeurs en entrée, les combine très simplement (un simple calcul de moyenne avec des coefficients comme les notes du bac) et applique une transformation sur le résultat (par exemple ne garde que les valeurs positives). Les coefficients utilisés pour pondérer la moyenne sont les paramètres de cet algorithme. C’est la combinaison d’un très, très grand nombre de ces unités qui permet de réaliser des opérations très complexes. Un réseau de telles « neurones » s’obtient en accumulant plusieurs couches de telles unités. En entrée il y a les données que l’on veut traiter. Elles se transforment à travers toutes les couches et la dernière couche donne en sortie une prédiction sur ces données, par exemple détecter s’il y a un visage dans une image. Le réseau de neurone constitue ainsi une fonction paramétrée par ces nombreux coefficients (on parle de « poids ») et c’est le choix de ces poids qui définit le traitement effectué.
Sur l’interface web de TensorFlow, on constitue facilement un réseau d’une douzaine de neurones possédant chacun entre 3 et 10 paramètres. La sortie calculée dépend donc d’une centaines de paramètres en plus des deux coordonnées (x,y) du point d’entrée. Sur l’interface, chaque carré représente un neurone et la couleur du pixel de coordonnées (x,y) dans le carré représente la sortie du neurone quand on met (x,y) en entrée du réseau. Il y a un seul neurone en sortie, il est représenté avec un carré plus grand sur la droite du réseau. Les paramètres du réseau sont initialisés au départ avec des valeurs aléatoires.
Mais comment apprendre ces poids ? L’apprentissage supervisé consiste à fournir des exemples de données accompagnés de la solution à trouver, pour entrainer le réseau à ajuster ces poids comme il faut. Ici, il s’agit d’une série de points dans un carré avec pour chacun une couleur attendue (bleu ou orange), avec comme but de prédire la couleur du point à un endroit donné. C’est un algorithme classique d’ajustement progressif des poids (on parle de « descente de gradient ») qui permet de trouver les paramètres en question. Le bouton « play » en haut à gauche de l’interface permet de lancer cet algorithme, on voit alors la sortie du réseau de neurones évoluer au cours de l’ « apprentissage » : la couleur du fond du neurone de sortie tend à prendre la couleur des points d’entrainement qui sont dessinés par-dessus. Une autre partie du jeu de données est ensuite utilisée pour tester la qualité de la fonction obtenue par le réseau. Une courbe en haut à droite affiche le taux d’erreurs liées aux données utilisées pour apprendre (pour vérifier que les poids se sont bien ajustés) et le taux d’erreurs liées aux autres données de test (pour vérifier que ce qui a été appris se généralise bien à de nouvelles données). Des boutons sur la gauche permettent de régler la répartition des données entre le jeu d’apprentissage et celui de test et aussi d’ajouter des erreurs aux données (les bruiter) pour voir si le mécanisme est robuste face à ces erreurs.
En pratique, on arrive à trouver des paramètres satisfaisants, mais il n’y a pas vraiment de cadre théorique pour formaliser tout cela, c’est affaire d’expérience : choisir le bon nombre de neurones, le bon nombre de couches de neurones, quels calculs préliminaires ajouter en entrée (par exemple multiplier les entrées pour augmenter les degrés de liberté permettant de faire le calcul). Ce genre de techniques permet d’obtenir des résultats impressionnants en pratique, comme en reconnaissance de la voix ou d’objets dans une image (voir les vidéos du cours de Yann Le Cun au Collège de France). Cependant, comprendre pourquoi (et comment) on obtient de si bons résultats reste une question scientifique encore assez ouverte. En attendant voulez-vous essayer une application réelle sur des données réelles ? C’est par ici https://www.clarifai.com/demo (il suffit de jouer avec les options).
A vous de tester votre petite cuisine neuronale ! Arriverez-vous à mettre les bonnes couleurs sur le jeu de données en spirale ?
Quelques exemples
Thalita Firmo-Drumond à partir d’une proposition de Laurent Viennot éditée par Valérie François et publiée conjointement sur binaire.blog.lemonde.fr.
(*) On trouve hélas cette métaphore sexiste et anti-pédagogique au possible (sans aucune explicitation du propos qui serait au deuxième degré), en introduction du livre blanc sur l’intelligence artificielle produit par un institut de recherche de référence sur ces sujets.
Dernière modification : septembre 2020.