GNG
Ressources utilisées :
http:
www.booru.net/download/MasterThesisProj.pdf
==== Algorithme ====
* Commencer avec deux nœuds relié par un arc d'age 0
- Générer une entrée
- Localiser les deux noeuds les plus près de cette entrée
- Mise à jour de l'erreur locale du noeud gagnant
- Bouger le gagnant et ses voisins vers l'entrée
- Incrémenter l'age des arcs entre le noeud gagnant et ses voisins
- Si les deux noeuds (étape 2) sont relié par un arc, passer son age à 0, sinon créer l'arc
- Supprime un arc s'il atteint un age supérieur au seuil fixé Amax, supprimer le noeud s'il n'est relié à aucun autre noeud
- Si l'itération est un multiple de λ et que le maximum d'itération n'est pas atteint, insérer un noeud entre le noeud qui a la plus grosse erreur et son voisin qui a la plus grosse erreur. Supprimer les arcs entre les deux noeuds et en ajouter entre eux et le noeud nouvellement insérer. Décroître le taux d'erreur pour chaque noeud.
- Décroître un peu le taux d'erreur pour tous les noeuds
- Réitérer les étapes 2 à 9 n fois
==== Equations ====
Mettre à jour le taux d'erreur (étape 3) :
var_erreur.png
Mettre à jour les poids des noeuds (étape 4) :
maj_vecteurs.png
Poids du noeud à insérer (étape 8) :
gng1.png
Mettre à jour les taux d'erreur après insertion d'un nouveau noeud (étape 8) :
gng2.png
Décroître le taux d'erreur de tous les noeuds (étape 9) :
gng3.png
==== Expérience ====
Comme pour la Self Organizing Map, l'expérience se déroule sur un repère orthonormé sur les intervalles x[0, 100] et y [0, 100].
vide.png
J'ajoute deux sets de données, un dans l'intervalle [0, 10] et un dans [50, 60]. Dans le cas du SOM, l'algorithme prenait en entrée des données aléatoires de l'espace, pour le GNG, il va choisir en entrée les données des deux sets précédents.
L'expérience commence en plaçant deux noeuds de manière aléatoire sur le terrain. Avec l'algorithme du GNG ils sont censé se dupliquer et occuper l'espace petit à petit.
debut_gng.png
==== Résultat ====
Après 20000 itérations (ce qui est inutilement grand), j'obtiens le résultat suivant :
fin_gng.png
Les noeuds sont sans cesse crées, supprimés et des arcs disparaissent régulièrement. Le pattern crée par l'algorithme est sans cesse en mouvement, à vrai dire je ne sais pas trop si c'est normal ou non.
A première vue je pense que le problème vient des valeurs associées à α et β (des taux d'apprentissage) et au seuil max de suppression des arcs.
La plupart des GNG trouvés sur internet ont tendance à converger, est ce que la convergence est “simulée” comme dans le SOM ou l'on baisse le taux d'apprentissage petit à petit ou alors est-elle induite par autre chose (mise en place d'un seuil sur le taux d'erreur pour ne pas continuellement créer de nouveaux noeuds par exemple)?