===== 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. {{: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