This is an old revision of the document!
SOM
Articles / tuto utilisés :
Principe
Initialiser les noeuds avec des poids aléatoires (les coordonées des noeuds dans ce cas)
Sélectionner une position dans l'espace à discrétiser
Chercher le noeud le plus près de cette position (neurone gagnant)
Mettre son poids à jour (le rapprocher de la donnée d'entrée)
Mettre les poids de ses voisins à jour (un peu moins que le gagnant)
Réduire petit à petit l'intensité de la mise à jour
Réduire petit à petit la portée du voisinage
Répeter 2 à 7 pour un nombre d'itérations
Equations utilisées
pluspres.png
majgagnant.png
Avec Θ(t) la fonction de voisinage et L(t) le taux d'apprentissage :
Θ(t) = exp( -dist² / 2σ²(t))
et
L(t) = L0 * exp(-t / λ)
Tests
J'ai testé l'algorithme décrit au dessus sur un espace vide en deux dimensions. Les données sont choisies aléatoirement en tirant un x et un y tel que x, y [0, 100[ ∈ N.
vide.png
Résultat
Il y a probablement un petit souci quelque part, les noeuds se collent et partent