Redes Elásticas

 

    Una de las aplicaciones más conocida de los Mapas Autoorganizados es la adaptación de funciones o patrones. El applet que se puede ver en esta página trata la versión más visual de esta aplicación, que es la adaptación de una red a una figura dada.

    Las neuronas del mapa, que tienen una cierta ordenación interna, durante el entrenamiento se van moviendo para adaptarse a los patrones de entrada. Este applet es una buena forma de ver cómo ocurre este desplazamiento, así como para comprender las relaciones de vecindad entre neuronas.

    

    ARQUITECTURA

    El mapa autoorganizado que se usa tiene este aspecto:

    En la capa de entrada tan sólo tenemos dos neuronas, que nos darán la posición en 2D de cada punto de la figura a adaptar. 

    En la capa de salida tendremos N neuronas, siendo N configurable en el applet a través del cuadro de texto Número de Neuronas. Aunque en la figura anterior todas las neuronas estén representadas linealmente, su topología interna variará según el cuadro de selección Dimensión de red

    Si elegimos una sola dimensión (1D), las neuronas estarán conectadas cada una con la siguiente (y la última con la primera). De esta forma, la neurona i es vecina de las neuronas i+1 e i-1, en menor medida de la i+2 y la i-2, etc; hasta llegar al ratio máximo, establecido internamente.

    Con dos dimensiones (2D), a cada neurona se le asigna una posición (x,y) dentro de la red, de forma que la neurona (i,j), es vecina de cuatro neuronas en vez de dos: (i+1,j) (i-1,j) (i,j+1) (i,j-1).

                   

            Red de 1 dimensión                                                            Red de 2 dimensiones

    Las redes ordenadas topológicamente en dos dimensiones forman representaciones de la figura original más uniformes, aunque al existir más relaciones de vecindad, a veces se adaptan peor a figuras complejas. Las redes de una dimensión son más flexibles, pero también menos uniformes en su distribución.

    De las figuras que podemos elegir modelar con la red elástica, algunas serán mejor modeladas por redes 2D y otras tomarán mejor aspecto con redes 1D:

           

           

 

ENTRENAMIENTO

    El entrenamiento se basa en el aprendizaje no supervisado, de forma que sólo aprende la neurona cuyos pesos se acerquen más al patrón de entrada (x,y). También aprenderán, en menor medida, según una función de vecindad H, las neuronas cercanas a la neurona ganadora.

    La salida de cada neurona no es relevante para el resultado final. Sólo nos importan sus vectores de pesos, que es lo que representaremos como su posición. La salida será un valor de 0 a 1 que servirá para indicarnos el grado en el que aprenderá cada patrón de ejemplo las neuronas (con un valor de 1, lo aprenderá en grado máximo).

    Con cada iteración, se selecciona aleatoriamente una posición (x,y) que se encuentre en el espacio delimitado por la figura que queremos adaptar. Conforme el número de iteraciones crezca, la red irá tomando una idea global de la forma que queremos que aprenda. Generalmente, unas 3000 iteraciones son suficientes para entrenar 100 neuronas. Los ejemplos con espacios más grandes (como el cuadrado), pueden necesitar más iteraciones.

    A veces, sobre todo con vecindad 2D, puede ser que la red se enrolle sobre sí misma dando lugar a lazos que impiden que la red se adapte correctamente. Éste parece ser un problema observado ya por muchos expertos, entre ellos el propio T. Kohonen, y que de momento no parece tener solución.

    Además, se puede observar que en general, la red siempre es ligeramente menor que la forma que trata de adaptar. Este efecto de contracción disminuye si se usan más neuronas en la red.