Autre chose (et je prêche pour ma paroisse.
)
Quand on parle de réseaux neuronaux, on ne parle quasiment que des réseaux à combinaisons linéaires.
(Réseaux de plusieurs couches avec une non linéarité introduite entre les couches).
Ce sont évidemment des réseaux très puissants, avec une capacité de généralisation impressionnante.
Car ils apprennent une représentation des données fonctionnelle, sous forme de superposition (des compositions) de fonctions non-linéaires.
Mais les réseaux topologiques, appelés (je pense à tord) réseaux compétitifs (je préfère l'adjectif "topologiques"), créent une topologie des données via projection sur x dimensions (dimension qui peut être la même que celle de l'entrée).
Ils apprennent en créant une cartographie, une topologie des données.
Et en plus les réseaux utilisant des combinaisons linéaires peuvent eux-aussi être entraînés en apprentissage compétitif, à condition d'utiliser les bonnes fonctions de transfert. Bref...
Donc je préfère différencier les deux familles par les 2 appellations : Réseaux à combinaisons linéaires, et Réseaux topologiques. Mais ça n'engage que moi.
De base, ils sont équivalents pour l'apprentissage supervisé, (l'idée est de mettre plusieurs réseaux compétitifs en compétition eux-mêmes pour représenter des données étiquetées par leur classe respective. Je n'ai jamais lu d'article sur cette utilisation, mais j'ai testé et c'est possible).
Mais c'est discret. Le résultat n'est pas un vecteur mais une classe. Mais dans la prise de décision, il s'agit de discrimination, c'est ce qu'on veut. Une entrée doit se convertir en catégorie. (Donc discrète).
Je fais ci, ou je fais ça. C'est de la classification. Evidemment l'approximation de fonction est impossible avec les réseaux compétitifs. (Sauf si on leur met au cul un réseau RBF (radial basis fonction). Mais il faut deux apprentissages successifs dans le temps, d'abord le premier non supervisé (sur le réseau compétitif), ensuite le deuxième supervisé (sur le RBF).... pour avoir un résultat médiocre, et une plausibilité biologique nulle. Mais il doit y avoir des exemples d'expérience positive .
)
Mais l'avantage est au niveau de l'apprentissage de catégories (discrètes). On peut utiliser un apprentissage "semi-supervisé" avec les réseaux topologiques. Cela reste un apprentissage supervisé dans le sens où il faut une aide extérieure (un superviseur). Mais il n'a pas besoin de connaitre la bonne réponse comme c'est le cas dans un apprentissage supervisé. On peut superviser l'apprentissage seulement grâce à une fonction de coût simpliste (booléenne) qui dit
bon ou
pas bon. Un tel superviseur n'a pas besoin de savoir comment répondre correctement, mais juste de savoir quand une décision entraîne un échec final ou une réussite finale.
Du coup, par adaptations successives, le réseau apprend (découvre) tout seul la stratégie à appliquer pour résoudre le problème.
Le comportement émerge seul sans qu'on lui dise comment y parvenir. (J'avoue que c'est cela qui me passionne).
Dans les deux cas en fait, il s'agit de diminuer un gradient (d'erreur ou de distance)
En plus mathématiquement c'est beaucoup plus simple et plus intuitif. (Niveau troisième. Pas besoin de savoir ce qu'est une dérivée, ou un gradient, une matrice, une application linéaire et (non linéaire)). Il suffit de savoir comment calculer des distances, et de corriger les positions selon, soit en rapprochant ou éloignant de la destination, calculer un minimum)
Le réseau topologique le plus intéressant est le GNG (growing neural gaz) avec utilité. J'avais posté une applet Java faite par son inventeur. L'avantage (hors mauvais paramétrage), c'est qu'il n'a aucune limite de précision pour projeter les données. (Il peut créer/supprimer les nœuds, et les liens les unissant (qui définissent le voisinage d'unités sollicitées ensemble (voir l'apprentissage de Hebb) ) pendant l'apprentissage).
Et c'est facile d'implémenter le GNG-U. C'est un système multi-agents très simple. Mais il faut trouver la doc, c'est tout. C'est la seule difficulté.
Un autre avantage, c'est qu'on a pas à estimer (synonyme, paramétrer au pif le nombre de couches et le nombre d'unités dans chaque), la difficulté du problème. Le réseau GNG-U le fait tout seul. On commence par deux neurones reliés, et il se déploit tout seul selon les besoins. ( Il y a deux facteurs : l'erreur et l'utilité. Dans les zones avec une grosse erreur, on peuple le réseau (on ajoute des unités), et dans les zones de faible utilité, on supprime les unités).
Je suis convaincu que c'est une vision doutée comme peu fiable biologiquement, mais Kohonen avait réalisé que les neurones pouvaient se déplacer pour former une projection spatiale des fréquences auditives qui représentaient les besoins au niveau de l'aire auditive. (Formée prématurément elle engendrait l'oreille absolue, avant que l'on apprenne à transposer. Cette plasticité neuronale est éphémère, avant 6 ans pour être large, ce qui fait qu'il est impossible pour un adulte ayant appris l'oreille relative (normale, c'est la façon d'entendre "normalement") de revenir en arrière et d'apprendre l'oreille absolue.)
On nous présente le cerveau comme de la gelée inerte. C'est vraiment dommage. En permanence dans notre vie, des connexions entre neurones se créent, des nouveaux neurones sont crées.
Mais il ne faut pas se leurrer : la plasticité neuronale diminue avec l'âge. Plus on est jeune et plus les apprentissages sont faciles et rapides.
Cette notion d'âge est utilisée dans les réseaux topologiques : plus une connexion est âgée et moins elle évolue.
C'est ma motivation première pour reprendre mes études. Je veux étudier les réseaux topologiques et en faire mon métier.
Par dépit et sans rien vouloir prouver, j'ai fait une AI qui manipule un agent dans une petite grille avec un mur, en utilisant plusieurs GNG-U en compétition sur la direction à prendre.
Et bien ça marche. A la fin de l'apprentissage, l'agent allait chercher la nourriture en contournant le mur si besoin.
(En fait j'utilisais une version adaptée du GNG-U.
Dont le but n'était pas de cartographier, mapper, l'espace d'entrée, mais de cartographier les entrées en fonction de leurs catégories. Ce que je n'aurais pas su faire sans le modèle génial initial. C'est un apprentissage avec une politique de moindre effort : si la bonne classe gagne, on ne change rien. Ce qui fait que plus le réseau évolue, et moins il change, plus il se stabilise, sans pour autant se peupler d'avantage. Par contre si l'unité n'est pas de la bonne catégorie, on la repousse et on diminue son erreur (locale). Une façon de lui dire "dégage t'as rien à foutre là !"
)
Le but de l'apprentissage pour l'application : atteindre la nourriture. Où que soit l'agent, où que soit la nourriture. Avec un mur à contourner qui évitait que le résultat soit fait seulement en vol d'oiseau.
Il y a autant de GNG-U que de catégories. (4 car 4 directions possibles (haut bas gauche droite).
La règle d'apprentissage :
décision entraîne manger la nourriture -> GAGNE
décision entraîne collision contre un mur -> PERDU
trop de mouvements sans avoir atteint la nourriture -> PERDU. (Ce qui fait que l'agent ne tourne pas en rond, et finit par utiliser le plus court chemin)
(règle nécessaire car sinon l'agent finira par avoir un comportement cyclique qui serait stable. Plus d'erreurs, plus de réussites, donc pourquoi changer ?)
C'est un apprentissage compétitif aussi : On détermine le neurone le plus proche et on adapte son réseau comme dans un apprentissage non-supervisé.
Si la réponse est bonne on rapproche le vainqueur de la bonne classe..
Si la réponse est mauvaise, on éloigne le vainqueur. (Il faut aussi diminuer la valeur de l'erreur, pour éviter un peuplement "cancérigène" dans cette zone, car on veut que les autres classes tentent de s'y peupler à la place).
(De fait pour un même stimulus, on finira par avoir un autre vainqueur).