Dans Neural Bird, regardez des réseaux de neurones artificiels évoluer grâce à un algorithme génétique pour apprendre à jouer à flappy bird.
Le réseau de neurones est composé de trois entrées (la distance horizontale jusqu'au prochain tuyau, la distance verticale entre l'oiseau et le trou, et la vitesse verticale de l'oiseau), deux neurones dans la couche cachée, et un neurone dans la couche de sortie. La fonction d'activaton utilisée pour chaque neurone est la fonction sigmoide.
A chaque génération, les scores des 10 membres de la population sont évalués, puis les deux moins bons sont éliminés et remplacés par un "mélange" du meilleur et d'un autre au hasard(par "mélange", je veux dire que je prend certains poids d'un réseau de neurones et d'autres d'un autre réseau pour en former un nouveau). Et enfin, je fais "muter" certains réseaux en modifiant aléatoirement les valeurs de certains poids.
Le graphique en bas à droite montre les moyennes des scores de chaque génération.
Le programme utilise toutes les variables de A à Z, la liste 1(que vous pouvez modifier/supprimer), et les listes 10 à 13(celles-ci sauvegardent les données du programme : 10: Le meilleur réseau de neurones,11: les scores de la génération actuelle et le meilleur score,12: tous les poids des 10 réseaux de neurones de la population, 13: le nombre de générations et les moyennes des scores à chaque générations).
Le programme à lancer est NRLBIRD, et si vous voulez voir jouer le meilleur réseau de neurones que votre calculatrice a fait évoluer, ajoutez "List 10->List 1" au début du programme NRLBIRD1(et n'oubliez pas de retirer ce bout de code si vous voulez continuer l'évolution).
J'ai mis le meilleur que j'ai fait évoluer dans le programme NRLBEST, il suffit de le lancer, puis de lancer le programme NRLBIRD1 pour le voir jouer.
Ça peux prendre assez longtemps pour arriver à un bon résultat, ainsi, je conseille d'overclocker la calculatrice pour aller plus rapidement.
Salut, J'ai eu l'occasion de tester ton programme sur l'émulateur de la Graph 35 et je dois dire qu'il est performant aux vues de ce que nous permet le Basic Casio. J'avais une question à te poser, où as tu appris le Machine Learning (mise en place d'un réseau de neurones, calculs d'erreurs, calculs des poids, ...)? J'aurai la même question pour l'algorithme génétique.
Oulala zut alors ces commentaires datent de plus d'un mois et j'y ai toujours pas répondu, désolé (d'ailleurs il y a un moyen d'être prévenu des nouveaux commentaires sous ses programmes par mail par exemple, ou juste par une petite icône quand on se connecte sur le site? Sinon ça serait une idée d'amélioration du site).
Merci Totoyo pour cette note!
Benji_ j'ai appris le machine learning sur internet à partir de divers articles, tutoriels... que j'ai trouvé avec de simples recherches du genre "neural network tutorial" ou "algorithme génétique wikipedia"...
Voici quelques sources utiles :
Le livre "The Nature of Code" de Daniel Shiffman, disponible gratuitement sur internet, particulièrement les chapitres 9 et 10 couvrant les algorithmes génétiques et les réseaux de neurones : https://natureofcode.com/book/chapter-10-neural-networks/
Sa chaîne YouTube "The Coding Train" vaut aussi le détour.
La chaîne YouTube d'Hugo Larochelle et sa série de vidéos sur l'intelligence artificielle : https://www.youtube.com/playlist?list=PL6Xpj9I5qXYGhsvMWM53ZLfwUInzvYWsm
Les vidéos sur les réseaux de neurones de la chaine YouTube "3Blue1Brown" : https://www.youtube.com/playlist?list=PLLMP7TazTxHrgVk7w1EKpLBIDoC50QrPS
Autres chaînes intéressantes sur le sujet: Siraj Raval Two Minute Papers la série sur l'intelligence artificielle de science4all carykh CodeParade Code Bullet
Comme tu sembles avoir bien compris le fonctionnement (et l'implémentation) des GA, je ne peux que te suggérer de participer au concours Triforce, dont au moins une des épreuves se prête particulièrement à leur utilisation (cf ce topicd'Hackcell).
Après ce n'est qu'une façon de faire, tu connais peut-être une meilleure méthode pour relever ces défis...
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd