Ce POST ne concerne pas vraiment la « Radio », mais il permettra à ceux que ça intéresse de « voir » ce qu’on arrive à faire avec quelques lignes de code mettant en œuvre quelques principes de cette IA dont on entend parler ces temps-ci.
Le programme joint permet de faire tourner sur son PC un petit « Réseau de Neurones », utilisant pour son apprentissage la technique des « Algorithmes Génétiques », le tout est écrit en langage Java.
Explication :
Le programme génère 2000 serpents, chacun ayant son petit « Cerveau » de quelques neurones seulement, chacun d’eux étant initialisé avec des nombres aléatoires (poids et bias).
On peut, en modifiant le programme source, ajuster le nombre de couches du réseau, et le nombres de neurones par couche.
Ensuite, il lance les 2000 serpents dans le jeu, dont au départ, il ne connaît aucune règle.
Puis il dessine à l’écran le meilleur serpent (i.e: celui qui a survécu le plus longtemps).
Il génère ensuite une nouvelle génération de 2000 serpents en ajoutant du « bruit » sur les poids / bias des Neurones du meilleurs des serpents, et obtient ainsi 2000 nouveaux serpents pour la génération 2, lesquels sont donc de proches variations du meilleur des serpents de la 1ère génération. Les poids/bias ne sont donc plus des nombres aléatoires.
Et puis ça recommence…
Au début, le serpent le meilleur est quand même très « con », mais au fur et à mesure des générations successives, il s’améliore tout seul 😊
Il suffit de laisser tourner le programme assez longtemps pour obtenir un serpent assez « malin » (voir image ci-dessous à la génération 77)
Installation :
Le programme en pièce jointe (SnakeAI.zip) s’exécute dans le soft « Processing » que vous pouvez télécharger en suivant ce lien:
Ce programme a une interface utilisateur qui ressemble à celle de l’Arduino, mais qui possède aussi une partie graphique (pour dessiner le serpent). Comme pour un programme Arduino, il y a une “loop” principale, gérée par lui, et qui fait tourner le programme qu’on lui donne à faire.
Voici ce que ça donne au bout d’une petite ½ heure de Run, à la 77ème génération :
Le fichier .ZIP ci-dessous contient un dossier avec tous les modules java nécessaire.
Le point d’entrée est SnakeAI.pde
C’est lui qu’il faut ouvrir avec le programme “Processing”
Voici ce que ça donne au bout de 287 générations (une nuit de Run), avec un réseau de 3 couches de 6 neurones.
Le truc a développé une stratégie assez rigolote. Il fait le tour du cadre, et monte chercher la Pomme depuis le bas, ce qui lui évite de se bouffer lui-même 😊
Cliquez sur l’image ci-dessous pour voir la vidéo.
Bon amusement 😊