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

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 (25 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 20 000 itérations. Il est meilleur que ceux obtenus précedemment, les noeuds sont répartis dans l'espace, cependant le maillage n'apparait pas.

fin.png

Comment résoudre le problème :

  • Vérifier les calculs fait
  • Eventuellement chercher d'autres ressources si les equations paraissent correctes dans le code
realisation_som.txt · Last modified: 2025/01/09 23:32 by 47.128.43.220