2013年6月4日 星期二


Redes Neuronales



Aprendizaje Supervisado y no Supervisado


   Aprendizaje supervisado:

       En aprendizaje automatico y mineria de datos, el aprendizaje supervisado es una técnica para deducir una función a partir de datos de entrenamiento. Los datos de entrenamiento consisten de pares de objetos (normalmente vectores): una componente del par son los datos de entrada y el otro, los resultados deseados. La salida de la función puede ser un valor numérico (como en los problemas de regresión) o una etiqueta de clase (como en los de clasificación). El objetivo del aprendizaje supervisado es el de crear una función capaz de predecir el valor correspondiente a cualquier objeto de entrada válida después de haber visto una serie de ejemplos, los datos de entrenamiento. Para ello, tiene que generalizar a partir de los datos presentados a las situaciones no vistas previamente.

       Las redes de entrenamiento supervisado han sido los modelos de redes más desarrolladas desde inicios de estos diseños. Los datos para el entrenamiento están constituidos por varios pares de patrones de entrenamiento de entrada y de salida. El hecho de conocer la salida implica que el entrenamiento se beneficia la supervisión de un maestro. 
         
         Se puede ver un diagrama esquemático de un sistema de entrenamiento supervisado en la siguiente figura:


        Según vimos antes, en este en modo aprendizaje se muestran los patrones a la red y la salida deseada para esos patrones y se usa una fórmula matemática de minimización del error que ajuste los pesos para dar la salida más cercana posible a la salida deseada.

Un esquema general de este tipo de aprendizaje sería este

    
   1. Inicializar los pesos de las sinapsis aleatoriamente.


   2. Para cada patrón P perteneciente al conjunto de los patrones que tenemos
2.1 Mostrar el patrón de entrada Pentrada y hacer la dinámica de la red para calcular la salida de la red Sred, que no es la salida deseada sino un patrón aleatorio ya que los pesos inicialmente eran aleatorios.
2.2 Hallamos el error Cálculo del error entre la salida de la red, Sred, y la salida deseada del patrón Psalida_deseada. Esto se hace en muchos casos con el error cuadrático medio Epatrón = Raizcuadrada(suma((Psalida_deseadai) ² - (Sredi) ²)).
2.3 Ajustar los pesos usando la regla de aprendizaje para disminuir el error medio. Normalmente, se hace creando una función que represente el error cometido, la cual derivamos para aplicar la técnica de minimización matemática.
     Otra forma de ver los procesos de ajuste de los pesos, es como un mapa bidimensional que representa los errores que la red comete en la clasificación, en función de los pesos u las entradas. El objetivo es llegar lo más bajo posible en el mapa, para ello, buscamos la gradiente para cada punto concreto de ese mapa. Para ello derivamos la función error para encontrar la dirección de máxima pendiente. Quizás esta parte es la más compleja matemáticamente.

En resumen usaremos una función, que demostrada matemáticamente por alguno de los anteriores principios, minimiza el error entre la salida que deseamos Psalida_deseada y la salida que nos da la red Sred.



   3. Si el error es mayor de cierto criterio volver al paso 2; si todos los ejemplos sehan clasificado correctamente, finalizar. 
       Las redes más significativas que usan este aprendizaje supervisado son el Perceptrón, El Perceptrón multicapa y la red de Hopfield.

Algunas de sus aplicaciones más importantes
      Asociadores de patrones, esto es asocia dos patrones y permite recuperar la información a pesar de errores en la capa de entrada.

     Modeladores funcionales, las redes neuronales permiten, gracias a su capacidad de ajustar el error dar los valores más cercanos a una función de la que solo sabemos algunos puntos por los que pasa


      Como ejemplo de aprendizaje supervisado podemos observar, el perceptron, el cual tiene la siguiente función de aprendizaje

Psiguiente = Pactual + x* (Psalida_deseada – Sred) * Pentrada

    Donde Psiguiente es el nuevo valor para el peso sináptico, Pactual es el peso actual, x es un parámetro que permite definir cuanto de rápido aprende la red, Psalida_deseada es la salida que deseamos para esa entrada, Sred es la salida que ha generado la red y Pentrada es el patrón de entrada.
Esta regla aplicada iterativamente a todos los patrones de entrada hace que los pesos converjan a un estado en el que darán Psalida_deseada cuando le presentemos el patrón Pentrada o uno que sea lo suficientemente parecido a el.

Se caracteriza porque el proceso de aprendizaje se realiza mediante un entrenamiento controlado por un agente externo (supervisor, maestro) que determina la respuesta que debería generar la red a partir de una entrada determinada. El supervisor comprueba la salida generada por el sistema y en el caso de que no coincida con la esperada, se procederá a modificar los pesos de las conexiones.
En este tipo de aprendizaje se suelen distinguir a su vez tres formas de llevarlo a cabo:
  1. Aprendizaje por corrección de error : Consiste en ajustar los pesos de las conexiones de la red en función de la diferencia entre los valores deseados y los obtenidos en la salida. La formula para la corrección de los pesos podría ser la siguiente:
Incr(wji) = ß yi (dj - yj)
siendo:
Incr(wji) : Variación en el peso de la conexión entre las neuronas i y j
yi : Salida de la neurona i
dj : Valor de salida deseado para la neurona j
yj : Valor de salida obtenido en la neurona j
ß : Factor de aprendizaje (0 < ß <= 1) que regula la velocidad del aprendizaje
Algoritmos que utilizan este tipo de aprendizaje son:
  • Regla de aprendizaje del perceptron: utilizada en la red PERCEPTRON
  • Regla delta o del mínimo error cuadrado: utilizado en las redes ADALINE y MADALINE.
  • Regla delta generalizada: utilizada en redes multicapa
  1. Aprendizaje por refuerzo : este tipo de aprendizaje es más lento que el anterior y se basa en la idea de no disponer de un ejemplo completo del comportamiento deseado; es decir, de no indicar durante el entrenamiento la salida exacta que se desea que proporcione la red ante una determinada entrada. Aquí la función del supervisor se reduce a indicar mediante una señal de refuerzo si la salida obtenida en la red se ajusta a la deseada (éxito = +1 o fracaso = -1) y en función de ello se ajustan los pesos basándose en un mecanismo de probabilidades.
Ejemplos de este tipo de algoritmos son el denominado Linear Reward-Penalty o LR-P [Narenda 74] y el Adapative Heuristic Critic [Barto 83] utilizado en redes feedforward de tres capas.
  1. Aprendizaje estocástico : consiste básicamente en realizar cambios aleatorios en los valores de los pesos y evaluar su efecto a partir del objetivo deseado y de distribuciones de probabilidad. Un red que utiliza este tipo de aprendizaje es la red Boltzman Machine, ideada por Hinton, Ackley y Sejnowski en 1984 y la red Cauchy Machine desarrollada por Szu en 1986.

Aprendizaje no supervisado:

     Aprendizaje no supervisado es un método de Aprendizje Automático donde un modelo es ajustado a las observaciones. Se distingue del Aprendizaje Supervisado por el hecho de que no hay un conocimiento a priori. En el aprendizaje no supervisado, un conjunto de datos de objetos de entrada es tratado. Así, el aprendizaje no supervisado típicamente trata los objetos de entrada como un conjunto de variables aleatorias, siendo construido un modelo de densidad para el conjunto de datos.

     El aprendizaje no supervisado puede ser usado en conjunto con la inferencia bayesiana para producir probabilidades condicionales (es decir, aprendizaje supervisado) para cualquiera de las variables aleatorias dadas. El Santo Grial del aprendizaje no supervisado es la creación de un código factorial de los datos, esto es, un código con componentes estadísticamente independientes. El aprendizaje supervisado normalmente funciona mucho mejor cuando los datos iniciales son primero traducidos en un código factorial.

      El aprendizaje no supervisado también es útil para la compresión de datos: fundamentalmente, todos los algoritmos de compresión dependen tanto explícita como implícitamente de una distribución de probabilidad sobre un conjunto de entrada.

      Otra forma de aprendizaje no supervisado es la agrupación (en inglés, clustering), el cual a veces no es probabilístico.

      La Teoría de resonancia adaptativa (ART) permite variar el número de agrupaciones en función del tamaño del problema, permitiendo al usuario el control del grado de similitud entre miembros de las mismas agrupaciones en términos de una constante definida por el usuario llamada el parámetro de vigilancia. Las redes ART son también usadas en muchas tareas de reconocimiento de patrones, como el reconocimiento automático de objetivos o el procesamiento de señales sísmicas. La primera versión de ART fue "ART1", desarrollada por Carpenter y Grossberg (1988).

    Este tipo de aprendizaje no necesita que le mostremos los patrones objetivo para salida, ya que el algoritmo y la regla de modificación de las conexiones producen patrones de salida consistentes. Cuando la red procesa patrones con bastante grado de similitud, da la misma salida para ambos patrones, esto es, clasifica los patrones en categorías de patrones parecidos.
     
     Cuando digo parecido, lo pongo en cursiva ya que nosotros debemos en decidir en que grado deberan parecerse. Normalmente se usa el error cuadrático medio para determinar la similitud, aunque hay otras opciones.

    Podemos imaginar que en el proceso de aprendizaje, la red mide cuanto se parecen el patron que le llega y los que tiene almacenados y en función de ello los agrupa en una categoría o otra, aunque en un principio no sepamos que salida corresponderá a cada tipo o grupo de patrones de entrada, ni que atributos usará para clasificarlos. Esto es, nosotros solo tenemos un conjunto de patrones no sabemos ni las características ni las categorías posibles y la red en función de su algoritmos de aprendizaje diferenciara ambas cosas y nos clasificara los patrones en categorías.

   En general, los métodos de aprendizaje no supervisado usan representaciones modélicas de los objetos a reconocer y a clasificar. Por ejemplo una aplicación de reconocimiento de caras podríamos pasar la fotografía como un mapa de bits pero esto seria muy costoso computacionalmente, pero sin embargo si pasáramos una serie de valores como anchura de ojos, anchura de boca, tamaño de frente, etc., esto nos podría clasificar la cara en función de sus parecidos.
Entre los distintos tipos de aprendizaje no supervisado podemos distinguir, el aprendizaje por componentes principales y el aprendizaje competitivo. 

     No requieren de influencia externa para ajustar los pesos de las conexiones entre sus neuronas. La red no recibe ninguna información por parte del entorno que le indique si la salida generada en respuesta a una determinada entrada es o no correcta; son capaces de autoorganizarse. Estas redes deben encontrar las características, regularidades, correlaciones o categorías que se pueden establecer entre los datos de la entrada. Pero, ¿qué genera la red en la salida?. Existen varias posibilidades en cuanto a interpretación :
  • La salida representa el grado de familiaridad o similitud entre la información de entrada y las informaciones mostradas con anterioridad.
  • Clusterización o establecimiento de categorias, indicando la red a la salida a qué categoría pertenece la información de entrada, siendo la propia red la que debe establecer las correlaciones oportunas.
  • Codificación de los datos de entrada, generando a la salida una versión codificada con menos bits, pero manteniendo la información relevante de los datos.
  • Mapeo de características, obteniéndose una disposición geométrica que representa un mapa topográfico de las características de los datos de entrada.
Los algoritmos de aprendizaje no supervisado suelen ser de dos tipos:
  1. Aprendizaje hebbiano : pretende medir la familiaridad o extraer características de los datos de entrada. Este aprendizaje consiste básicamente en el ajuste de los pesos de las conexiones de acuerdo con la correlación de los valores de activación (salidas) de las dos neuronas conectadas :
Incr (wji) = yi yj
     Si las dos unidades son activas (salida positiva), se produce un reforzamiento de la conexión. Si por el contrario, una es activa y la otra pasiva (salida negativa), se produce un debilitamiento de la conexión. Por tanto, la modificación de los pesos se realiza en función de los estados (salidas) de las neuronas, obtenidos tras la presentación de cierto estímulo (información de entrada), sin tener en cuenta si se deseaba obtener o no esos estados de activación.
     Este tipo de aprendizaje se utiliza en la RED HOPFIELD (1982), ADDITIVE GROSSBERG (1973), LEARNING MATRIX (1961), BIDIRECTIONAL ASSOCIATIVE MEMORY (1988), TEMPORAL ASSOCIATIVE MEMORY (1972). Estas dos últimas son redes feedforward/feedback de 2 capas.
  1. Aprendizaje competitivo y cooperativo : las neuronas compiten unas con otras con el fin de llevar a cabo una tarea dada. Se pretende que cuando se presente a la red cierta información, sólo una o un grupo de ellas se activen. Por tanto las neuronas compiten por activarse, quedando las perdedoras a sus valores de respuesta mínimos. La conexión entre neuronas se realiza en todas las capas de la red, existiendo en estas neuronas conexiones recurrentes de autoexcitación y conexiones de inhibición (signo negativo) por parte de neuronas vecinas.
       El objetivo de este aprendizaje es categorizar (clustering) los datos que se introducen en la red. De esta forma, las informaciones similares son clasificadas formando parte de la misma categoría, activando por tanto la misma neurona de salida. La variación del peso de una conexión entre una unidad i y otra j será nula si la neurona j no recibe excitación por parte de la neurona i y se modificará si es excitada por dicha neurona i
       Un ejemplo de este tipo de aprendiaje es el desarrollado por Kohonen conocido como Learning Vector Quantization (LVQ) aplicado a redes feedforward de dos capas.