Redes de Kohonen

Introducción

Aprendizaje

Aplicación

Sensibilidad basada en la historia

Introducción

Pertenece a la categoría de las redes competitivas o mapas de autoorganización, es decir, con aprendizaje no supervisado de tipo competitivo. Poseen una arquitectura de dos capas (entrada-salida) (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. En algunos modelos cada entrada puede provocar la activación de un conjunto de unidades de salida, en ese caso estaríamos usando un código demográfico (ver el apartado correspondiente del Aprendizaje no supervisado). 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 a priori, es necesario averiguarlo después de entrenar a la red.

Una de las cualidades de este tipo de redes es la incorporación a la regla de aprendizaje de cierto grado de sensibilidad con respecto al vecindario o historia. Esto hace que el número de neuronas que no aprenden desaparezca, aumentando así su capacidad de extraer o mapear características topológicas de los datos.

La red mapea el espacio de entrada hacia un espacio de salida con cierto orden topológico, Kohonen propone un método para que este orden se conserve al entrenar la red, la clave está en reducir el tamaño del vecindario de la unidad ganadora en cada ireración.

Aprendizaje

Indicamos un procedimiento basado en el cálculo de distancias euclídeas sobre los patrones de entrada.

Supongamos que tenemos patrones de entrada N-dimensionales

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:
  3. donde X son los vectores de entrada.

  4. 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.
  5. Modificar los pesos de los vectores de pesos Wj "cercanos" a Wc (distancia menor a D), según la fórmula:
  6. 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 L (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.

  7. 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.

Aplicación

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 gandora, 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.

Sensibilidad basada en la historia

Una forma de evitar el problema de las unidades que no aprenden es consiste en la incorporación de algún tipo de sensibilidad a la historia o frecuencia en la regla de entrenamiento. Hay dos aproximaciones:

  1. Utilizar la sensibilidad a la frecuencia durante la selección del ganador
  2. Utilizar la sensibilidad a la frecuencia para modificar la tasa de aprendizaje

Ejemplo de regla de aprendizaje con sensibilidad en la historia aplicada en la modulación de la tasa de aprendizaje:

  1. Selección de un ganador mediante alguna medida de distancia
  2. Adaptación de los pesos del ganador

donde e (t) es función de la frecuencia con la que la unidad c es seleccionada como ganadora. Dos posible funciones de este tipo son:

dónde uc(t) es el número de veces que la unidad c ha ganado hasta el momento t