Trabajo - DavidHorat.com

Anuncio
Índice
1. Problema a resolver.................................................................................................... 3
2. Estudio teórico de las redes de Kohonen .................................................................. 4
Historia................................................................................................................................. 4
Características ..................................................................................................................... 5
Arquitectura.......................................................................................................................... 5
Aprendizaje........................................................................................................................... 6
Aplicabilidad ........................................................................................................................ 9
3. Resolución ................................................................................................................. 12
Creación y adecuación del fichero de patrones ................................................................. 12
Configuración del SNNS..................................................................................................... 14
Entrenamiento de la red ..................................................................................................... 17
5. Estudio del problema y previsión de resultados .................................................... 19
Efecto de la vecindad.......................................................................................................... 19
Decrecimiento de los parámetros de actualización............................................................ 20
Topología de la codificación empleada.............................................................................. 22
5. Resultados y análisis................................................................................................. 25
Función de activación Act_Component.............................................................................. 28
Bondad de un mapa de Kohonen........................................................................................ 30
6. Conclusiones.............................................................................................................. 34
7. Bibliografía................................................................................................................ 36
1. Problema a resolver
En esta práctica deberemos obtener un mapa espacial de las letras del alfabeto
español atendiendo a la codificación dada en la tabla adjunta en la figura 1. Para ello
diseñaremos una red de Kohonen y realizaremos un análisis tanto de la red como de los
mapas espaciales obtenidos estudiando su comportamiento frente a la variabilidad de
sus parámetros, así como a una posible modificación de la codificación de los patrones
de entrada.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
1 2 3 4 5 6 7 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
0 0 0 0 0 0 0 1 2 3 4 5 6 7 3 3 3 3 3 3 3 3 3 3 3 3
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 3 3 3 3 3 3
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6
Tabla 1
Como objetivo principal nos proponemos estudiar el funcionamiento, topología,
neurodinámica, aprendizaje y aplicabilidad de la Red Neuronal de Kohonen (SOM).
Concretamente demostrando la capacidad de auto-organización de la misma.
2. Estudio teórico de las redes de Kohonen
Existen evidencias que demuestran que en el cerebro existen neuronas que se
organizan en muchas zonas, de forma que las informaciones captadas del entorno a
través de los órganos sensoriales se representan internamente en forma de capas
bidimensionales. Por ejemplo, en el sistema visual se han detectado mapas del espacio
visual en zonas de córtex (capa externa del cerebro). También en el sistema auditivo se
detecta organización según la frecuencia a la que cada neurona alcanza la mayor
respuesta (organización tonotópica).
Aunque en gran medida esta organización neuronal está predeterminada
genéticamente, es probable que de ella se origine mediante el aprendizaje. Esto sugiere,
por tanto, que el cerebro podría poseer la capacidad inherente de formar mapas
topológicos de las informaciones recibidas del exterior. De hecho, esta teoría podría
explicar su poder de operar con elementos semánticos: algunas áreas del cerebro
simplemente podrían crear y ordenar neuronas especializadas o grupos con
características de alto nivel y sus combinaciones. Se trataría, en definitiva, de construir
mapas espaciales para atributos y características.
Historia
A partir de estas ideas, Teuvo Kohonen presentó en 1982
un sistema con un comportamiento semejante. Se trataba de un
modelo de red neuronal con capacidad para formar mapas de
características de manera similar a como ocurre en el cerebro.
El objetivo de Kohonen era demostrar que en un estímulo
externo (información de entrada) por si solo, suponiendo una
estructura propia y una descripción funcional del comportamiento
de la red, era suficiente para forzar la formación de mapas.
Teuvo Kohonen
Este modelo tiene dos variantes, denominadas LVQ (Learning Vector
Quantization) y TPM (Topology-Preserving Map) o SOM (Self-Organizating Map).
Ambas se basan en el principio de formación de mapas topológicos para establecer
características comunes entre las informaciones (vectores) de entrada a la red, aunque
difieren en las dimensiones de éstos, siendo de una sola dimensión en el caso de LVQ,
y bidimensional, e incluso tridimensional, en la red TPM.
Características
Pertenece a la categoría de las redes competitivas o mapas de autoorganización,
es decir, aprendizaje no supervisado. Poseen una arquitectura de dos capas (entradasalida) (una sola capa de conexiones), funciones de activación lineales y flujo de
información unidireccional (son redes en cascada).
Las unidades de entrada reciben datos continuos normalizados, se normalizan así
mismo los pesos de las conexiones con la capa de salida. Tras el aprendizaje de la red,
cada patrón de entrada activará una única unidad de salida.
El objetivo de este tipo de redes es clasificar los patrones de entrada en grupos
de características similares, de manera que cada grupo activará siempre la(s) misma(s)
salida(s). Cada grupo de entradas queda representado en los pesos de las conexiones de
la unidad de salida triunfante. La unidad de salida ganadora para cada grupo de entradas
no se conoce previamente, es necesario averiguarlo después de entrenar a la red.
Arquitectura
En la arquitectura de la versión original (LVQ) del modelo Kohonen no existen
conexiones hacia atrás. Se trata de una de las N neuronas de entrada y M de salida. Cada
una de las N neuronas de entrada se conecta a las M de salida a través de conexiones
hacia adelante (feedfoward).
Entre las neuronas de la capa de salida, puede decirse que existen conexiones
laterales de inhibición (peso negativo) implícitas, pues aunque no estén conectadas,
cada una de las neuronas va a tener cierta influencia sobre sus vecinas. El valor que se
asigne a los pesos de las conexiones hacia adelante entre las capas de entrada y salida
(Wji) durante el proceso de aprendizaje de la red va a depender precisamente de esta
interacción lateral.
La influencia que una neurona ejerce sobre las demás es función de la distancia
entre ellas, siendo muy pequeñas cuando están muy alejadas. Es frecuente que dicha
influencia tenga la forma de un sombrero mexicano.
Por otra parte, la versión del modelo denominado TPM (Topology Preserving
Map) trata de establecer una correspondencia entre los datos de entrada y un espacio
bidimensional de salida, creando mapas topológicos de dos dimensiones, de tal forma
que ante datos de entrada con características comunes se deben activar neuronas
situadas en próximas zonas de la capa de salida.
Aprendizaje
La idea básica que yace en las SOFM (Self Organizing Feature Map - Mapa de
Características Autoasociativo) es la incorporación a la regla de aprendizaje competitivo
un cierto grado de sensibilidad con respecto al vecindario o la historia. Esto hace que el
número de neuronas que no aprenden desaparezca y ayuda a que se destaquen
propiedades topológicas que aparezcan en el "mapeado" de características.
Suponiendo que un vector de entrada tiene N características y se representa por
un vector x en un espacio de patrones N-dimensional. La red mapea el patrón de entrada
hacia un espacio de salida. Por ejemplo, el espacio de salida puede ser un array
unidimensional o bidimensional de nodos de salida, que posee cierto orden topológico.
La cuestión es cómo entrenar la red para que esa relación de orden se preserve.
Kohonen propuso que las neuronas de salida interactuaran lateralmente, llegando así a
los mapas de características auto-organizativos (Figura 1).
Figura 1
La característica más importante del modelo es el concepto de aprendizaje en un
vecindario próximo a la neurona ganadora. El tamaño del vecindario decrece en cada
iteración.
Indicamos un procedimiento basado en el cálculo de distancias euclídeas sobre
los patrones de entrada. Supongamos que tenemos patrones de entrada Ndimensionales:
0.
Aleatorizar los pesos de las conexiones. Normalizar los pesos de las
conexiones incidentes de cada unidad de salida sobre la unidad:
dividir cada conexión por la raíz cuadrada de la suma de los
cuadrados de las conexiones de cada unidad. Normalizar igualmente
los datos de entrada
1.
Aplicar un patrón de entrada.
2.
Calcular alguna medida de similitud/disimilitud (producto interno,
distancia euclídea o de Mahalanobis, etc.) entre las entradas y los
pesos de las conexiones. Por ejemplo, mediante la distancia euclídea:
, donde X son los vectores de entrada.
3.
La unidad de salida con los pesos más parecidos al patrón de entrada
(es decir, menor Dj) es declarada ganadora. El vector de pesos de la
unidad ganadora, Wc, se convierte en el centro de un grupo de
vectores cercanos a él Wc, en concreto, a menos de cierta distancia D.
4.
Modificar los pesos de los vectores de pesos Wj "cercanos" a Wc
(distancia menor a D), según la fórmula:
, donde h es una pequeña constante positiva.
De esta manera conseguimos que los vectores de pesos de la unidad
ganadora y de su "vecindario" se parezcan cada vez más al patrón de
entrada que hace ganar a esa unidad.
La cuantía de la adaptación se puede escalar de acuerdo a una
"función de vecindad" preestablecida Λ(j,c):
, donde c es el índice de la unidad
ganadora.
representa la posición de la neurona j en el
espacio de salida. La convergencia del mapa depende de escoger
apropiadamente rj. Una opción es h = 1 / m, siendo m el número de
iteración del proceso de aprendizaje. El tamaño del vecindario (s)
debería decrecer gradualmente.
5.
Repetir los pasos 1 a 4 con todos los patrones de entrada.
A medida que avanza el aprendizaje hay que ir reduciendo D y a. Kohonen
recomienda empezar con un valor de a cercano a 1 y reducirlo gradualmente hasta 0.1.
D puede empezar valiendo la máxima distancia existente entre los pesos de las
conexiones al principio y acabar siendo tan pequeño que no quede ninguna unidad en el
vecindario de la unidad ganadora. En ese momento solo se entrenará una unidad, que al
final tendrá su vector de pesos igual al vector de entrada.
La precisión de la clasificación de los patrones de entrada aumenta con el
número de ciclos de aprendizaje. Kohonen recomienda una cantidad de ciclos no
inferior a 500 veces el número de neuronas de salida para obtener buenos resultados.
Aplicabilidad
Una vez entrenada, podemos usar a la red para clasificar patrones de entrada
similares en el espacio n-dimensional. Una clase o grupo de patrones similares tiende a
controlar una neurona específica, que representará el centro de una esfera n-dimensional
(de radio unitario, pues normalizamos los datos sobre la unidad). Esa neurona resultará
la más activada frente a los patrones más parecidos a su vector de pesos.
Después del aprendizaje, la clasificación consiste en presentar una entrada y
seleccionar la unidad más activada, la ganadora, mediante la función de Distancia
utilizada (gana la más cercana al patrón de entrada). Además, el vector de pesos nos
servirá para reconstruir el patrón de entrada.
¿Para que nos sirven a nosotros los mapas de Kohonen?
Lo podemos ver, por ejemplo, en el esquema que nos brinda la revista
MappaMundi y el artículo de Martin Dodge sobre la aplicación ET-Map
(http://mappa.mundi.net/maps/maps_009/etmap_feb.html) del Prof. Hsinchun Chen de
la Universidad de Arizona.
En este sugerente esquema el nivel superior es como un mosaico en el que los
distintos dominios adoptan formas poligonales de lados paralelos. Cada dominio tiene
una palabra que define la categoría. Si pulsamos sobre un dominio determinado se abre
una segunda pantalla que contiene otro mapa similar pero ahora ya restringido a los
documentos de ese dominio particular. El proceso se repite hasta que llegamos a un
nivel de detalle suficiente como para que aparezca un listado tradicional con los
documentos que componen ese subdominio concreto.
Para los que quieran pasar a la acción, el grupo del profesor Hsinchun Chen
propone tres programas "Spider" que se pueden descargar gratuitamente (60 días de
prueba) desde http://ai.bpa.arizona.edu/go/downloads.html. Los tres tienen una
estructura similar: Se entra un criterio de búsqueda, el programa devuelve una lista de
URLs que lo satisfacen que se pueden hojear y descartar o mantener, el spider bucea en
dichas páginas y obtiene resultados más concretos que finalmente destila una lista de
nombres con su frecuencia asociada. Los que interesan se retienen y los que no se
descartan. Con esta información final el programa construye un mapa de Kohonen de un
solo nivel con el que se puede interactuar.
La diferencia entre las tres aplicaciones es su objetivo: CI-Spider está dedicada a
la Inteligencia Competitiva (que hacen mis competidores) Meta_Spider es un meta
buscador (buscador de buscadores) y Cancer Spider busca en varias bases de datos online sobre cáncer. Los tres requieren cierta paciencia ya que buscan en Internet.
Para hacerse una idea sin mucha complicación de lo que son este tipo de mapas
véase Map.net, un ejemplo similar que permite hojear fácilmente todo Internet. Map.net
es el escaparate de la tecnología VisualNet que comercializa Antarcti.ca.
¿Son útiles los mapas de Kohonen?
Los (escasos y limitados) estudios de usabilidad indican que cuando se sabe el
documento que se busca resultan más útiles los sistemas tradicionales. Sin embargo
cuando se trata de hojear o para tener una idea global del contenido en general de una
web o un conjunto de documentos los mapas de categorías pueden ser apropiados.
Los mapas de Kohonen son una alternativa más de las que están floreciendo con
el objetivo de hacer más digerible la representación de grandes conjuntos de
información textual.
3. Resolución
Creación y adecuación del fichero de patrones
Hemos de presentar a la red una serie de patrones que se correspondan con los
vectores código que mostramos antes. Para ello creamos un fichero de 26 patrones. Los
patrones sólo incluyen las entradas, que son las 4 componentes del vector.
Hemos de tener en cuenta que al presentar a la red el mismo número de patrones
para cada letra, estamos haciéndola suponer que la frecuencia de aparición de cada una
es igual, o sea, que todas las letras son equiprobables. Esto no es así en la realidad,
obviamente, por lo que el resultado que obtengamos no será análogo al que obtuvo
Kohonen con su “máquina de escribir fonética”:
El SNNS no permite asignar frecuencias de aparición a los distintos patrones,
por lo que para conseguir un resultado coherente con la frecuencia de las letras
tendríamos que repetirlos en el fichero. Por tanto habría que escalar las frecuencias de
modo que la más baja pasara a ser 1 (una aparición), y repetir cada letra tantas veces
como indicara su frecuencia escalada.
El SNNS representa la activación de cada neurona con un código de colores que
está ajustado a los valores del intervalo [-1, 1]. El -1 se representa con rojo; a medida
que subimos va cambiando suavemente hasta el azul en el valor 0; y si seguimos
subiendo vuelve a cambiar progresivamente hasta el verde claro en el 1. Esto quiere
decir que no podremos distinguir entre valores de activación que estén fuera de ese
intervalo.
Para evitar este problema, hemos de entrenar a la red con vectores normalizados
(entre 0 y 1 ó entre -1 y 1). Cuando hablemos de las funciones de activación veremos
por qué. La forma más sencilla de normalizarlos es “confiando” en la norma infinito
(del máximo) y así, escalando todos los vectores por igual, de modo que la componente
más grande que aparezca sea un 1. Como dicha componente vale 7, habrá pues que
dividir todos los vectores por 7. Así habremos conseguido que todos nuestros patrones
sean interiores al hipercubo de lado unidad con una esquina en el origen (ya que los
valores pertenecen al intervalo [0, 1]).
Si quisiéramos que los vectores estuvieran en el hipercubo [-1, 1]4, en lugar de
en [0, 1]4, lo más astuto es centrarlos primero en el origen. En nuestro caso, tendríamos
que restar 3,5 a cada componente, y finalmente dividir todos los valores por 3,5 (que
sería el máximo).
Nosotros hemos hecho lo segundo, con el objetivo de que los patrones se
distingan más claramente en el visualizador del SNNS (Tabla 2).
A B C D E F G H
I
J K L M N O P Q R S
T U V W X Y Z
-2 -1 0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 3 0
-3 -3 -3 -3 -3 -3 -3 -2 -1 0
1
2
3
4
0
0
0
0
0
0
0
0
0
0 3 0
-3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -2 -1 0
1
2
3
0
0
0
0 0 0
-3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 -2 -1 0
1 2 3
1
2
3
4
0
Tabla 2
Configuración del SNNS
Para crear una red de Kohonen con el SNNS hemos de seguir los siguientes
pasos:
1. En la ventana principal del programa, hacemos clic en Bignet y elegimos
Kohonen.
2. En la ventana que nos aparece (Figura 2), escribimos 4 como el número de
componentes de los vectores de entrada, y las dimensiones de la red que
queramos. Nosotros usamos una red de 16 x 16, ya que con redes menores
casi siempre había un buen número de patrones que se acababan
proyectando sobre las mismas neuronas. Finalmente, pulsamos Create
Net.
Figura 2
3. Hacemos clic en el botón Control Panel de la ventana principal, y ajustamos
las siguientes opciones (Figura 3):
Figura 3
a. Número de ciclos: 100 (basta con menos, pero 100 es una cantidad
suficientemente pequeña como para preocuparse).
b. Presentación de patrones: Aleatoria. Para nuestro problema no
supone un cambio importante, pero en general es bueno hacerlo así.
¿Por qué? Porque los patrones suelen colocarse con un cierto orden
en los archivos. Así, es fácil visualizar que, si se le presentan a la red
secuencialmente, el aprendizaje (las neuronas ganadoras) puede verse
restringido a una pequeña vecindad de neuronas.
c. Función de aprendizaje: Kohonen. Esto hace aparecer cinco cuadros
de texto a la izquierda. Los describimos de izquierda a derecha a
continuación.
d. Altura de Adaptación: 0.9. Es el valor inicial de la tasa de adaptación.
El valor ha de estar en el intervalo (0, 1]. Si se pone un número
mayor que 1 (un disparate teórico), el SNNS usa 1 de forma
automática.
e. Radio de Vecindad: 16. Es el valor inicial del radio de la vecindad.
Lo más común para estos últimos dos valores iniciales es rondar
el máximo, o sea, 1 para la tasa de adaptación y el tamaño de la
red para el radio de vecindad. Con esto se logra sacar al mapa en
pocas iteraciones de su posición inicial (aleatoria en el hiperespacio),
para llevarlo a la posición aproximada (en el hiperespacio) en la cual
estén los patrones. Cuanto menor es la vecindad inicial, más
tendencia tiene el mapa a retorcerse en el hiperespacio. Como
veremos cuando hablemos de la bondad de los mapas generados,
esto hace peor a un mapa de Kohonen.
f. Factores de Decrecimiento de los dos, respectivamente: 0,99. En cada
iteración, la tasa de adaptación y el radio de vecindad se decrementan
en un factor de 1 menos este valor. Cuanto más cerca de 1 esté este
valor, más tardará la red en converger, pero el mapa estará
mejor distribuido. Obviamente, si es 1, el valor al que afecte no
cambiará.
g. Tamaño horizontal del Mapa: 16. El SNNS necesita conocer este
valor, ya que almacena las neuronas como un vector unidimensional,
perdiendo así la información sobre la forma de la red.
h. Función de Actualización: Kohonen Order. Es sencillamente la ley de
aprendizaje de Kohonen.
i. Función de Inicialización: Kohonen Random Weights v.3.2. Esta
función lleva dos parámetros, para los que usaremos los cuadros a su
izquierda. Deberían indicar, de izquierda a derecha, el valor máximo
y el valor mínimo de las componentes de los pesos iniciales. Pero, al
igual que con Randomize Weights, lo que dice el manual no es
correcto. Para obtener pesos entre -1 y 1 pondremos, de izquierda a
derecha, -0.8 y 50 000.
4. Pulsamos el botón Display de la ventana principal, para abrir el visualizador
de la red (Figura 4).
Figura 4
5. Seleccionamos las neuronas del mapa y les asignamos Act_Euclid como
función de activación. Al analizar luego los resultados hablaremos de lo que
hace cada función de activación interesante.
6. Abrimos la ventana especial del SNNS para redes de Kohonen (Figura 5)
haciendo clic en el botón del mismo nombre de la ventana principal. Ya
estamos preparados para entrenar la red.
Figura 5
Entrenamiento de la red
Para entrenar nuestra red de Kohonen, pulsamos en el Control Panel, primero
Reset y luego Init. Con esto, el SNNS habrá inicializado los pesos de las neuronas al
azar.
Podemos comprobar que los pesos iniciales están en el
rango adecuado abriendo la ventana de Weigth Visualization
(pulsando el botón Weigths de la ventana principal). Tenerla
abierta nos permitirá además observar los cambios de los pesos
durante el aprendizaje, en tiempo real, al igual que hacíamos con
la red de Back Propagation. Veremos una ventana así:
Finalmente, hacemos clic en el botón All del Control Panel, para que la red
aprenda.
5. Estudio del problema y previsión de resultados
Efecto de la vecindad
La fuerza con la que se adapta una neurona del mapa a un patrón presentado a la
red depende de la distancia a la que está la neurona de la ganadora. Concretamente, es
proporcional a la altura de una campana de Gauss (Figura 6) centrada en la neurona
ganadora.
Figura 6. Campana de Gauss
Como la distancia sólo toma valores discretos, ya que las neuronas no forman un
continuo, la proporción de adaptación de cada neurona sería, exactamente, como
representa la Figura 7. En ella se muestra una red de 17x17 neuronas, y la ganadora es
la central. El radio de vecindad es 4.
Figura 7
Mostramos a continuación la misma gráfica, pero para radios de vecindad 16 y
2, y cambiando la posición de la neurona ganadora:
Para otros problemas se usa también una función de vecindad en forma de
sombrero mejicano, como la que mostramos a continuación:
La zona negativa aleja del patrón de entrada a las neuronas medianamente
lejanas a la ganadora, con lo que se consigue que la vecindad de esta se distinga más del
resto del mapa.
Decrecimiento de los parámetros de actualización
Tanto el radio de la vecindad como la tasa de adaptación de las neuronas a los
patrones (que no es sino un multiplicador de la altura de las gráficas mostradas)
disminuyen siguiendo una expresión como la siguiente:
Ésta es una exponencial decreciente, como se ve claramente haciendo estos
cambios:
,
Para nuestra vecindad inicial (16), y nuestro factor mR (0,99), podemos
representar de manera clara el tamaño de la vecindad frente al tiempo, como en la
siguiente imagen:
Esta representación, de todas maneras, no es del todo exacta, ya que hemos
supuesto que trabajamos en un entorno continuo. Así, si quisiéramos representar de
manera fiel a la realidad el comportamiento de la vecindad, tendríamos que usar la
fórmula:
Donde <x> representa el redondeo de x. La imagen sería así:
Topología de la codificación empleada
Si nos fijamos en los vectores con los que hemos codificado cada letra, forman
una serie de “T”s encadenadas. El segmento inferior de una es el superior de la
siguiente, y todos ellos son perpendiculares (son 4 segmentos perpendiculares porque
estamos en un hiperespacio de 4 dimensiones).
Los extremos del primer segmento lo forman los patrones 1 y 7.
A la altura del patrón 3 está la unión con el siguiente segmento, que pasa
por el 8 hasta llegar al siguiente extremo, el patrón 14.
A la altura del patrón 10 se une el siguiente segmento por medio del
patrón 15, hasta llegar al 20.
Finalmente se conecta a la altura del patrón 17 el último segmento, yendo
desde el 21 hasta el 26.
Por tanto, podemos describir la topología del espacio de muestras así:
20
14
26
1
7
Las uniones están formadas por los patrones: 2, 3, 4 y 8; 9, 10, 11 y 15; y
16, 17, 18 y 21.
Con todo esto visto podemos predecir que, si el mapa que resulta no es
malo, al acabar el entrenamiento:
-
Los patrones 1, 7, 14, 20 y 26 estarán situados en fronteras del mapa.
-
Los patrones pertenecientes a cada una de las cuádruplas nombradas antes
como “de unión” estarán cercanos entre sí.
Una cierta experiencia entrenando mapas de Kohonen permite saber que los
bordes del mapa tienen tendencia a acabar en los extremos topológicos del conjunto de
patrones. Podemos ver este resultado en los siguientes ejemplos:
Se usa la representación del mapa con colores cuando los patrones son de dimensión menor o
igual que 3. A cada componente se le asigna una escala de un color básico (rojo, verde y azul), y el
resultado es bastante fácil de reconocer de un solo vistazo. Es probable que si en lugar de usar el
sistema RGB (suma de verde, rojo y azul) se usara el CMYK (resta de cyan, magenta y amarillo),
la relación entre las distintas zonas del mapa fuera más clara, ya que la resta de colores es
exactamente lo que sucede al mezclar pinturas.
Volviendo a la tendencia de los bordes a ocupar los extremos del
conjunto de muestras: Es más fácil intuir el por qué de este comportamiento si
cambiamos la forma de representar la proyección muestras – mapa a la que exponemos
a continuación.
Si podemos representar el espacio de muestras (o sea, si es de dimensión
menor o igual a 3), otra forma de visualizar el aprendizaje de la red de Kohonen es
dibujar en ese mismo espacio los nodos de la red, cada uno en la posición
correspondiente a su peso. Por ejemplo:
En este caso, el espacio muestral es el plano, y el conjunto
de muestras está repartido uniformemente en el cuadrante de
círculo indicado en blanco. La red de Kohonen (en rojo) es de
19x19 neuronas.
En la imagen se ve cómo tres de las esquinas de la red se han colocado en los
extremos del conjunto de muestras. Es fácil intuir, representando así el mapping, que las
esquinas se colocan en los extremos porque tienen menos influencia de otras neuronas
que el resto de nodos.
Visto esto, podemos pronosticar que 4 de los 5 extremos que tenemos en
nuestros patrones (el 1, el 7, el 14, el 20 y el 26) se proyectarán sobre las 4 esquinas del
mapa, quedando además uno de ellos en el interior del mismo.
5. Resultados y análisis
Una vez entrenada la red, lo primero que hacemos es comprobar a qué puntos
han sido proyectados los patrones. Para hacer esto, pulsamos el botón Winner de la
ventana especial de redes de Kohonen.
Lo que hace el SNNS como respuesta es pasar de nuevo todos los patrones por la
red, pero esta vez tan sólo para identificar la neurona ganadora de cada uno. Entonces
coloca encima de cada neurona ganadora el número del patrón con el cual ganó.
El resultado que obtuvimos fue éste:
Ahora podemos observar claramente cómo ha sido la proyección de los patrones
sobre el mapa repitiendo el esquema anterior:
Vemos que las predicciones teóricas del resultado, si el mapa era bueno, se
cumplieron, por lo que se puede suponer que la bondad del mapa es alta. Ya
explicaremos luego como se puede medir objetivamente la bondad de un mapa de
Kohonen.
En las siguientes capturas de pantalla se muestra (con la codificación de colores
usual del SNNS) la distancia euclídea entre los patrones 1, 7, 14, 20 y 26 y cada
neurona del mapa.
En la primera imagen se percibe que, aunque los patrones 1 y 26 han terminado
cerca el uno del otro en la red, hay una acusada frontera entre ambos.
Si ahora se presentan a la red todos los patrones, de manera secuencial, se
comprueba que la zona de distancia 0 (la zona azul) va siguiendo el recorrido del
esquema de proyección que mostramos arriba, sin realizar saltos. Por tanto, el mapa
conserva la topología del conjunto de muestras, pero ahora en un espacio
bidimensional.
Si queremos extraer el resultado exacto del entrenamiento, esto es, los pesos
finales de cada neurona, tenemos dos opciones.
La primera es usar la conocida ventana de visualización de pesos. Con nuestra
red, éste es el aspecto que tenían las primeras dos líneas de neuronas del mapa:
Pulsando el botón del ratón sobre un
cuadro de la gráfica aparece su peso exacto,
tal y como se aprecia.
Función de activación Act_Component
La segunda manera de ver los pesos finales es cambiando la función de
activación de las neuronas.
Hasta ahora teníamos escogida la función Act_Euclid, cuya salida era la
distancia euclídea entre el vector de pesos de cada neurona y el vector colocado en la
entrada.
Ahora tenemos que escoger la función Act_Component. Esta función está
hecha exclusivamente para las redes de Kohonen. La salida que produce es el valor de la
componente del vector de pesos que nosotros escojamos. La selección de cuál
componente mostrar se realiza en la ventana especial para redes de Kohonen, de la
misma manera con que se escoge un patrón:
Estos son los valores que da para cada una de las cuatro componentes (por
orden, de izquierda a derecha y de arriba a abajo):
Con estos gráficos se puede comprobar también la distancia de pesos que hay
entre la zona del patrón 26 y la del 1. Con esta idea ya podemos entrar en la medida de
la bondad de un mapa de Kohonen.
Bondad de un mapa de Kohonen
Hemos visto que, a pesar de que un mapa de Kohonen conserva la topología del
conjunto de patrones, vectores que en el espacio de pesos son distantes pueden resultar
proyectados en nodos cercanos en el mapa. Cuando deseamos utilizar la red para
descubrir relaciones entre los patrones de entrada, esto nos origina un problema: ¿Cómo
podemos saber si dos patrones que el mapa representa en zonas cercanas están cerca “en
la realidad”?
Para poder determinar esto se utiliza otra representación del mapa: la
representación de clústers. Se construye sobre el mismo mapa de esta manera: Para cada
neurona se calcula la distancia media que la separa (en el espacio de pesos) de sus
vecinas. Se codifica esa distancia con un código de colores; lo más común es usar
blanco para distancia media pequeña y más oscuro cuanto mayor es la distancia.
Finalmente se dibuja cada neurona de la red con el color calculado.
El resultado es un gráfico en el que se aprecian las zonas próximas en el espacio
de pesos como burbujas (clústers). Veamos algunos ejemplos.
Estos mapas fueron creados por una red de Kohonen de 50x50 neuronas con
pesos de 3 dimensiones (discretizados en 6 posibles valores cada uno y codificados en
RGB). Se entrenaron con 15 vectores escogidos aleatoriamente. Al final del aprendizaje
se construyó el mapa de clústers.
Æ
En el siguiente se ve cómo, en ocasiones, la representación de clústers sirve para
deducir cómo era, de manera aproximada, la topología del conjunto de patrones en el
espacio de pesos:
Æ
Las zonas negras, tal y como indica la intuición, son “fronteras” del mapa:
Lugares que han quedado entre patrones. Es fácil deducir que se corresponden con las
partes del mapa que más se han “estirado” en el espacio de pesos. Análogamente, cada
zona blanca está concentrada alrededor de un vector de pesos, por lo que serán las partes
del mapa que más se han contraído.
En el siguiente gráfico se muestra la representación de uno de estos mapas
(50x50, 15 patrones 3-D) en el espacio de pesos. Se aprecia claramente cómo el mapa se
contrae en los patrones (puntos azules) y se expande en el espacio entre ellos.
En el siguiente mapa se ve cómo se puede conseguir una proyección con
bastante concordancia entre distancia real y distancia en el mapa:
Æ
Pues bien, es esto precisamente lo que determina la bondad de un mapa: La
concordancia entre distancia en el mapa y distancia en el espacio de pesos. Cuanto
menor sea la parte oscura de la representación de clústers de un mapa, por tanto, mejor
será éste. Para tener un baremo objetivo, la bondad de un mapa se calcula promediando
las distancias medias que se hallaron para cada neurona. Esto se puede hacer incluso
con un programa de diseño gráfico, con tan sólo redimensionar la imagen a un píxel de
tamaño. Aplicándolo a los tres mapas anteriores resulta que están colocados por bondad
creciente.
6. Conclusiones
Los mapas de Kohonen son fundamentalmente una manera de reducir la
dimensionalidad de un conjunto de datos a 2. Esto sirve para poder visualizar de
manera comprensible datos con muchos grados de libertad.
Según la clase de entrenamiento que se les haga tienen capacidad de
generalización (entrenamiento no completo) y capacidad de interpolación (cuando el
entrenamiento es exhaustivo).
Esto se regula fácilmente con los factores de decrecimiento de la adaptación y la
vecindad. Si la adaptación de las neuronas decrece muy rápidamente, el entrenamiento
no será completo, en el sentido de que los patrones no serán copiados exactamente en el
mapa. Cuanto más lentamente decrezca la vecindad, mejor capacidad interpoladora
tendrá la red.
Tienen como beneficio muy importante el conservar la topología del conjunto
de datos. Con esto, un camino trazado en el espacio de datos es proyectado como un
camino en el mapa de Kohonen.
En cambio no siempre conservan de manera adecuada las distancias entre
patrones de entrada. El que lo hagan depende fundamentalmente de los parámetros
del aprendizaje, y determina la bondad del mapa de Kohonen.
Una tasa de aprendizaje inicial alta (cerca de 1) y un radio de vecindad inicial
bajo hacen que la red converja rápidamente, pero que el resultado no tenga mucha
bondad.
Una tasa de aprendizaje inicial alta con un radio de vecindad inicial grande
hacen que la red vaya repartiéndose lentamente por los patrones, pero gracias a esto
conseguirá tener una bondad alta.
Cuanta mayor es la bondad de un mapa de Kohonen, más próximo está a indicar
el camino más corto entre puntos del espacio de pesos. Así, se le encuentra aplicación
en el problema del viajante.
7. Bibliografía
Libros:
Referencia
[Caudill-92]
TÍTULO Understanding Neural Networks: Computer Explorations,
Vol 1,2.
AUTORES
Caudill, M, and Butler, Ch.
EDITORIAL
The MIT Press
Referencia
[Freeman91][Básica]
AÑO
1992
TÍTULO Neural Networks: Algorithms, Applications, and Programming Techniques
AUTORES
Freeman, J.A., and Skapura, D.V.
EDITORIAL
Addison Wesley Publishing Company
AÑO
1991
Descargar