Вы находитесь на странице: 1из 41

Facultad de ciencias matemáticas

Escuela de computación científica


IA

Redes neuronales

Sesión 15 (16-10-14)
Alicia Riojas Cañari
Propósito

Introducir las redes de Kohonen


Red de Kohonen

¿Qué es?
¿Cómo es su topología?
¿Cómo es su proceso de aprendizaje?
¿Cuál es su algoritmo?
¿Cómo implementarlo en MatLab?
¿Qué es?
Es una red neuronal artificial que emula una
característica del cerebro humano, el cual tiene
la capacidad de:
• formar mapas de características (mapas
topológicos) de las informaciones recibidas
desde el exterior,
• organizar las informaciones en muchas
regiones, de tal manera que diferentes
entradas sensoriales pueden llevar a una
misma región.
Es una red competitiva cuyo objetivo es
descubrir patrones significativos o característicos
de los datos de entrada.
Auto organización
por ejemplo una persona:
tiene sed en la playa o
se reúne con un grupo de amigos o
come un ceviche etc.

diferentes entradas sensoriales


pueden llevar a una misma
región.

inmediatamente piensa
en una cerveza helada.
Son un tipo de red Topología
neuronal que realiza
conglomerados o mapas autoorganizativos.
Este tipo de redes se puede utilizar para conglomerar
el conjunto de datos en distintos grupos.
No utilizan un campo objetivo, es decir tienen
un aprendizaje no supervisado.
No pretenden predecir un resultado, sino intentan
revelar los patrones en el conjunto de campos de
entrada.
Por lo general, termina con unas pocas unidades que
resumen muchas observaciones (unidades fuertes) las
cuales representan posibles centros de
conglomerados.
Topología
Es una red de dos capas, una de entrada
y la otra de salida; con N y M neuronas
respectivamente, las conexiones entre la
capa de entrada y la de salida son de
tipo feedforward (hacia adelante), y
existe conexiones laterales entre las
neuronas de salida.

N M
Variables Clusters
Variantes
LVQ (Learning Vector Quantization) y
TPM (Topology-Preserving Map – más conocida
como SOM - self organizating map).
Salida
Salida

Entrada

LVQ (Learning vector Entrada


quantization) cada neurona
de la capa de entrada, se SOM (self organizing map) cada neurona
conecta con cada neurona de la capa de entrada, se conecta con
de la capa de salida y sólo cada neurona de la capa de salida la cual
una es la ganadora es n-dimensional.
Aprendizaje

Su proceso de aprendizaje es no supervisado y está


basado en el aprendizaje competitivo, su algoritmo tiene
naturaleza local y las modificaciones de los pesos
sinápticos se extienden a la vecindad de la neurona
ganadora.
Para cada conjunto de entrada, las neuronas
Competición calculan los valores de una función dada, la
neurona con mayor valor es la “ganadora”.

La neurona vencedora determina una vecindad


Cooperación de neuronas vecinas y su grado de influencia
varía en función de sus respectivas distancias.

Permite a las neuronas ganadora y a sus


Adaptación vecinas aumentar sus valores individuales a
sináptica través de ajustes en sus pesos sinápticos.
Etapas
Entrenamiento
Se presenta a la red el conjunto de entradas (todas) para que
ésta establezca las diferentes categorías (una por neurona de
salida).
Se recalculan cada vez los valores de los pesos de las
conexiones y los finales serán los componentes del vector de
aprendizaje en esa iteración.
Se repite el proceso varias veces para refinar el mapa de salida,
de tal forma que cuantas más veces se presenten los datos, la
clasificación será más selectiva.
Cuando la red se termina de entrenar, los registros similares se
presentan juntos en el mapa de resultados.

Funcionamiento
La red realiza una tarea de clasificación, ya que ante una
variable de entrada devuelve a la neurona ganadora, es decir,
la clase a la que pertenece dicha información de entrada.
Algoritmo
Inicio del algoritmo
• Se inicializa los pesos sinápticos de la red (pueden
ser aleatorios o no).
• Se inicializan el radio topológico, el cual determina
el tamaño y las características del vecindario y
• La tasa de aprendizaje η(0) =1 valor que va
decreciendo durante el entrenamiento hasta ser
prácticamente cero. Cuando su valor es muy
pequeño la modificación de los pesos en cada
iteración es insignificante.
• Se determina el número máximo de iteraciones
MAXITER.
Algoritmo

Entrenamiento (1 de 3)
Para k=1 hasta completar la data de
entrenamiento
Se presenta a la red la k-esima información de
entrada en forma de un vector de valores
continuos Ek= (e1,e2........eN)k,
como es aprendizaje competitivo, se
determina como la “ganadora” a aquella
neurona j de salida cuyos pesos Wj sea los más
cercanos a la información de entrada Ek.
Algoritmo
Entrenamiento (2 de 3)
Una vez localizada la neurona ganadora, se
actualizan sus pesos así como también los de sus
vecinas. El tamaño del vecindario se puede
reducir en cada ajuste de pesos o puede
permanecer constante.
W(t+1) = W(t) + η(t)*(distancia entre la entrada k y
la neurona actual)

η(t) puede ser 1/t de tal modo que tienda a cero


conforme aumenta el número de iteraciones .
Algoritmo

Entrenamiento (3 de 3)

El proceso se debe repetir, volviendo a


presentar toda la data de entrada
hasta que t = MAXITER o que los
cambios en los pesos W(t+1) y W(t)
sean insignificantes (<ε)
Algoritmo

Fase de funcionamiento

Después de la fase de entrenamiento se


pasa a la de funcionamiento, durante
la cual se presenta una data de
entrada para que la red la clasifique en
una de las clases establecidas.
Cuadro Resumen

2 capas , feedforward, conexiones


Topología
laterales entre neuronas

Tipo de
No supervisado
Aprendizaje

Regla de Combina los aprendizajes competitivo,


aprendizaje cooperativo y adaptativo.
Información
Continua
de E/S
Ejemplo
x y
0.5 0.1
0.7 0.4
0.7 0.9
0.8 0.3
Salida 0 0.7
0.3 0.6
0.8 1
0.3 0.2
0.9 0.7
0.7 0.6
0.4 0.7
Entrada 0.1 0.4
0.5 0.4
0.9 0.1

En la fase de entrenamiento se busca agrupar los 0.1 0.2


0.3 0.1
datos en 4 clases 0.2 0.8

y en la fase de funcionamiento se quiere clasificar el 0.7 0.1


0.5 0.9
punto [0.2 0.5] 0.3 0.4
Coeficiente de aprendizaje = η(t) = 1/t
Regla de aprendizaje (actualización de los pesos)
t=1

w1 0,60846 0,41007
w2 0,44298 0,42233
w3 0,56188 0,63237
w4 0,37003 0,48672

p= [0.2 0.5]

W4
p= [0.2 0.5]
W* = W4 la neurona ganadora es (0,37 0,49)
t=5
w1 0,76506
0,41493
w2 0,56644
0,83965
w3 0,42516
0,20986
w4 0,19522
0,54285

p= [0.2 0.5]
W* = W4
t = 1000
w1 0,29143
0,18848
w2 0,71599
0,24265
w3 0,21622
0,62459
w4 0,7131
0,81329

p= [0.2 0.5]
W* = W3
Sobre la base
de los Wj se
construyen
conjuntos de
Voronoi, el
perímetro de
los polígonos
generados es
equidistante a
los puntos
vecinos y
designa su área
de influencia
Unir las neuronas, tomar sus puntos medios y
trazar las perpendiculares
Usos: Sectorizar

Se construyó una red de Kohonen para


formar conglomerados (cluster) para lo cual
se usó MatLab:
USAR DATOS DEL SECTOR5.XLS
Usando MatLab
Pasos

• Ingreso de datos Select data


• Definir arquitectura Network architecture
• Entrenar a la red Train network
• Evaluar la red Evaluate network
• Generar resultados Save results

• Interpretar y usar los resultados


Regresar
Gráfico en Matlab Gráfico en EXCEL

-12.054
-77.109 -77.108 -77.107 -77.106 -77.105 -77.104

-12.055

-12.056

-12.057

-12.058

-12.059

-12.06

-12.061

-12.062

-12.063

-12.064

plot(data(1,:),data(2,:),'+r'); Gráfico de dispersión


Regresar
Regresar
Regresar
Interpretaciones

Copiar los
resultados y
llevarlos a excel

La suma de cada
columna es 1

Porque cada esquina


pertenece a un
cluster y sólo a uno
En el primer cluster
hay 27 nodos….

Transponer y ordenar las esquinas


de acuerdo a los cluster
Hacer un gráfico de
dispersión :
Cada serie es un cluster

-12.054
-77.109 -77.108 -77.107 -77.106 -77.105 -77.104
-12.055

-12.056

-12.057

-12.058 Series1
Series2
-12.059
Series3
-12.06 Series4

-12.061

-12.062

-12.063

-12.064
-12.054
-77.11 -77.108 -77.106 -77.104

-12.055

-12.056

Punto
90° -12.057
medio
-12.058 Series1
Series2
-12.059 Series3
Series4

-12.06 pesos

-12.061

-12.062

-12.063

-12.064
SCRIPT MatLab
LVQ
SOM
%LVQ Ingresar X en ventana de comandos % Se coloca el número de iteraciones (épocas) para
%ingresar X entrenar antes de parar
racimos =4; % Este es el numero de racimos. % y entrenar esta capa competitiva (puede tomar varios
puntos = 5; % Numero de puntos en cada racimo. segundos).
% Gráfica de los puntos almacenados en X. %
plot(X(1,:),X(2,:),'+r'); % Grafica los pesos actualizados de la capa en la misma
title('Vectores de Entrada'); grafica.
xlabel('p(1)'); red.trainParam.epochs = 100;
ylabel('p(2)'); red = train(red,X);
%% w = red.IW{1};
% Aqui NEWC usa tres argumentos de entrada, una matriz delete(circulos);
de Rx2 de valores plot(w(:,1),w(:,2),'ok');
% min y max para R elementos de entrada, el numero de %%
neuronas, y la razón % Ahora usamos la capa competitiva como un clasificador,
% de aprendizaje. donde cada neurona
%% Podemos graficar los vectores de pesos para ver su % corresponde a una categoría diferente. Aquí
intento inicial de presentamos el vector de entrada x
% clasificación. %
% Los vectores de pesos (marcados con o) se entrenaran %
de modo que queden % La salida, a, indica cual neurona esta respondiendo, y
% centrados en los racimos del vector de entrada por lo tanto a que
(marcados con +). % clase pertenece la entrada. Note que SIM regresa la
red = newc(X,racimos,0.1); salida en el formato de
w = red.IW{1}; % matriz esparcida para capas competitivas.
plot(X(1,:),X(2,:),'+r'); %x = [0.5; 0.9];
hold on; a = sim(red,x)
circulos = plot(w(:,1),w(:,2),'og');
SOM %
%EN EL EDITOR DEFINIR X = DATOS DE ENTRADA Y X = DATO A % Each neuron is represented by a red dot at the location of its two weights.
CLASIFICAR AMBOS EN R2 % Initially all the neurons have the same weights in the middle of the vectors,
%% Two-Dimensional Self-organizing Map % so only one dot appears.
% As in DEMOSM1, this self-organizing map will learn to represent different
% regions of the input space where input vectors occur. In this demo, plotsompos(net)
however, plot(X(1,:),X(2,:),'+r');
% the neurons will arrange themselves in a two-dimensional grid, rather than
a line. %%
% % Now we train the map on the 1000 vectors for 1 epoch and replot the
% Copyright 1992-2011 The MathWorks, Inc. network
% $Revision: 1.18.2.5 $ $Date: 2011/05/09 00:59:10 $ % weights.
%
%% % After training, note that the layer of neurons has begun to self-organize so
% We would like to classify 1000 two-element vectors occurring in a % that each neuron now classifies a different region of the input space, and
rectangular % adjacent (connected) neurons respond to adjacent regions.
% shaped vector space.
net.trainParam.epochs =20;
%X = rands(2,1000); net = train(net,X);
plot(X(1,:),X(2,:),'+r') plotsompos(net)
w = net.IW{1};
%% %%
% We will use a 5 by 6 layer of neurons to classify the vectors above. We % We can now use SIM to classify vectors by giving them to the network and
would % seeing which neuron responds.
% like each neuron to respond to a different region of the rectangle, and %
% neighboring neurons to respond to adjacent regions. % The neuron indicated by "a" responded with a "1", so x belongs to that
% class.
% The network is configured to match the dimensions of the inputs. This
% step is required here because we will plot the initial weights. Normally %x = [0.5;0.3];
% configuration is performed automatically by TRAIN. y = net(x)

net = selforgmap([2,2]);
net = configure(net,X);

%%
% We can visualize the network we have just created with PLOTSOMPOS.

Вам также может понравиться