Download Trabajo - DavidHorat.com
Document related concepts
Transcript
Índice 1. Problema a resolver ...................................................................................................... 2 2. Estudio teórico de las redes Backpropagation.............................................................. 3 3. Arquitectura y regla de aprendizaje de la red ............................................................... 4 Arquitectura .............................................................................................................. 4 Regla de aprendizaje. Regla delta generalizada ....................................................... 5 4. Resolución .................................................................................................................. 10 Caracterización del problema ................................................................................. 10 Configuración ......................................................................................................... 11 Entrenamiento......................................................................................................... 12 Metodología de las pruebas .................................................................................... 14 5. Resultados y análisis................................................................................................... 15 Efecto de la tasa de aprendizaje.............................................................................. 15 Efecto del orden de presentación de los patrones................................................... 21 Importancia de las condiciones iniciales ................................................................ 23 Entrenamiento en situaciones de ruido................................................................... 27 6. Conclusiones............................................................................................................... 29 7. Bibliografía................................................................................................................. 30 1. Problema a resolver En esta práctica tendremos que crear una red neuronal que reconozca caracteres y estudiar la influencia de la representación de la información en la efectividad del reconocimiento. Hemos seleccionado 26 caracteres (A-Z) para que sean reconocidos. Para ello usaremos una red neuronal de tipo Back Propagation ya que, como hemos visto en prácticas anteriores, las limitaciones del Perceptrón nos impedirían realizarla. Así mismo estudiaremos el funcionamiento, topología, neurodinámica, aprendizaje y aplicabilidad de las redes Back Propagation. 2 2. Estudio teórico de las redes Backpropagation En 1986, Rumelhart, Hinton y Williams, formalizaron un método para que una red neuronal aprendiera la asociación que existe entre los patrones de entrada y las clases correspondientes, utilizando varios niveles de neuronas. El método backpropagation (propagación del error hacia atrás), basado en la generalización de la regla delta, a pesar de sus limitaciones, ha ampliado de forma considerable el rango de aplicaciones de las redes neuronales. El funcionamiento de la red backpropagartion (BPN) consiste en el aprendizaje de un conjunto predefinido de pares de entradas-salidas dados como ejemplo: primero se aplica un patrón de entrada como estímulo para la primera capa de las neuronas de la red, se va propagando a través de todas las capas superiores hasta generar una salida, se compara el resultado en las neuronas de salida con la salida que se desea obtener y se calcula un valor de error para cada neurona de salida. A continuación, estos errores se transmiten hacia atrás, partiendo de la capa de salida hacia todas las neuronas de la capa intermedia que contribuyan directamente a la salida, recibiendo de error aproximado a la neurona intermedia a la salida original. Este proceso se repite, capa por capa, hasta que todas las neuronas de la red hayan recibido un error que describa su aportación relativa al error total. Basándose en el valor del error recibido, se reajustan los pesos de conexión de cada neurona, de manera que en la siguiente vez que se presente el mismo patrón, la salida esté más cercana a la deseada. La importancia de la red backpropagation consiste en su capacidad de autoadaptar los pesos de las neuronas de las capas intermedias para aprender la relación que existe ente un conjunto de patrones de entrada y sus salidas correspondientes. Es importante la capacidad de generalización, facilidad de dar salidas satisfactorias a entradas que el sistema no ha visto nunca en su fase de entrenamiento. La red debe encontrar una representación interna que le permita generar las salidas deseadas cuando se le dan entradas de entrenamiento, y que pueda aplicar, además, a entradas no presentadas durante la etapa de aprendizaje para clasificarlas. 3 3. Arquitectura y regla de aprendizaje de la red Arquitectura: La red de Back Propagation está formada por 3 capas: la capa de entrada, una capa oculta y la capa de salida. Las neuronas están completamente interconectadas entre capas adyacentes, siempre en el sentido entrada Æ oculta Æ salida. Representaremos la red así: 1 1 Wh x Entrada WS h NI 1 NH Oculta y NS Salida La función de salida de las capas oculta y de salida es una función escalón (de umbral). Como veremos más adelante, para desarrollar la regla de aprendizaje de la red (la regla delta generalizada) es preciso que la función de salida empleada sea derivable. La función escalón no lo es (aunque tiene derivada generalizada: la función delta de Dirac), por lo que se emplea la función sigmoide, que es ésta: Y ésta es su gráfica: 4 Una propiedad de la sigmoide que usaremos luego es que su derivada es así: Éstas son, por tanto, las ecuaciones de proceso de la red: Regla de aprendizaje. Regla delta generalizada: Veamos ahora cómo se obtiene la regla de aprendizaje de la red. Back Propagation, como se dijo antes, usa la llamada regla delta generalizada. Ésta es una generalización de la regla de Widrow-Hoff a redes con cualquier función de activación, cualquier función de salida, y cualquier número de capas. Se deduce para la red de Back Propagation de la misma forma con que se hacía para el ALC: 5 Llamamos a la salida deseada, y al vector de error ( ). Buscamos minimizar la función de error cuadrático medio: El método para minimizar la función es también el mismo: seguir el camino opuesto al gradiente de la función. La regla de actualización de pesos es, por tanto: Empezaremos por el gradiente según la capa de salida. Todas las constantes positivas que vayan apareciendo de aquí en adelante las incorporaremos en la tasa de aprendizaje, α. La derivada que resulta es 0 excepto cuando k=i. Esto es así porque en el error que genera el peso wSij no intervienen los pesos que van hacia las otras neuronas de salida. Es por tanto: 6 Vemos cómo la expresión de los elementos del gradiente del error cuadrático medio ha cambiado al haber cambiado la función de salida: Se ven multiplicados por el valor de la derivada de dicha función. En realidad, esto también sucedía para la regla de Widrow-Hoff, sólo que, en ese caso, al ser la función de salida la función identidad, su derivada era 1 y no aparecía. En aquel caso, era: Ahora es: Siendo el nuevo vector de error (el * representa al producto elemento a elemento): Es por este motivo que, a la hora de escoger una función de salida, es importante que su derivada se pueda expresar fácilmente en función de su valor actual. Esto sucede, además de con la sigmoide, por ejemplo, con la tangente hiperbólica. Es fácil saber eso teniendo en cuenta que tanh(x)=2·σ(2x)-1. Si la función de salida fuera la tangente hiperbólica, como en el caso del Back Propagation del SNNS, sería concretamente: En definitiva, para los pesos de la capa de salida es: Procedamos ahora a calcular el gradiente desde la capa oculta; 7 De nuevo nos encontramos con una derivada de esta forma: Si llamamos: Podemos escribir: 8 Resulta entonces para los pesos de la capa oculta: La regla de aprendizaje de la red Back Propagation queda, en resumen, así: O, de otra manera: 9 4. Resolución Caracterización del problema: Cómo ya hemos comentado, lo que queremos es construir una red de tipo Back Propagation que nos reconozca un conjunto de 26 caracteres: [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]. Para ello primero hemos de disponer de una capa de entrada, que en nuestro caso será una lattice de 7 x 5. La capa intermedia (capa oculta), que es la encargada de extraer las características de los patrones de entrada, será de 10 elementos. Y la capa de salida será de 8 elementos que representarán las potencias de 2 desde 0 hasta 7 que nos permitirán la representación de 256 elementos. Hemos elegido esta representación para que se corresponda con el estándar ASCII, aunque en esta práctica sólo reconozcamos 26 caracteres. La representación gráfica la podemos encontrar en la figura 1, que viene a continuación: Figura 1 10 Una vez creada la estructura de la red que mostramos en la Figura 1, creamos el fichero de patrones, cuyas entradas serán las letras de la A a la Z representadas en la lattice de 7x5 y cuyas salidas serán las codificaciones que ya comentamos. Configuración: Cuando hayamos cargado tanto la red como el fichero de patrones, tendremos que entrenar dicha red. Para ello seleccionamos el botón “Control” del SNNS, y nos aparece la siguiente ventana (Figura 2): Figura 2 Configuramos con ella la red de la siguiente manera: • El cuadro a la derecha de CYCLES indica el número de iteraciones que se realizará. Podemos ponerlo tranquilamente a 500. • El cuadro a la derecha de LEARN indica la tasa de aprendizaje. Luego veremos los resultados de utilizar distintos valores aquí. Si queremos que converja lo podemos poner entre 0.3 y 0.7. Por ejemplo, a 0.5. 11 • El botón llamado SEL. FUNC a la derecha de LEARN sirve para establecer la regla de aprendizaje. Hemos de usar “Std_BackPropagation”. • El botón SEL. FUNC a la derecha de INIT sirve para elegir como serán los pesos iniciales de las conexiones. Queremos que sean aleatorios, por lo que escogeremos la primera opción: “Randomize_Weights”. • Los dos cuadros de texto a la derecha de INIT sirven para establecer el rango de esos pesos aleatorios. Funcionan de la siguiente manera: El valor del cuadro de la derecha es proporcional al rango de valores, de modo que 50 000 da una amplitud de 1 (por ejemplo, de -0.5 a 0.5). Si queremos que vayan de -1 a 1 pondremos 100 000, etc. El cuadro de la izquierda indica el valor central del rango, aunque algo desplazado hacia el límite inferior. Por lo general se puede poner la media entre el valor central del rango y el límite inferior, y si los pesos no quedan del todo bien, modificar el valor en el sentido que corresponda. Para obtener unos pesos entre -0.5 y 0.5 los ponemos a -0.3 y 50 000. Entrenamiento: Para asignar a los pesos los valores aleatorios que indicamos al configurar, hemos de darle al botón INIT. Podemos ver los pesos en tiempo real desde la ventana de Weight Visualization (Figura 3), a la que accedemos pulsando el botón “Weights” del SNNS. Se configura fácilmente el rango de colores desde la ventana que aparece al pulsar el botón SETUP. 12 Figura 3 En el eje de abcisas se numeran las 35 neuronas de la capa de entrada y las 10 de la capa oculta (36 – 45). En el eje de ordenadas aparecen las de la capa oculta (36 – 45) y las de salida (46 – 53). Para que el SNNS vaya calculando el error cuadrático medio en cada iteración del aprendizaje y lo represente gráficamente hemos de abrir la ventana “Graph”. Además hemos de asegurarnos de que a la derecha de Display: esté seleccionado MSE (mean squared error; error cuadrático medio), como se muestra en la Figura 4. Figura 4 Finalmente, para entrenar la red con los patrones que cargamos, pulsamos el botón ALL de la ventana de Control. Una vez ha terminado el entrenamiento, podemos comprobar la respuesta de la red a los patrones que queramos así: Abrimos la ventana de “Display”, en la que se muestran las neuronas de la red. En la ventana de Control, haciendo clic en el botón USE del grupo PATTERN podemos 13 escoger qué fichero de patrones, de entre los que tenemos cargados, vamos a probar. Finalmente, comprobamos la respuesta de la red a cada patrón haciendo clic en el botón TEST (grupo PATTERN) repetidas veces. Metodología de las pruebas: Era necesario poder comparar con rigor el efecto que tienen los distintos parámetros de la red sobre su aprendizaje. Por eso, creamos una distribución aleatoria de pesos (entre -0.5 y 0.5) y la guardamos, de modo que todas las pruebas partirían de los mismos pesos iniciales y así no intervendría el azar. Estos fueron los pesos guardados (Están almacenados en el fichero “caracteres.net”, a plena disposición): Figura 5 14 5. Resultados y análisis Efecto de la tasa de aprendizaje: Al iterar con una tasa de aprendizaje de 0.2, que es el valor que se usa por defecto, comprobamos cómo la red se queda estancada en un mínimo local de error 0.04. Gráfica 1 Un vistazo a las respuestas que da la red permite comprobar que el error está en el reconocimiento de la letra O, que interpreta como una G (Figura 6): 15 Figura 6 Con una tasa de 0.22 se obtiene el efecto curioso de pasar muy cerca del mínimo local pero finalmente sobrepasarlo, llegando la red a converger, tal y como muestra la gráfica del error cuadrático medio: Gráfica 2 16 Éste es un detalle de la zona donde se sobrepasa el mínimo local: Gráfica 3 Los pesos entre ambos estados de aprendizaje apenas cambian, como se comprueba en las siguientes imágenes: Pesos en el mínimo local 17 Pesos en el mínimo global Es elemental el hecho de que a quienes hay que prestar atención es a las conexiones salientes de las neuronas 15, 18 y 19 y a las entrantes a la neurona 50 (Figura 7). Los pesos desde la neurona 15 apenas cambian. Desde las neuronas 19 y 18 se puede apreciar un tenue aumento en la inhibición que ejercen sobre las neuronas 37 y 38 respectivamente. En cuanto a las conexiones que entran en la neurona 50, vemos cómo el único cambio apreciable es que las conexiones que le vienen de las neuronas 37 y 38 se han reforzado. Vemos en la Figura 7 cómo esta vez la respuesta ante la letra O es la correcta. 18 Figura 7 Con una tasa de aprendizaje de 0.5 la red converge sin problemas, y en unas 275 iteraciones, tal y como se aprecia en la gráfica: 19 Gráfica 4 Los pesos finales son los siguientes: Figura 8 20 La tasa de aprendizaje puede subir más, e incluso pasar de 1.0, sin que la convergencia de la red se vea afectada. Con el juego de pesos iniciales con el que trabajamos, se puede llegar hasta una tasa de aprendizaje, de 1.7. Con 1.75, por ejemplo, la red cae en un curioso mínimo local: En él todas las respuestas de la red a los patrones de entrada son correctas, excepto para la letra Q, ¡que identifica como una A! (Figura 9) Figura 9 Con valores a partir de 1.8, la red oscila de forma brusca por el espacio de pesos, lográndose rara vez la convergencia en un mínimo global. Efecto del orden de presentación de los patrones: Cuando los patrones de entrada se pueden agrupar en un pequeño número de clases con importantes diferencias de forma entre sí, hay que prestar atención al orden en que se presentan los patrones a la red: Si se realiza clase a clase, es más que probable 21 que la red se vaya olvidando de la clase anterior mientras itera en una nueva. El efecto es similar al de orbitar alrededor del mínimo en el espacio de pesos. Lo más apropiado en casos así es presentar los patrones a la red de manera aleatoria, de modo que a lo largo de un cierto número de iteraciones queden representadas todas las clases casi por igual. Hacer esto evita la otra solución al problema, que es disminuir la tasa de aprendizaje, que es como pasar los patrones ante la red más rápidamente. Con una tasa de aprendizaje de 0.5 (que conservaremos también para el resto de pruebas), éste es un resultado típico de los que se dan al iterar escogiendo los patrones al azar. Gráfica 5 Se ve nítidamente cómo la red sale del mínimo local de error 0.04 al presentársele de forma consecutiva los patrones a los que no respondía bien en ese estado (causa de la subida repentina del error cuadrático medio). Se alcanzó finalmente la siguiente configuración de pesos: 22 Figura 10 Importancia de las condiciones iniciales: Para estas pruebas dejamos la tasa de aprendizaje a 0.5, y variamos el rango de los pesos iniciales. Tomamos en algunos casos varias muestras con el mismo rango (pero distinta configuración inicial, al ser aleatoria) para comprobar que las variaciones no eran debidas a la aleatoriedad de los pesos. Así, usamos las siguientes configuraciones iniciales: 23 La evolución del aprendizaje de cada uno, de izquierda a derecha y de arriba abajo, fue: 24 Rango [-0.5, 0.5] Rango [-1.0, 1.0] Rango [-4.0, 4.0] Rango [-0.25, 0.25] 25 Rango [-0.25, 0.25] Rango [-0.01, 0.01] Con pesos iniciales entre ±0.5, el error cuadrático medio baja de 0.01 en 250 300 iteraciones. Aumentando el rango a ±1.0, se tarda entre 300 y 350 iteraciones de bajar del 0.01 de error. Con un rango de pesos iniciales entre ±4.0 se rondan los mínimos locales, por lo que (como se comprueba en la gráfica) es una mala zona para que la red comience su aprendizaje. Si cerramos el rango hasta ±0.25, el número de iteraciones para bajar de 0.01 de error apenas varía: entre 250 y 300. Pero cerrando más allá, hasta ±0.01, la red tiene que invertir un número considerable de iteraciones en “hacer arrancar” los pesos, con lo que acaba necesitando 400 iteraciones. La explicación de este fenómeno es fácil si imaginamos que el espacio de pesos sólo tiene 2 variables, y es por tanto un campo de alturas. Bien, si en alguna parte de ese campo hay una colina (máximo local), conseguimos antes que una bola ruede cuesta abajo si la soltamos en la falda de la colina que si la soltamos en el centro, donde apenas hay pendiente (gradiente cero). 26 Entrenamiento en situaciones de ruido: En el libro “Redes Neuronales: Algoritmos, Aplicaciones y Técnicas de programación” [NNAAPT] de Freeman y Skapura, los autores afirman que si una red de Back Propagation ha de funcionar en un entorno con ruido, en su adiestramiento hay que incluir algunos patrones de entrada con ruido. Además afirman que en algunos casos hacer esto ayuda a la red a converger, aunque su propósito no sea el filtrado de ruido. Pues bien, preparamos una tanda de patrones formada por las 26 letras habiendo añadido cambios aleatorios en la activación de algunos de los píxeles. Además, preparamos un fichero de patrones similar al que usábamos originalmente en el entrenamiento pero añadiendo, para cada letra, una réplica ruidosa de ésta. El ruido no debía ser el mismo en los dos ficheros, por supuesto, sino aleatorio e independiente del patrón. Con la misma tasa de aprendizaje de 0.5, la red a la que suministramos patrones de entrada sin y con ruido evolucionó así: Gráfica 6 27 El aumento en la velocidad de convergencia es sólo aparente, ya que en cada iteración se aplica dos veces cada patrón (una normal y otra con ruido). Por tanto las 165 iteraciones que tarda la red en bajar del error 0.01 equivalen a 330 iteraciones “normales”. Una vez teníamos las dos redes listas (una habiendo aprendido sin ruido, y la otra con letras “limpias” y letras ruidosas), comprobamos la respuesta de ambas a la presentación de patrones con ruido (los que preparamos en un fichero aparte). El comportamiento de ambas fue bueno, aunque no en exceso: La red que aprendió sin ruido identificó mal las siguientes letras, y de esta forma: la E como F, K como Y o Z, P como F, U como E, V como X, W como Y e Y como S. Un total de 7 fallos y 19 aciertos (73%). La red que aprendió en un ambiente ruidoso identificó mal de esta manera: la E como D, F como V, J como K, O como G, P como F, U como E, V como T y W como Y o Z. En total, 8 fallos y 18 aciertos (69%). 28 6. Conclusiones De todas las pruebas realizadas se extraen las siguientes conclusiones: En la red de Back Propagation, la tasa de aprendizaje no condiciona fuertemente la convergencia, al contrario de lo que sucede con otras redes. Esto hace que sea especialmente eficaz. La presentación de patrones de manera aleatoria sólo sirve para evitar que la red oscile entre clases de patrones. Esto sucede si los patrones están más o menos ordenados por similaritud y hay acusadas diferencias entre clase y clase. Se potencia cuando el número de patrones en cada clase es elevado, aunque esto se combate directamente disminuyendo la tasa de aprendizaje. En el caso del que nos hemos ocupado, esta técnica no aporta nada. Los pesos iniciales ideales para una red Back Propagation han de ser aleatorios y comprendidos entre -0.5 y 0.5, tal y como afirman Freeman y Skapura en [NNAAPT]. Entrenar la red en un ambiente ruidoso no es eficaz para que su capacidad de filtrado aumente. Estos hechos contradicen la afirmación de los dos autores anteriores en su libro. También afirman que entrenar la red en ambiente ruidoso hace en algunos casos que converja más rápidamente. Éste claramente no es el caso. La capacidad que mostró la red para filtrar ruido fue relativamente buena (75% de aciertos), pero no excelente. Esto quizás es debido a la baja resolución de los patrones de entrada que utilizamos (5x7 píxeles), que amplifica el efecto del ruido. 29 7. Bibliografía Referencia AUTORES EDITORIAL Referencia AUTORES EDITORIAL [Caudill-92] TÍTULO Understanding Neural Networks: Computer Explorations, Vol 1,2. Caudill, M, and Butler, Ch. The MIT Press AÑO 1992 [FreemanTÍTULO Neural Networks: Algorithms, Applications, and Pro91][Básica] gramming Techniques Freeman, J.A., and Skapura, D.V. Addison Wesley Publishing Company AÑO 1991 30