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

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
realisation_som [2025/03/02 23:27]
47.128.18.170 old revision restored (2025/01/15 23:34)
realisation_som [2025/04/02 11:12] (current)
47.128.47.20 old revision restored (2025/01/23 17:33)
Line 1: Line 1:
-==== 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 
 +   - 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 
 + 
 +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?220|}} 
 + 
 +   * Mise à jour des poids du neurone gagnant : 
 + 
 +{{:majgagnant.png?300|}} 
 + 
 +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. 
 + 
 + 
 +==== Résultat ==== 
 + 
 +Il y a probablement un petit souci quelque part, les noeuds se collent et vont de plus en plus loin ( [170, 170] dans l'exemple ci-dessous). Ceci ne devrait pas arriver puisque les données choisies ont une limite de 100 en x et en y. 
 + 
 + 
 +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.1740954428.txt.gz · Last modified: 2025/03/02 23:27 by 47.128.18.170