UNIVERSITÉ POLITECHNIQUE DE BUCAREST Faculté d’Ingénierie en Langues Étrangères Management, innovation et technologies des systèmes collaboratifs… [601816]

UNIVERSITÉ POLITECHNIQUE DE BUCAREST
Faculté d'Ingénierie en Langues Étrangères
Management, innovation et technologies des systèmes collaboratifs

L’algorithme de SOM

Étudiant:
Raluca -Alexandra NĂSTASĂ

BUCAREST
2016

Contenu du projet

1. L’Importance de l’algorithme

2. Applications pratiques

3. La présentation générale de l’algorithme

4. Résultats obtenues et problèmes -Avantages et désavantages

5. L’ensemble des données

6. Résult ats and Evaluation

7. Références

1.L’Importance de l’algorithme
Un SOM est une technique de visualisation de données développée par le professeur Teuvo
Kohonen dans le début des années 1980.
Les études neurobiologiques indiquent que des différentes entrées sensorielles (moteur,
visuel, auditif , etc.) sont mappés sur les zones du cortex cérébral correspondant d'une
manière ordonnée. Cette forme de carte est connu comme une carte topographique.
L'objectif principal d'une SOM est de transformer un modèle de signal entrant d' arbitraire
dimension d ans un plan distinct d'un ou deux dimensions, et pour effectuer cette
transformation adaptative d'une manière ordonnée topologique .
2.Applications pratiques
Nous mettons en œuvre notre SOM en plaçant les neurones au niveau des nœuds d'un ou
deux dimensions des treillis.
Imaginez un SOM qui essaie de cartographier des données tridimensionnelles vers le bas
pour une grille à deux dimensions . Dans cet exemple, les trois dimensions représenteront
(RGB) valeurs de rouge , bleu et vert pour une couleur particuli ère . Une donnée d'entrée
fixés pour ce problème pourrait ressembler à ceci :

Pour cet ensemble de données , une bonne cartographie regrouperait les couleurs rouge ,
vert et bleu loin les uns des autres et de placer les couleurs intermédiaires entre leurs
couleurs de base (par exemple jaune près de rouge et de vert , sarcelle d'hiver près de vert et
de bleu , et c.) .
Le réseau de neurones est lui -même un grille de neurones. Chaque neurone contient un
vecteur de pondération représentant les valeurs RGB et d'un emplacement géométrique de la
grille. Ces vecteurs de poids seront utilisés pour déterminer le neurone «gagnante» pour
chaque entrée et sont mis à j our en fonction de son emplacement au cours du processus de
formation . Un réseau neuronal initialisée à ce problème pourrait ressembler à ceci :

Les carrées dans cette image représentent les neurones et les lignes verticales décroissant
montrent leurs v aleurs RGB initialisés .

3.La présentation générale de l’algorithme
L'algorithme d'apprentissage de SOM est relativement simple . Il se compose de
l’initialisation des coefficients de pondération, l'itération sur les données d'entrée , de trouver
le neuro ne " gagnant " pour chaque entrée , et l'ajustement des poids sur la base de
l'emplacement de ce neurone " gagnant " .
Une mise en œuvre de pseudo -code est fourni ci -dessous :
Initialisation de poids
Pour 0 à X le nombre d' époques de formation
Sélectionnez un échantillon de l'ensemble de données d'entrée
Trouver le neurone «gagnant» pour l'entrée de l'échantillon
Ajuster les poids de neurones à proximité
Fin de la boucle
L'algorithme utilisé pour trouver le neurone "gagnant " est un calcul de la distance
euclidienne . Autrement dit, le neurone «gagnant» n de dimension d pour l’entrée v de
l'échantillon ( également de dimension d) serait celle qui réduit au minimum l'équat ion:

Donc, pour les trois dimensions RVB exemple le neurone «gagnante» serait celle qui réduit
au minimum:

4.Résultats obtenues et problèmes -Avantages et
désavantages
Le principal avantage d'utiliser une SOM est que les données sont facilement interpr étés et
compris. La réduction de la dimension et le regroupement de la grille donne la facilité
d'observer les similitudes dans les données.
SOM sont capables de traiter plusieurs types des problèmes de classification, tout en offrant
un résumé utile, int eractif et intelligible des données.
Avec quelques techniques d'optimisation, un SOM peut être formé dans un court laps de
temps. En outre, l'algorithme est assez simple pour rendre le processus de formation facile à
comprendre et modifier au besoin.
L'inconvénient majeur d'un SOM est qu'il nécessite des données nécessaires et suffisantes
afin de développer des grappes significatives.

Les vecteurs de poids doivent être fondées sur des données qui peuvent réussir entrées de
groupe et distinguer. Le manque de données ou de données superflues dans les vecteurs de
poids va ajouter aléatoire aux groupes.
Un autre problème avec SOM est qu'il est souvent difficile d'obtenir une cartographie
parfaite où les groupements sont uniques dans la carte. Au lieu de cela , des anomalies dans
la carte génèrent souvent où deux groupements similaires apparaissent dans différents
domaines sur la même carte.
5.L’ensemble des données
Application en Matlab
Ci-dessous est le code de l'application SOM sur la reconnaissances des chiffres manuscrite .
Chaque image est redimensionnée à 30 × 30 et remodeler à un vecteur colonne de 900 × 1 .
Les données dans le code ci -dessous sont l'ensemble de la formation . Il e st un collection des
vecteurs colonnes de 900 dimensions .
data = double(data);
%// nombre total des noeuds
totalW = 100; %//initialis ation des poids
w = rand(900, totalW);
%// rate d’apprentissage initial
eta0 = 0.1;
%// rate d’apprentissage courant
etaN = eta0;
%// constant e pour calculer la rate d’apprentissage
tau2 = 1000;

%// index de la carte
[I,J] = ind2sub([10, 10], 1:100);

N = size(data,2);
alpha = 0.5;
%// la dimension du voisin
sig0 = 200;

sigN = sig0;
%// tau 1 pour mise à jour de sigma
tau1 = 1000/log(sigN);

%i c’est le nu mero de la phase
for i=1:2000
%// j c’est l’index de chaque image.
%// il doit se répéter dans les données dans un ordre aléatoire de réécrire
for j=1:N
x = data(:,j);
dist = sum( sqrt ((w – repmat(x,1,totalW)).^2),1);

%// trouver le gagnant
[v ind] = min(dist);
%// the 2 -D index
ri = [I(ind), J(ind)];

%// distance entre ce node et le node gagnant
dist = 1/(sqrt(2*pi)*sigN).*exp( sum (( ([I( : ), J( : )] – repmat(ri, totalW,1))
.^2) ,2)/( -2*sigN)) * etaN;

%// mise à jour des poids
for rr = 1:100
w(:,rr) = w(:,rr) + dist(rr).*( x – w(:,rr));
end
end
%// mise à jour de la rate d’apprentissage
etaN = eta0 * exp( -i/tau2);
%// update sigma
%sigN = sigN/2;
sigN = sig0*exp( -i/tau1);

%//montrer les poids chaque 100 phases
if mod(i,200) == 1
figure;
axis off;
hold on;
for l = 1:100
[lr lc] = ind2sub([10, 10], l);
subplot(10,10,l);
axis off;

imagesc(reshape(w(:,l),30,30));
axis off;
end
hold off;
end
end

Application en C#
On utilise des données sous la forme d’un tableau.
Chaque ligne de la table représente un objet . Les articles sur la ligne sont des variables de
l'ensemble de données . La chose importante est que chaque échantillon de données a le
même ensemble de varia bles . Ainsi, chaque colonne de la table contient toutes les valeurs
d'une variable . La dernière variable dans la ligne correspond au nom de classe .

Il existe deux principales classes dans le modèle d'objet de SOM: Neural et Neural Network.

Chaque cl asse Neuron a un champ de coordonnées, ce qui montre la position du neurone
dans la cupidité deux dimensionnelles . Le champ de poids est un vecteur de poids de type
générique, et contient certaines valeurs doubles. La classe Neuron peut effectuer l'opération
de poids modifiés, qui modifie le vecteur de poids d'un neurone en fonction de la fonction
sélectionnée topologique de voisinage (h) de type, la distance du vainqueur, et le nombre de
l'itération courante.

public NeuralNetwork( int m, int numberOfIterations, double epsilon, Functions f)

public void ReadDataFromFile( string inputDataFileName)

public void StartLearning()

public void StartLearning()
{
int iterations = 0;
while (iterations<=numberOfIterations && currentEpsilon > epsilon)
{
List<List<double>> patternsToLearn = new
List<List<double>>(numberOfPatterns);
foreach (List<double> pArray in patterns)
patternsToLearn.Add(pArray);
Random randomPattern = new Random();
List<double> pattern = new List<double>(inputLayerDimension);
for (int i = 0; i < numberOfPatterns; i++)
{
pattern = patternsToLearn[randomPattern.Next(numberOfPatterns –
i)];

StartEpoch(pattern);

patternsToLearn.Remove(pattern);
}
iterations++;
OnEndIterationEvent( new EventArgs ());
}
}
La classe de NeuralNetwork comprend un réseau bidimensionnel de neurones, et peut
effectuer un certain nombre d'opération.
Ensuite, on a crée une instance de la classe SOFM.Neural Network comme:

SOFM.NeuralNetwork NeuralNetwork nn = new NeuralNetwork(NumberOfCards,
Int32.Parse(tbIterationsNumber.Text), Double.Parse(tbEpsilon.Text), f);
nous avons défini la propriété No rmalize de l'instance. Ensuite, on a lu les données du
fichier:
nn.ReadDataFromFile(ofd.FileName);
Et on commence le processus d'apprentissage:

nn.StartLearning();
Après l'apprentissage est terminé, la carte de couleur peut être obtenue comme suit:
System.Drawing.Color[,] sofmVisualizer.Matrix = nn.ColorSOFM();

6.Résultats and Evaluation
Application en Matlab
On observe la transition des nombres.

Application en C#
Dans la figure on a la représentation des deux classes.

Chaque objet à partir de l'ensemble de données se compose de deux paramètres; l'axe des
abscisses correspond au premier paramètre et l'axe des ordonnées correspond à la seconde.
a) la distribution des données d'entrée. b) le processus de changement de la poids
Le prochaine figure est la carte obtenu pour l'exemple deux classes.

Chaque rectangle correspond à un neurone de la deuxième couche. Les neurones noirs –
première classe, les neurones verts – deuxième classe.

SOM offrent une solution élégante à de nombreux problèmes difficiles avec grande ou
difficile à interpréter des ensembles de données . Grâce à leurs propriétés intrinsèques , tels
que en préservant les relations topologiques entre les données d'entrée , ils permettent la
visualisation de données complexes .
Comme plus de recherche est faite sur SOM , de meilleurs paramètres peuvent être trouvés
en plus de domaines d'application seront créés et affinés .
7.Références
 Simon Haykin , A C onceptual Review of "Digital Communication Systems”, 2014
http://www.cs.bham.ac.uk/~jxb/NN/l16.pdf
 Shyam M. Guthikonda, Kohonen Self -Organizing Maps, Decembre 2005
http://www.shy.am/wp -content/uploads/2009/01/kohonen -self-organizing -maps –
shyam -guthikonda. pdf
 Teuvo Kohonen et Timo Honkela, Kohonen network, 2007
http://www.scholarpedia.org/article/Kohonen_network
 Genevieve Orr, Nici Schraudolph et Fred Cummins, Lecture Notes, Automne 1999
https://www.willamette.edu/~gorr/classes/cs449/Unsupervised/SOM.html
 Tom Germano, Self Organizing Maps, 23 Mars 1999
http://davis.wpi.edu/~matt/courses/soms/#Advantages
 Kevin Pang, Neural Networks, Automne 2003
https://www.cs.hmc.edu/~kpang/nn/som.html

Similar Posts