{"id":3482,"date":"2024-04-12T09:00:00","date_gmt":"2024-04-12T07:00:00","guid":{"rendered":"https:\/\/smalltalks.eu\/blog\/?p=3482"},"modified":"2026-10-12T17:57:06","modified_gmt":"2026-10-12T15:57:06","slug":"mon-reseau-de-neurones-art-1993-2024","status":"publish","type":"post","link":"https:\/\/smalltalks.eu\/blog\/2024\/04\/12\/mon-reseau-de-neurones-art-1993-2024\/","title":{"rendered":"Mon r\u00e9seau de neurones ART (1993-2024)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En 1993, en deuxi\u00e8me ann\u00e9e d&#8217;\u00e9cole d&#8217;ing\u00e9nieurs, nous faisions une recherche bibliographique sur l&#8217;intelligence artificielle. Nous avons aussi programm\u00e9 un r\u00e9seau de neurones : pas le perceptron des manuels, mais un r\u00e9seau ART, pour <em>Adaptive Resonance Theory<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La premi\u00e8re version, je l&#8217;ai \u00e9crite en C, avec THINK C, sur mon Macintosh SE\/30. Trente ans plus tard, en avril 2024, je l&#8217;ai retrouv\u00e9e, d\u00e9poussi\u00e9r\u00e9e en C++ et confront\u00e9e \u00e0 un vrai jeu de donn\u00e9es. Le code est sur GitHub : <a href=\"https:\/\/github.com\/yleblond\/ARTNetwork\">yleblond\/ARTNetwork<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La r\u00e9sonance adaptative<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La th\u00e9orie de la r\u00e9sonance adaptative, propos\u00e9e par Stephen Grossberg \u00e0 partir de 1976, puis d\u00e9velopp\u00e9e avec Gail Carpenter, r\u00e9pond \u00e0 un dilemme que les r\u00e9seaux de neurones connaissent encore : comment apprendre des choses nouvelles sans effacer ce que l&#8217;on sait d\u00e9j\u00e0 ? C&#8217;est le dilemme stabilit\u00e9-plasticit\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le principe : le r\u00e9seau compare chaque forme qu&#8217;il re\u00e7oit au prototype qu&#8217;il a d\u00e9j\u00e0 m\u00e9moris\u00e9 et qui lui ressemble le plus. Si la ressemblance d\u00e9passe un seuil, la \u00ab vigilance \u00bb, il y a r\u00e9sonance : le prototype s&#8217;affine. Sinon, le r\u00e9seau se r\u00e9initialise et cherche ailleurs, jusqu&#8217;\u00e0 cr\u00e9er une nouvelle cat\u00e9gorie. Il apprend sans professeur, et sans oublier.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Le code de 1993<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le programme garde la trace de son \u00e9poque : des classes <code>ARTNeuron<\/code>, <code>ARTLayer<\/code> et <code>ARTNetwork<\/code>, mais des noms de variables en fran\u00e7ais (sortie, activit\u00e9, poids, inhibition, excitation), des param\u00e8tres r\u00e9gl\u00e9s \u00e0 la main (une vigilance de 0,97, une plasticit\u00e9 de 0,035), et de petits exemples d&#8217;apprentissage : des lettres dessin\u00e9es sur une grille de trois cases sur trois.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2024 : l&#8217;\u00e9preuve de MNIST<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En le remettant en route, je l&#8217;ai test\u00e9 sur MNIST, la base de r\u00e9f\u00e9rence de 70 000 chiffres manuscrits sur laquelle on entra\u00eene aujourd&#8217;hui les r\u00e9seaux de neurones des cours d&#8217;initiation. Le verdict tient dans le fichier README : \u00ab <em>A na\u00efve and rustic ART Neural Network Implementation\u2026 Not so successful \ud83d\ude09<\/em> \u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Peu importe : c&#8217;\u00e9tait le plaisir de comprendre en construisant. Et la boucle est boucl\u00e9e, de cette curiosit\u00e9 d&#8217;\u00e9tudiant aux outils d&#8217;intelligence artificielle avec lesquels je travaille aujourd&#8217;hui.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voir aussi : <a href=\"https:\/\/smalltalks.eu\/blog\/?p=520\">des r\u00e9seaux de neurones de 1993 au prix Nobel 2024<\/a>, <a href=\"https:\/\/smalltalks.eu\/blog\/?p=282\">la recherche bibliographique de 1993<\/a>, <a href=\"https:\/\/smalltalks.eu\/blog\/?p=2838\">programmer en C sur un Mac classique : THINK C<\/a>, <a href=\"https:\/\/smalltalks.eu\/blog\/?p=1636\">le Macintosh SE\/30<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Code : <a href=\"https:\/\/github.com\/yleblond\/ARTNetwork\">github.com\/yleblond\/ARTNetwork<\/a> (C++, 1993, revu en 2024).<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En 1993, en deuxi\u00e8me ann\u00e9e d&#8217;\u00e9cole d&#8217;ing\u00e9nieurs, nous faisions une recherche bibliographique sur l&#8217;intelligence artificielle. Nous avons aussi programm\u00e9 un r\u00e9seau de neurones : pas le perceptron des manuels, mais un r\u00e9seau ART, pour Adaptive Resonance Theory. La premi\u00e8re version, je l&#8217;ai \u00e9crite en C, avec THINK C, sur mon Macintosh SE\/30. Trente ans plus tard, en avril 2024, je l&#8217;ai retrouv\u00e9e, d\u00e9poussi\u00e9r\u00e9e en C++ et confront\u00e9e \u00e0 un vrai jeu de donn\u00e9es. Le code est sur GitHub : yleblond\/ARTNetwork&#8230;.<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/smalltalks.eu\/blog\/2024\/04\/12\/mon-reseau-de-neurones-art-1993-2024\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[244,416,161,32,110],"tags":[],"class_list":["post-3482","post","type-post","status-publish","format-standard","hentry","category-memoire-de-linformatique","category-souvenirs","category-theme-development-logiciel","category-theme-information-technologies","category-theme-intelligence-artificielle"],"_links":{"self":[{"href":"https:\/\/smalltalks.eu\/blog\/wp-json\/wp\/v2\/posts\/3482","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smalltalks.eu\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/smalltalks.eu\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/smalltalks.eu\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/smalltalks.eu\/blog\/wp-json\/wp\/v2\/comments?post=3482"}],"version-history":[{"count":1,"href":"https:\/\/smalltalks.eu\/blog\/wp-json\/wp\/v2\/posts\/3482\/revisions"}],"predecessor-version":[{"id":3483,"href":"https:\/\/smalltalks.eu\/blog\/wp-json\/wp\/v2\/posts\/3482\/revisions\/3483"}],"wp:attachment":[{"href":"https:\/\/smalltalks.eu\/blog\/wp-json\/wp\/v2\/media?parent=3482"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/smalltalks.eu\/blog\/wp-json\/wp\/v2\/categories?post=3482"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/smalltalks.eu\/blog\/wp-json\/wp\/v2\/tags?post=3482"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}