L’expérience des spirales est un test classique pour évaluer un réseau de neurones.
On génère deux spirales entrelacées, l’une bleue, l’autre rouge. Chaque point est un exemple, avec ses coordonnées et sa couleur. Le réseau doit apprendre à tracer une frontière qui sépare correctement les deux spirales, point par point.
C’est un problème difficile parce que les spirales ne sont pas linéaires : on ne peut pas les séparer avec une simple ligne droite. Un bon réseau doit capturer une structure complexe, avec des courbes, des enroulements, des zones imbriquées.
L’intérêt de ce test est de voir si le réseau est capable d’apprendre une séparation non linéaire à partir d’exemples, et si sa frontière de décision s’adapte finement à la forme des données. C’est un excellent révélateur de la capacité d’un modèle à généraliser sur une tâche visuelle simple mais exigeante.
Et ces petites recherches depuis ces 2 derniers jours me mènent à vouloir réaliser le test avec un nouveau paradigme en terme de réseau de neurones, ce qui découle directement de "ce qui s'est imposé à moi" il y a 2 jours (j'ai eu "une vision"). Que je relative tant ça ne veut pour le moment rien dire d'évident. Mais, ça me mène à imaginer un nouveau type de "neurones" un peu plus coûteuses que les neurones formelles d'un point de vue "coût machine", mais ayant davantage de dimensions et en soi, plus adaptatives. Théoriquement, on pourrait utiliser 4 fois moins de neurones pour une même tâche donnée, pour un résultat non pas égal : mais supérieur. J'ai bien dit : théoriquement.
Dans l'attente, j'ai réalisé cette expérience de classer des points disposés en spirale, c'est un bon point de départ pour améliorer son réseau.
- A gauche, le "réseau de neurones formelles", classique et très stable dans sa nature. Il est bon forcément puisqu'il est taillé pour réussir facilement ce type d'expérience, et très stable. Très "mécanique" pourrais-je dire de façon péjorative.
- A droite, mon réseau de neurones, au lieu d'utiliser 8 neurones dans la couche cachée ou discrète, ça en utilise 4 (théoriquement je pourrais en utiliser 2 mais ça demandera encore un peu de travail). Volontairement, je soumets une session particulière en ce sens qu'on voit qu'il galère un peu en apparence (il est bien plus rapide sur la plupart des sessions). Je pense aussi que ce qui perturbait l'expérience est le fait que ça usait de la ressource sur mon pc-portable qui enregistrait en live ce qui se passait pour faire le gif animé, donc "le coût machine" pompé par l'enregistrement vidéo a ruiné "un peu" l'expérience. Mais ce n'est pas une excuse, il est évident qu'il reste encore de notables améliorations à faire.
Vous remarquerez que mon réseau produit un résultat plus instable dans sa recherche, presque "vivant", moins mécanique, c'est très bon signe au contraire... c'est exactement ce que je veux, même s'il semble un peu plus en galère, le réseau s'adapte et finit par réussir. Sa nature le dote d'une grande plasticité.

Je vais être clair, quand on a des idées comme ça, et qu'on commence à tester la chose, il faut se méfier, rester sur la réserve. En l'état, un scientifique appellerait ça "un jouet". Ce qui ne veut pas dire "inintéressant", mais non éprouvé et non mesuré, c'est inexploitable. Donc ça doit passer une batterie de tests et de protocoles pour progressivement passer du statut de "jouet" > à "outil industriel". Et vous vous en doutez, cela dépasse de loin mes propres compétences. Pour parvenir à "élever" ces idées et ce type de recherche vers des applications concrètes, il est impossible de rester isolé.