Site Tools


Hotfix release available: 2024-02-06b "Kaos". upgrade now! [55.2] (what's this?)
Hotfix release available: 2024-02-06a "Kaos". upgrade now! [55.1] (what's this?)
New release available: 2024-02-06 "Kaos". upgrade now! [55] (what's this?)
Hotfix release available: 2023-04-04b "Jack Jackrum". upgrade now! [54.2] (what's this?)
Hotfix release available: 2023-04-04a "Jack Jackrum". upgrade now! [54.1] (what's this?)
New release available: 2023-04-04 "Jack Jackrum". upgrade now! [54] (what's this?)
Hotfix release available: 2022-07-31b "Igor". upgrade now! [53.1] (what's this?)
Hotfix release available: 2022-07-31a "Igor". upgrade now! [53] (what's this?)
New release available: 2022-07-31 "Igor". upgrade now! [52.2] (what's this?)
New release candidate 2 available: rc2022-06-26 "Igor". upgrade now! [52.1] (what's this?)
New release candidate available: 2022-06-26 "Igor". upgrade now! [52] (what's this?)
Hotfix release available: 2020-07-29a "Hogfather". upgrade now! [51.4] (what's this?)
realisation_som

This is an old revision of the document!


SOM

Articles / tuto utilisés :

  • http:www.saedsayad.com/clustering_som.htm * https:eric.univ-lyon2.fr/~ricco/cours/slides/kohonen_som.pdf
  • http:www.cs.bham.ac.uk/~jxb/NN/l16.pdf * https:fr.wikipedia.org/wiki/Carte_auto_adaptative

Principe

  • Créer une grille de noeuds
  1. Initialiser les noeuds avec des poids aléatoires (les coordonées des noeuds dans ce cas)
  2. Sélectionner une position dans l'espace à discrétiser
  3. Chercher le noeud le plus près de cette position (neurone gagnant)
  4. Mettre son poids à jour (le rapprocher de la donnée d'entrée)
  5. Mettre les poids de ses voisins à jour (un peu moins que le gagnant)
  6. Réduire petit à petit l'intensité de la mise à jour
  7. Réduire petit à petit la portée du voisinage
  8. Répeter 2 à 7 pour un nombre d'itérations

Selon les ressources choisies sur internet, les algorithmes n'ont pas la même manière de mettre à jour les neurones voisins du gagnant.

Equations utilisées

  • Recherche du noeud le plus près :

pluspres.png

  • Mise à jour des poids du neurone gagnant :

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 / λ)

Expérience

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

Les noeuds (100 ici) sont placés aléatoirement dans cet espace comme décrit à l'étape 1 de l'algorithme.

debut.png

Résultat

Voila le résultat après environ 6 000 itérations. Il est meilleur que ceux obtenus précedemment, les noeuds sont répartis dans l'espace et contrairement à ce matin, on voit un maillage.

Le taux d'apprentissage a été diminué plusieurs fois pour permettre de bouger les noeuds avec plus de précision. Il était de 1 sur les premiers tests et diminuait petit à petit lors de l'exécution avec cette équation :
L(t) = L0 * exp(-t / λ)
Au lieu de commencer à 1 il commence maintenant à 0.10. A la fin de l'exécution les noeuds bougent beaucoup moins se placent assez correctement pour avoir un maillage -relativement- régulier.

fin.png

realisation_som.1741020508.txt.gz · Last modified: 2025/03/03 17:48 by 47.128.18.75