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: [2] Ejecutar, para el número de épocas definidas: Aplicar una muestra de la matriz de datos de entrada. Calcular la salida de la red (1). Seleccionar la neurona que devuelve el mayor valor. 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. |