Modelos, Control y Sistema de Visión

Central     Modelos     Control     Visión     Aplicaciones     Publicaciones     Mapa     Buzón     Sobre el autor      
Redes de aprendizaje competitivo
 
Las redes de aprendizaje competitivo son un tipo de red neuronal que pertenecen a las redes que se denominan autoorganizadas, debido a que son capaces de clasificar rasgos utilizando sólo los datos de entrada a la red, tal y como se describe en los fundamentos de las redes de aprendizaje competitivo.
 
Los pasos para aplicar una red de aprendizaje competitivo son los siguientes:
[1] Definir las condiciones iniciales:
  • Número de clusters (c).
  • Factor de aprendizaje (puede incorporarse el factor de olvido).
  • Valores iniciales de los parámetros a adaptar (clusters).
  • Número de épocas o iteraciones.

 

[2] Ejecutar, para el número de épocas definidas:

  1. Aplicar una muestra de la matriz de datos de entrada.
  2. Calcular la salida de la red (1).
  3. Seleccionar la neurona que devuelve el mayor valor.
  4. Actualizar los parámetros de la neurona seleccionada en 3.

 


Ejemplo de la adaptación de una muestra utilizando Matlab:

 

%Supóngase que se pretende obtener tres clusters de la siguiente matriz de datos:

>> x=[1 1 1 2 3 4 5 5 5; 1.5 2 2.5 2 2 2 1.5 2 2.5]
x =
1.0000 1.0000 1.0000 2.0000 3.0000 4.0000 5.0000 5.0000 5.0000
1.5000 2.0000 2.5000 2.0000 2.0000 2.0000 1.5000 2.0000 2.5000

 

%Se definen los valores iniciales de los parámetros a adaptar (tres clusters):

>> w=[1 2 5; 1.5 1.7 2.5]
w =
1.0000 2.0000 5.0000
1.5000 1.7000 2.5000

 

%Se calcula la salida de la red para una muestra de entrada (en este caso se utiliza la tercera):

>> sal_red1 = -sqrt(sum(w(:,1)-x(:,3))^2)

sal_red1 =
-1

>> sal_red2 = -sqrt(sum(w(:,2)-x(:,3))^2)

sal_red2 =

-0.2000

>> sal_red3 = -sqrt(sum(w(:,3)-x(:,3))^2)

sal_red3 =

-4 

%Como se aprecia, el segundo valor es el mayor; por lo que ha ganado la segunda neurona. Se procede

%a actualizar los parámetros de la misma, utilizando un factor de aprendizaje de 0.7:

>> w(:,2)=w(:,2)+0.7*(x(:,3)-w(:,2))

w =

    1.0000    2.0000    4.9000
    1.5000    1.7000    2.5800

 

% Nótese los nuevos valores de los pesos en w(:,2), que se muestran en la siguiente figura

>> plot(x(1,:),x(2,:),'v'); 

>> hold on

>> plot(w(1,:),w(2,:),'sr'); 

 

 

Condiciones iniciales

Una iteración

 

Las matrices que representan a los datos de entrada x y los pesos que son adaptados w son equivalentes a las matrices z y v del algoritmo k-means clustering (el ejemplo aquí expuesto para una iteración es semejante al primer ejemplo desarrollado para describir éste último algoritmo).

 


Utilización del Toolbox de redes neuronales:

 

%Supóngase que se pretende obtener cinco clusters de la siguiente matriz de datos:

>> x=[0 0 0 1 1 1 2 3 4 5 5 5 6 6 6 7 7 7 8 9 10 11 11 11 12 12 12];
>> y=[1 2 3 1.5 2 2.5 2 2 2 1.5 2 2.5 2 4 6 3 4 5 4 4 4 3 4 5 2 4 6];
>> z=[x; y];

 

%Se debe definir una red neuronal con aprendizaje competitivo (newc), para lo que se necesitan los

%valores  mínimo y máximo (intervalos) de las muestras que representan a los rasgos de la matriz de

%datos

>> interv=minmax(z);
interv =
0 12
1 6

 

% Se utilizará un factor de aprendizaje de 0.4 y cinco neuronas o clusters. Se crea la red

>> grupos = newc(interv, 5, .4);

 

% Se verifican los valores iniciales de los parámetros de la red

>> grupos.IW{1}
ans =
6.0000 3.5000
6.0000 3.5000
6.0000 3.5000
6.0000 3.5000
6.0000 3.5000

 

%lo que incluye las ganancias

>> grupos.b{1}
ans =
13.5914
13.5914
13.5914
13.5914
13.5914

 

% No se desea incorporar ganancia, por lo que sus valores se hacen cero

>> grupos.b{1}=[0; 0; 0; 0; 0];

% Se ejecutarán 50 épocas

>> grupos.trainParam.epochs = 50;

 

%Se entrena la red: Para cada época, las muestras de entrada se presentarán una a una en orden

% aleatorio, actualizándose el valor de los pesos cada vez que se presente una muestra

>> grupos = train(grupos,z);

 

% Se obtienen los grupos resultantes

>> v=grupos.IW{1}
v =
9.5544 4.1289
6.3457 4.0927
0.7771 2.2511
11.9128 2.5768
5.4426 1.9525
>> grupos.b{1}
ans =
0
0
0
0
0

 

% Se visualizan los centroides

>> plot(z(1,:),z(2,:),'v');
>> hold on
>> plot(v(:,1),v(:,2),'sr');

 

 

La red resultante de la adaptación puede utilizarse para clasificar a que grupo pertenecerá una nueva muestra de entrada, por ejemplo, la muestra

>> m=[3.5; 1.5]
m =
3.5000
1.5000

>> grupo=sim(grupos, m)
grupo =
(5,1) 1

 

Pertenece al quinto grupo.

 


Ejemplo de utilización de la GUI nntool del toolbox de redes neuronales de Matlab:

 

La interfaz gráfica de usuario nntool puede utilizarse para obtener centroides representativos, tal y como se describe en ejemplo de utilización de nntool.

 

Referencias:

 

[1] Jang, J.; Sun, C.; Mizutani, E.:"Neuro-Fuzzy and Soft Computing". Prentice Hall. 1997.

[2] Hagan, M.; Demuth, H.; Beale. M.:"Neural Network Design". PWS Publishing Company. 1996.