El Perceptrón Multicapa N entradas M neuronas de salida L: neuronas en la capa oculta 1 p M 2 E = ∑∑ ( z i (k ) − y i (k )) 2 k =1 i =1 Implementación de la función XOR Regiones de clasificación en función del número de capas ocultas Usando una función de transferencia continua las redes multicapas también aproximan funciones. El Algoritmo de retropropagación de errores Paso 0: Inicialización pesos Paso 1: (Hacia delante): Cálculo de la salida de cada neurona para un patrón de entrada Paso 2 (Hacia atrás): Cálculo de los deltas (propagación del error hacia atrás) Paso 3: Modificación de los pesos El problema del sobreajuste ó sobre-entrenamiento (‘overfitting’) Suele haber problemas de sobreajuste cuando un modelo posee demasiados parámetros. Conlleva pérdida de la capacidad de generalización. Entrenamiento, Validación y Generalización Objetivo final: final que el clasificador consiga un error de generalización pequeño El comportamiento típico del error de entrenamiento de un clasificador decrece monótonamente durante la fase de entrenamiento, mientras que el error sobre el conjunto de validación decrece hasta un punto a partir del cual crece, lo que indica que a partir del mismo el clasificador realiza un superajuste (ó sobre-entrenamiento “overfitting”) sobre los datos de entrenamiento. Por ello, el proceso de entrenamiento debe finalizar cuando se alcance el primer mínimo de la función del error de validación. validación entrenamiento Conjuntos de entrenamiento, validación y Generalización Conjunto de datos Datos entrenamiento Test Entrenamiento Validación Test Dicho método consiste en dividir los datos muestrales en dos partes; una parte se utiliza como conjunto de entrenamiento para determinar los parámetros del clasificador neuronal y la otra parte, llamada conjunto de prueba (ó test ó conjunto de generalización) se utiliza para estimar el error de generalización. El conjunto de entrenamiento suele a su vez dividirse en conjuntos de entrenamiento (propiamente dicho) y conjunto de validación para ajustar el modelo. Se suelen utilizar el 80% de los datos para entrenar la red, el 10% como conjunto de validación y el 10% restante para estimar la generalización (pero es sólo un criterio orientativo). Construcción de una Red neuronal de tamaño óptimo: Procedimientos de poda Las redes neuronales más pequeñas son preferibles a las más grandes que realizan una misma tarea por varias razones: tienen un menor número de parámetros, el entrenamiento es más rápido y suelen tener una mayor capacidad de generalización al utilizar nuevos patrones. • Partir de una red neuronal de gran tamaño y podarla eliminándole unidades de proceso y conexiones hasta conseguir un tamaño satisfactorio. • Comenzar con una red neuronal muy pequeña e ir incrementando su tamaño añadiendo unidades de proceso, conexiones o capas hasta conseguir un tamaño satisfactorio. • Partir de una red de tamaño suficiente y podar las conexiones y unidades de proceso que se consideren poco relevantes. A continuación se añaden nuevas unidades de proceso con pesos aleatorios y se vuelve a entrenar la red. Este proceso se continúa hasta que se consigue un tamaño aceptable y un comportamiento satisfactorio. Construcción de una red neuronal de tamaño óptimo: Procedimientos de poda Algunos procedimientos para realizar la poda de una red neuronal son: • Eliminar de la red aquellas conexiones cuyos pesos sinápticos sean de pequeña magnitud. • Eliminar aquellas conexiones cuya existencia no afecte significativamente a las salidas de la red. Para realizar este tipo de poda basta con ir comparando las salidas de la red cuando un peso sináptico es reducido a cero. • Eliminar aquellos sensores de entrada que producen cambios insignificantes en la salida de la red. Este supone reducir la dimensionalidad de los patrones de entrada al detectar aquellas componentes de entrada que son innecesarias. Construcción de una red neuronal de tamaño óptimo: Procedimientos de poda El método OBD (optimal brain damage), de lesión cerebral óptima, ptima propuesto por Lecun, Denker y Solla (1990), trata de identificar aquellos pesos sinápticos que pueden ser podados examinando las derivadas segundas de la función de error contenidas en la matriz Hessiana. La variación que produce en el error cuadrático medio una pequeña perturbación ∆wij en el peso wij se aproxima por ∂E 1 ∂2E ∆E = ∆wij + ( 2 )(∆wij ) 2 ∂wij 2 ∂wij Cuando la red finaliza el entrenamiento en un mínimo local de E, entonces ∂E/∂wij ≈0, y así 1 ∂2E ∆E ≈ ( 2 )(∆wij ) 2 2 ∂wij Construcción de una red neuronal de tamaño óptimo: Procedimientos de poda Como la poda de una conexión supone pasar su peso sináptico del valor wij al valor 0, es decir, ocurre cuando ∆wij = −wij, entonces la condición para realizar la poda de dicha conexión es que el cambio en el error resultantes sea insignificante, es decir, que la cantidad 1 ∂2E ∆E ≈ ( 2 )( wij ) 2 2 ∂wij sea suficientemente pequeña. El algoritmo de Levenberg-Marquardt Es un algoritmo alternativo al algoritmo clásico de retropropagación de errores, que posee como virtud principal su velocidad de convergencia. Requiere más uso de memoria ya que el algoritmo realiza una aproximación de la matriz de derivadas segundas (Hessiano) usando las derivadas primeras y con esta información calcula el cambio en los pesos sinápticos. Utilizamos el algoritmo de Levenberg-Marquardt (‘trainlm’) y una función de salida lineal para aproximar una función continua. Pequeña guía para la implementación de una red neuronal • Pre-procesamiento de datos (ej. rango [-1,1] ó [1,1] ó media cero y varianza unidad) (reducción del número de entradas, ej.: PCA) • Elección de conjuntos de entrenamiento y prueba. • Diseño de la red inicial (número de capas ocultas, número de neuronas, parámetros iniciales: pesos iniciales, tasa de aprendizaje, momento, algoritmo de aprendizaje). • Análisis del comportamiento del error. • Pruebas con diferentes arquitecturas y/o parámetros. Poda de conexiones y re-entrenamiento. • Análisis e interpretación de resultados El algoritmo de retropropagación de errores • Es un método de aprendizaje supervisado de redes neuronales basado en el descenso por el gradiente que sirve para tareas de clasificación y/o predicción y también para aproximación de funciones. • Es un método versátil y potente. Ha sido aplicado con éxito en las más diversas tareas. • No hay teorema de convergencia hacia el mínimo global de la función error por lo que puede quedar atrapado en mínimos locales. La práctica ha demostrado que el algoritmo es muy eficiente. • No se limita a memorizar los datos, sino que es capaz de generalizar (interpolar y extrapolar). • A fin de mejorar la capacidad de generalización existen diferentes alternativas propuestas (momento, algoritmo de Levenberg-Marquardt, métodos de poda, etc.). • Elegir la arquitectura óptima y los parámetros adecuados es un problema complejo: suele utilizarse el método de prueba y error.