{"id":811,"date":"2024-03-13T10:34:44","date_gmt":"2024-03-13T09:34:44","guid":{"rendered":"https:\/\/www.f4laa.fr\/?p=811"},"modified":"2024-03-13T18:16:14","modified_gmt":"2024-03-13T17:16:14","slug":"reseau-de-neurones-et-algo-genetique","status":"publish","type":"post","link":"https:\/\/www.f4laa.fr\/index.php\/2024\/03\/13\/reseau-de-neurones-et-algo-genetique\/","title":{"rendered":"R\u00e9seau de Neurones et Algorithme g\u00e9n\u00e9tique"},"content":{"rendered":"\n<p>Ce POST ne concerne pas vraiment la \u00ab\u00a0Radio\u00a0\u00bb, mais il permettra \u00e0 ceux que \u00e7a int\u00e9resse de \u00ab\u00a0voir\u00a0\u00bb ce qu\u2019on arrive \u00e0 faire avec quelques lignes de code mettant en \u0153uvre quelques principes de cette IA dont on entend parler ces temps-ci.<\/p>\n\n\n\n<p>Le programme joint permet de faire tourner sur son PC un petit \u00ab\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/R%C3%A9seau_de_neurones_artificiels\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">R\u00e9seau de Neurones<\/a>\u00a0\u00bb, utilisant pour son apprentissage la technique des \u00ab\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Algorithme_g%C3%A9n%C3%A9tique\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Algorithmes G\u00e9n\u00e9tiques<\/a>\u00a0\u00bb, le tout est \u00e9crit en langage Java.<\/p>\n\n\n\n<p><strong>Explication&nbsp;:<\/strong><\/p>\n\n\n\n<p>Le programme g\u00e9n\u00e8re 2000 serpents, chacun ayant son petit \u00ab\u00a0Cerveau\u00a0\u00bb de quelques neurones seulement, chacun d&rsquo;eux  \u00e9tant  initialis\u00e9 avec des nombres al\u00e9atoires (poids et bias).<\/p>\n\n\n\n<p>On peut, en modifiant le programme source, ajuster le nombre de couches du r\u00e9seau, et le nombres de neurones par couche.<\/p>\n\n\n\n<p>Ensuite, il lance les 2000 serpents dans le jeu, dont au d\u00e9part, il ne conna\u00eet aucune r\u00e8gle.<\/p>\n\n\n\n<p>Puis il dessine \u00e0 l&rsquo;\u00e9cran le meilleur serpent (i.e: celui qui a surv\u00e9cu le plus longtemps). <\/p>\n\n\n\n<p>Il g\u00e9n\u00e8re ensuite une nouvelle g\u00e9n\u00e9ration de 2000 serpents en ajoutant du \u00ab\u00a0bruit\u00a0\u00bb sur les poids \/ bias des Neurones du meilleurs des serpents, et obtient ainsi 2000 nouveaux serpents pour la g\u00e9n\u00e9ration 2, lesquels sont donc de proches variations du meilleur des serpents de la 1<sup>\u00e8re<\/sup>\u00a0g\u00e9n\u00e9ration. Les poids\/bias ne sont donc plus des nombres al\u00e9atoires.<\/p>\n\n\n\n<p>Et puis \u00e7a recommence\u2026<\/p>\n\n\n\n<p>Au d\u00e9but, le serpent le meilleur est quand m\u00eame tr\u00e8s \u00ab\u00a0con\u00a0\u00bb, mais au fur et \u00e0 mesure des g\u00e9n\u00e9rations successives, il s\u2019am\u00e9liore tout seul\u00a0\ud83d\ude0a<\/p>\n\n\n\n<p>Il suffit de laisser tourner le programme assez longtemps pour obtenir un serpent assez \u00ab&nbsp;malin&nbsp;\u00bb (voir image ci-dessous \u00e0 la g\u00e9n\u00e9ration 77)<\/p>\n\n\n\n<p><strong>Installation&nbsp;:<\/strong><\/p>\n\n\n\n<p>Le programme en pi\u00e8ce jointe (SnakeAI.zip) s\u2019ex\u00e9cute dans le soft \u00ab\u00a0<strong>Processing\u00a0<\/strong>\u00bb que vous pouvez t\u00e9l\u00e9charger en suivant ce lien:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/processing.org\/download\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">processing.org\/download<\/a><\/li>\n<\/ul>\n\n\n\n<p>Ce programme a une interface utilisateur qui ressemble \u00e0 celle de l\u2019Arduino, mais qui poss\u00e8de aussi une partie graphique (pour dessiner le serpent). Comme pour un programme Arduino, il y a une \u201cloop\u201d principale, g\u00e9r\u00e9e par lui, et qui fait tourner le programme qu\u2019on lui donne\u00a0 \u00e0 faire.<\/p>\n\n\n\n<p>Voici ce que \u00e7a donne au bout d\u2019une petite \u00bd heure de Run, \u00e0 la 77\u00e8me g\u00e9n\u00e9ration :<\/p>\n\n\n\n<p class=\"has-text-align-center\"> <img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"693\" class=\"wp-image-812\" style=\"width: 1000px;\" src=\"https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeIA1.png\" alt=\"\" srcset=\"https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeIA1.png 1210w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeIA1-300x208.png 300w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeIA1-1024x709.png 1024w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeIA1-768x532.png 768w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeIA1-433x300.png 433w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n\n\n\n<p>Le fichier .ZIP ci-dessous contient un dossier avec tous les modules java n\u00e9cessaire.<\/p>\n\n\n\n<p>Le point d\u2019entr\u00e9e est&nbsp;<strong>SnakeAI.pde<\/strong><\/p>\n\n\n\n<p>C\u2019est lui qu\u2019il faut ouvrir avec le programme \u201cProcessing\u201d<\/p>\n\n\n\n<p> <a href=\"https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeAI.zip\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><img loading=\"lazy\" decoding=\"async\" width=\"80\" height=\"83\" class=\"wp-image-816\" style=\"width: 80px;\" src=\"https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/WinZip.png\" alt=\"\"><\/a><img decoding=\"async\" class=\"wp-image-814\" style=\"width: NaNpx;\" src=\"https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeAI.zip\" alt=\"\"><\/p>\n\n\n\n<p>Voici ce que \u00e7a&nbsp; donne au bout de 287 g\u00e9n\u00e9rations (une nuit de Run), avec un r\u00e9seau de 3 couches de 6 neurones.<\/p>\n\n\n\n<p>Le truc a d\u00e9velopp\u00e9 une strat\u00e9gie assez rigolote. Il fait le tour du cadre, et monte chercher la Pomme depuis le bas, ce qui lui \u00e9vite de se bouffer lui-m\u00eame\u00a0\ud83d\ude0a<\/p>\n\n\n\n<p class=\"has-text-align-center\">Cliquez sur l&rsquo;image ci-dessous pour voir la vid\u00e9o. <img decoding=\"async\" class=\"wp-image-820\" style=\"width: 150px;\" src=\"https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeAI.mp4\" alt=\"\"><a href=\"https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeAI.mp4\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"677\" class=\"wp-image-821\" style=\"width: 1000px;\" src=\"https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeIA2.png\" alt=\"\" srcset=\"https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeIA2.png 1187w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeIA2-300x203.png 300w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeIA2-1024x694.png 1024w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeIA2-768x520.png 768w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/03\/SnakeIA2-443x300.png 443w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Bon amusement\u00a0\ud83d\ude0a<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ce POST ne concerne pas vraiment la \u00ab\u00a0Radio\u00a0\u00bb, mais il permettra \u00e0 ceux que \u00e7a int\u00e9resse de \u00ab\u00a0voir\u00a0\u00bb ce qu\u2019on arrive \u00e0 faire avec quelques &hellip;<\/p>\n","protected":false},"author":1,"featured_media":812,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-811","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ia"],"_links":{"self":[{"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/posts\/811","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/comments?post=811"}],"version-history":[{"count":21,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/posts\/811\/revisions"}],"predecessor-version":[{"id":866,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/posts\/811\/revisions\/866"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/media\/812"}],"wp:attachment":[{"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/media?parent=811"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/categories?post=811"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/tags?post=811"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}