Í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