Pour les besoins, nous discuterons d'un SOM à deux dimensions. Le réseau est créé à partir d'un réseau 2D de « nœuds », dont chacun est entièrement connecté à la couche d'entrée. La figure ci-dessous montre un très petit réseau Kohonen de 4 X 4 nœuds connectés à la couche d'entrée (en vert) représentant un vecteur bidimensionnel.
Chaque nœud a une position topologique spécifique (une coordonnée x, y dans le réseau) et contient un vecteur de poids de même dimension que les vecteurs d'entrée. C'est-à-dire, si les données d'apprentissage sont constituées de vecteurs, V, de n dimensions :
V1, V2, V3…Vn
Ensuite, chaque nœud contiendra un vecteur de poids correspondant W, de n dimensions :
W1, W2, W3…Wn
Un SOM n'a pas besoin de spécifier une sortie cible contrairement à de nombreux autres types de réseau. Au lieu de cela, lorsque les poids des nœuds correspondent au vecteur d'entrée, cette zone du réseau est sélectivement optimisée pour ressembler plus étroitement aux données de la classe dont le vecteur d'entrée est membre. A partir d'une distribution initiale de poids aléatoires, et sur de nombreuses itérations, le SOM finit par s'installer dans une carte de zones stables. Chaque zone est en fait un classificateur d'entités, vous pouvez donc considérer la sortie graphique comme un type de carte d'entités de l'espace d'entrée.
L'entrainement se déroule en plusieurs étapes et en plusieurs itérations :
-
Les poids de chaque nœud sont initialisés.
-
Un vecteur est choisi au hasard dans l'ensemble des données d'apprentissage et présenté au réseau.
-
Chaque nœud est examiné pour calculer les poids qui ressemblent le plus au vecteur d'entrée. Le nœud gagnant est communément appelé Best Matching Unit (BMU).
-
Le rayon du voisinage de la BMU est maintenant calculé. Il s'agit d'une valeur qui commence en grand, généralement définie sur le « rayon » du réseau, mais diminue à chaque pas de temps. Tous les nœuds trouvés dans ce rayon sont réputés être à l'intérieur du voisinage de la BMU.
-
Les poids de chaque nœud voisin (les nœuds trouvés à l'étape 4) sont ajustés pour les rendre plus semblables au vecteur d'entrée. Plus un nœud est proche de la BMU ; plus ses poids s'altèrent.
-
Répétez l'étape 2 pour N itérations.
Il est maintenant temps pour nous d'apprendre comment les SOM apprennent. Es-tu prêt? Commençons. Ici, nous avons une carte auto-organisatrice très basique.
Nos vecteurs d'entrée représentent trois caractéristiques(features) et nous avons neuf nœuds de sortie.
Cela étant dit, cela pourrait vous dérouter de voir comment cet exemple montre trois nœuds d'entrée produisant neuf nœuds de sortie. Ne soyez pas intrigué par cela. Les trois nœuds d'entrée représentent trois colonnes (dimensions) dans l'ensemble de données, mais chacune de ces colonnes peut contenir des milliers de lignes. Les nœuds de sortie dans un SOM sont toujours bidimensionnels.
Maintenant, ce que nous allons faire, c'est transformer ce SOM en un ensemble d'entrées qui vous serait plus familier lorsque nous avons discuté des méthodes d'apprentissage automatique supervisé (réseaux de neurones artificiels, convolutifs et récurrents) dans les chapitres précédents.
Considérez la structure d'auto-organisation qui a 3 nœuds d'entrée visibles et 9 sorties qui sont connectées directement à l'entrée comme indiqué ci-dessous fig.
Nos valeurs de nœuds d'entrée sont :
x1 = 0.7
x2 = 0.6
x3 = 0.9
Voyons maintenant chaque étape en détail.
Maintenant, prenons le nœud de sortie le plus haut et concentrons-nous sur ses connexions avec les nœuds d'entrée. Comme vous pouvez le voir, une pondération est attribuée à chacune de ces connexions.
Encore une fois, le mot «poids» a ici un tout autre sens que celui des réseaux de neurones artificiels et convolutifs. Par exemple, avec les réseaux de neurones artificiels, nous avons multiplié la valeur du nœud d'entrée par le poids et, enfin, avons appliqué une fonction d'activation. Avec les SOM, en revanche, il n'y a pas de fonction d'activation.
Les poids ne sont pas séparés des nœuds ici. Dans un SOM, les poids appartiennent au nœud de sortie lui-même. Au lieu d'être le résultat de l'addition des poids, le nœud de sortie d'un SOM contient les poids en tant que coordonnées. Portant ces poids, il essaie sournoisement de se frayer un chemin dans l'espace d'entrée.
Dans cet exemple, nous avons un jeu de données 3D et chacun des nœuds d'entrée représente une coordonnée x. Le SOM les compresserait en un seul nœud de sortie qui porte trois poids. Si nous avons affaire à un ensemble de données à 20 dimensions, le nœud de sortie, dans ce cas, porterait 20 coordonnées de poids.
Chacun de ces nœuds de sortie ne fait pas exactement partie de l'espace d'entrée, mais essaie néanmoins de s'y intégrer, en développant des lieux imaginaires pour eux-mêmes.
Nous avons initialisé aléatoirement les valeurs des poids (proche de 0 mais pas de 0).
La prochaine étape consiste à parcourir notre ensemble de données. Pour chacune des lignes de notre ensemble de données, nous essaierons de trouver le nœud le plus proche.
Disons que nous prenons la ligne numéro 1 et que nous extrayons sa valeur pour chacune des trois colonnes que nous avons. Nous voudrons ensuite trouver lequel de nos nœuds de sortie est le plus proche de cette ligne.
Pour déterminer la meilleure unité d'appariement, une méthode consiste à parcourir tous les nœuds et à calculer la distance euclidienne entre le vecteur de poids de chaque nœud et le vecteur d'entrée actuel. Le nœud avec un vecteur de poids le plus proche du vecteur d'entrée est étiqueté comme BMU.
La distance euclidienne est donnée par :
Où X est le vecteur d'entrée actuel et W est le vecteur de poids du nœud.
Calculons la meilleure unité de correspondance à l'aide de la formule de distance.
Pour les 1ers nœuds :
Pour le 2ème nœuds :
Pour les 3ème nœuds :
De même, nous calculons tous les nœuds restants de la même manière que vous pouvez le voir ci-dessous.
Puisque nous avons calculé toutes les valeurs de Noeuds respectifs. Il est maintenant temps de calculer la meilleure unité de correspondance.
Comme on peut le voir, le nœud numéro 3 est le plus proche avec une distance de 0,4. Nous appellerons ce nœud notre BMU (best-matching unit).
Pour comprendre cette prochaine partie, nous devrons utiliser un plus grand SOM.
Soi-disant, vous comprenez maintenant quelle est la différence entre les poids dans le contexte SOM par rapport à celui auquel nous étions habitués lorsque nous traitions de l'apprentissage automatique supervisé.
Le cercle rouge dans la figure ci-dessus représente le BMU de cette carte. Maintenant, le nouveau SOM devra mettre à jour ses poids afin qu'il soit encore plus proche de la première ligne de notre ensemble de données. La raison pour laquelle nous en avons besoin est que nos nœuds d'entrée ne peuvent pas être mis à jour, alors que nous avons le contrôle de nos nœuds de sortie.
En termes simples, notre SOM se rapproche du point de données en étirant le BMU vers lui. L'objectif final est d'aligner notre carte sur l'ensemble de données comme nous le voyons dans l'image à l'extrême droite.
C'est là que les choses commencent à devenir plus intéressantes ! À chaque itération, une fois la BMU déterminée, l'étape suivante consiste à calculer lesquels des autres nœuds se trouvent dans le voisinage de la BMU. Tous ces nœuds verront leurs vecteurs de poids modifiés à l'étape suivante. Alors comment fait-on ? Eh bien, ce n'est pas trop difficile… d'abord, vous calculez quel devrait être le rayon du voisinage et ensuite c'est une simple application du bon vieux Pythagore pour déterminer si chaque nœud est dans la distance radiale ou non.
La figure montre un exemple de la taille d'un quartier typique proche du début de l'entrainement.
Vous pouvez voir que le quartier illustré ci-dessus est centré autour du BMU (point rouge) et englobe la plupart des autres nœuds et le rayon d'affichage du cercle.
La taille du voisinage autour de la BMU diminue avec une fonction de décroissance exponentielle. Il rétrécit à chaque itération jusqu'à atteindre juste le BMU
Pour t = 0, 1, 2, 3….
La figure ci-dessous montre comment le voisinage diminue au fil du temps après chaque itération
Au fil du temps, le voisinage se rétrécira à la taille d'un seul nœud… le BMU.
Maintenant que nous connaissons le rayon, il suffit de parcourir tous les nœuds du réseau pour déterminer s'ils se trouvent ou non dans le rayon. Si un nœud se trouve dans le voisinage, son vecteur de poids est ajusté comme suit à l'étape 4.
Cela dépend de la plage et de l'échelle de vos données d'entrée. Si vous normalisez à zéro les valeurs de vos caractéristiques, essayez σ=4. Si vous normalisez les valeurs des caractéristiques sur une plage de [0, 1], vous pouvez toujours essayer σ=4, mais une valeur de σ=1 pourrait être meilleure. N'oubliez pas que vous devez diminuer le taux d'apprentissage et la taille de la fonction de voisinage avec des itérations croissantes, car aucune des métriques ne reste constante tout au long des itérations dans SOM.
Cela dépend également de la taille de votre SOM. S'il s'agit d'un 10 par 10, utilisez par exemple σ=5. Sinon, s'il s'agit d'une carte de 100 x 100, utilisez σ=50.
Dans la classification non supervisée, σ est parfois basé sur la distance euclidienne entre les centroïdes du premier et du deuxième amas les plus proches.
Chaque nœud dans le voisinage de la BMU (y compris la BMU) a son vecteur de poids ajusté selon l'équation suivante :
W(t+1) = W(t) + L(t) ( V(t) — W(t) )
Où t représente le pas de temps et L est une petite variable appelée taux d'apprentissage(learning rate), qui diminue avec le temps. Ce que dit cette équationiLe poids nouvellement ajusté pour le nœud est égal à l'ancien poids (W), plus une fraction de la différence (L) entre l'ancien poids et le vecteur d'entrée (V).
Ainsi, selon notre exemple, le nœud 4 est la meilleure unité de correspondance (comme vous pouvez le voir à l'étape 2) correspondant à leurs poids :
Learning rate = 0.5
Mettez donc à jour ce poids selon l'équation ci-dessus
For W3,1
New Weights = Old Weights + Learning Rate (Input Vector1 — Old Weights)
New Weights = 0.39 + 0.5 (0.7–0.39)
New Weights = 0.545
For W3,2
New Weights = Old Weights + Learning Rate (Input Vector2 — Old Weights)
New Weights = 0.42 + 0.5 (0.6–0.42)
New Weights = 0.51
For W3,3
New Weights = Old Weights + Learning Rate (Input Vector3 — Old Weights)
New Weights = 0.45 + 0.5 (0.9–0.45)
New Weights = 0.675
Updated weights:
Donc, de cette façon, nous mettons à jour les poids.
La décroissance du taux d'apprentissage est calculée à chaque itération à l'aide de l'équation suivante :
Au fur et à mesure des entraînements, le quartier se rétrécit progressivement. A la fin de la formation, les quartiers ont été réduits à zéro.
Le taux d'influence montre la quantité d'influence que la distance d'un nœud à la BMU a sur son apprentissage. Dans la forme la plus simple, le taux d'influence est égal à 1 pour tous les nœuds proches de la BMU et à zéro pour les autres, mais une fonction gaussienne est également courante. Enfin, à partir d'une distribution aléatoire de poids et à travers de nombreuses itérations, SOM peut arriver à une carte de zones stables. En fin de compte, l'interprétation des données doit être effectuée par un humain, mais SOM est une excellente technique pour présenter les modèles invisibles dans les données.