1. .
1
UNIVERSIDAD MILITAR NUEVA GRANADA
MAESTRIA EN MECATRONICA
Ing. Ferney Hernández
Correo: wferney63@hotmail.com
ABSTRACT: It development An Artificial Neural
Network Kohonen For classification of colors, using a
Graphical User Interface GUI Matlab, in which different
parameters of red , Among Those found The size, number
of iterations , it should typing Do Radio neighborhood
Among others. The user enters the color in RGB Each
normalized (between 0 and 1), THEN keyed in the
parameters of the Red and random weights are
generated. The user indicates the number of iterations
and the radio neighborhood , and last for clustering define
the number you want.
RESUMEN: Se desarrolló una Red Neuronal
Artificial de Kohonen para la clasificación de colores,
utilizando una interfaz gráfica de usuario GUI de Matlab,
en la cual se deben digitar diferentes parámetros de la
red, entre los que se encuentran el tamaño, el número de
iteraciones, su radio de vecindad entre otros. El usuario
ingresa cada color en RGB normalizado (entre 0 y 1),
luego se digitan los parámetros de la red y se generan los
pesos aleatorios. El usuario indica el número de
iteraciones y el radio de vecindad, y por ultimo define el
número de clustering que desea.
PALABRAS CLAVE: Clustering, Peso, Red
Neuronal Artificial de Kohonen, RGB
PROCEDIMIENTO
La Red Neuronal de Kohonen también llamada Mapa
auto-organizado es una red neuronal artificial con
aprendizaje no supervisado En 1982 T. Kohonen
presentó un modelo de red denominado mapas auto-
organizados o SOM (Self-Organizing Maps), basado en
ciertas evidencias descubiertas a nivel cerebral. Este tipo
de red posee un aprendizaje no supervisado competitivo.
No existe ningún maestro externo que indique si la red
neuronal está operando correcta o incorrectamente
porque no se dispone de ninguna salida objetivo hacia la
cual la red neuronal deba tender.
La interfaz gráfica cuenta con 5 módulos, los cuales están
clasificados en Datos de Entrada, Datos Red Neuronal,
Entrenamiento, Clustering y por último la gráfica. Figura
1.
Figura 1. Interfaz
Para ingresar los datos, el usuario digita el valor de la
componente en RGB (rojo, verde y azul), de manera
normalizada (entre 1 y 0) y luego dando clik en Entrada.
Esto se debe realizar dato por dato. Figura 2.
Figura 2. Toma de datos.
Luego de ingresar los datos, se procede a definir los
paramentos de la red, entre los que están el tamaño (Filas,
Columnas), el factor de aprendizaje, constante de tiempo
entre otras.
Figura 3. Datos Red Neuronal.
Posteriormente se generan los pesos aleatorios, los cuales
se van a visualizar en la gráfica. Figura 4.
Figura 4. Pesos Aleatorios.
2. .
2
Siguiendo con la clasificación, se debe ingresar el número
de iteraciones que va a realizar la red y el radio de
vecindad. Si el radio de vecindad escogido no cubre la
totalidad de la red, se debe incrementar. Ver figura 5.
El proceso de iteración es un poco lento dependiendo
del número de iteración y del radio de vecindad.
while nmi<Niteraciones
nmi=nmi+1;
if l==lon
l=1;
end
R=r;
G=g;
B=b;
Vi=[R(l) G(l) B(l)];
l=l+1;
D=zeros(10,10);
for i=1:fil
for j=1:colu
Vp=W{i,j};
D(i,j)=sqrt((Vi(1)-
Vp(1))^2+((Vi(2)-Vp(2)))^2+(Vi(3)-
Vp(3))^2); %Distancia Euclidiana
end
end
mD=min(D);
mD=min(mD);
%Valor Distancia Euclidiana neurona
Ganadora
for i=1:fil
for j=1:colu
NG=D(i,j)-mD;
if NG==0
NeuGan=[i j];
%Posicion de la Neurona Ganadora
nf=NeuGan(1);
nc=NeuGan(2);
break
end
end
end
w=W{nf,nc};
i=nf;
j=nc;
%% Proceso cooperativo
k=0;
d=0;
T1=1000/log(Oinicial);
o=Oinicial*exp(-(k/T1));
H=exp(-((d^2)/(2*o^2)));
%% Proceso adaptativo
M=Minicial*exp(-(k/Tinicial));
wn=w+M*H*(Vi-w);
W{nf,nc}=[wn];
CA=1;
Fv1=2;
Fv2=1;
while CA<=Rvecindad
k=CA;
d=CA;
T1=1000/log(o);
o=o*exp(-(k/T1));
H=exp(-((d^2)/(2*o^2)));
M=M*exp(-(k/Tinicial));
i=i+CA;
j=j+CA;
if i<=fil && i>0 && j<=colu &&
j>0
w=W{i,j};
wn=w+M*H*(Vi-w);
W{i,j}=[wn];
end
z=1;
while z<=Fv1
i=i-1;
if i<=fil && i>0 && j<=colu &&
j>0
w=W{i,j};
wn=w+M*H*(Vi-w);
W{i,j}=[wn];
end
z=z+1;
end
z=1;
while z<=Fv1
j=j-1;
if i<=fil && i>0 && j<=colu &&
j>0
w=W{i,j};
wn=w+M*H*(Vi-w);
W{i,j}=[wn];
end
z=z+1;
end
z=1;
while z<=Fv1
i=i+1;
if i<=fil && i>0 && j<=colu &&
j>0
w=W{i,j};
wn=w+M*H*(Vi-w);
W{i,j}=[wn];
end
z=z+1;
end
z=1;
while z<=Fv2
j=j+1;
if i<=fil && i>0 && j<=colu &&
j>0
w=W{i,j};
wn=w+M*H*(Vi-w);
W{i,j}=[wn];
end
z=z+1;
3. .
3
end
i=nf;
j=nc;
CA=CA+1;
Fv1=Fv1+2;
Fv2=Fv2+2;
end
end
Niteraciones corresponde al número de iteraciones de la
red y Rvecindad contiene el número de radios de
vecindad que el usuario digite. Analizando las iteraciones
con la función while la cual hace el proceso cooperativo e
iterativo de la red esto lleva a que si existe un radio de
vecindad grande y un número de iteraciones grande el
programa consume bastante recursos y se hace lento.
Figura 5. Numero de iteraciones y Visualización.
Por último se realiza un clustering para etiquetar y
determinar los grupos que clasifico la red ya que la red no
sabe que patrones existen, solo los clasifica.
Figura 6. Clustering
CONCLUSIONES
La Red Neuronal de Kohonen se utiliza para
clasificar patrones teniendo diferentes pesos
aleatorios.
La Red Neuronal consume bastante recursos
cuando hay un número alto de neuronas, así
como las iteraciones que realiza y el número de
vecindad que posee.
En la actualidad la red neuronal de Kohonen se
utiliza para clasificar y determinar grupos en los
cuales hay muchos patrones, como por ejemplo
la petición de créditos bancarios entre otras,
BIBLIOGRAFÍA
Referencias
[1] «Universida Carlos III de Madrid,» [En línea]. Available:
http://halweb.uc3m.es/esp/Personal/personas/jmmarin/esp/DM/tema5dm.pdf.