Escuela T´ ecnica Superior de Ingenieros Inform´ aticos
Universidad Polit´ ecnica de Madrid
Entrenamiento Evolutivo de Autoencoders
Trabajo Fin de M´ aster
M´ aster Universitario en Inteligencia Artificial
AUTOR: Dario Goikoetxea Pardo TUTOR/ES: Daniel Manrique Gamo Emilio Serrano Fern´ andez
2018
1
AGRADECIMIENTOS
A mi padre, por ser el t´ecnico inform´atico del laboratorio casero, y a mi abuela, por aguantar el calor generado. A Dani y Emilio, por su inestimable ayuda con mi terrible redacci´on y las referencias. El resto, ya sab´eis quienes sois. Gracias a todos.
2
RESUMEN
Pese a que la retropropagaci´on de gradiente es el principal algoritmo de aprendi- zaje utilizado en Deep Learning, tiene limitaciones como la tendencia a cero de los pesos durante el entrenamiento, el sobre-ajuste o su elevado coste computacional.
Estos problemas se tratan con soluciones como el entrenamiento por lotes, el uso de funciones de activaci´on que no saturan para valores elevados, como la ReLU o m´eto- dos de inicializaci´on heur´ısticos. En trabajos previos se ha estudiado la posibilidad de utilizar algoritmos gen´eticos para llevar a cabo el proceso de entrenamiento con mejores resultados y menor coste que utilizando la retropropagaci´on de gradiente, aunque no se han probado en redes neuronales de tama˜no medio o mayores. El ob- jetivo del presente trabajo es implementar un algoritmo gen´etico con codificaci´on real para el entrenamiento evolutivo de autoencoders utilizando el operador de cru- ce MMX. As´ı mismo, se evalua su comportamiento en redes con m´as de un mill´on de conexiones. Para ello, se proponen dos aportaciones nuevas: realizar un entrena- miento evolutivo por lotes para reducir el coste de cada iteraci´on del algoritmo sin afectar a la calidad de las soluciones, y la utilizaci´on de los m´etodos de inicializaci´on heur´ısticos propuestos por Glorot y He.
3
SUMMARY
Backpropagation is the most used training algorithm in Deep Learning, however, it has limitations, such as vanishing or exploding gradient, overfitting and its high computational cost. Those problems are addressed with solutions like batch training, the usage of activations functions that don’t saturate on high values, like ReLU, or heuristic initialization methods. Genetic Algorithms using the crossover operator MMX have been used to train neural networks with better results and lower compu- tational costs than using gradient backpropagation, however, those methods have not been tested on medium-sized or big neural networks. The goal of this work is to implement a real-coded genetic algorithm to train autoencoders using the MMX crossover operator and evaluate its behavior in neural networks with more than one million connections. In order to do that, two contributions are proposed: batch evolutionary training to reduce the computational cost per generation without affec- ting the quality of the solutions and the usage of the heuristic initialization methods proposed by Glorot and He.
4 ´Indice
´Indice
I Introducci´on 1
II Computaci´on Evolutiva 3
1. Codificaci´on . . . 4
2. Algoritmos Gen´eticos . . . 5
2.1. Evaluaci´on . . . 6
2.2. Condici´on de parada . . . 6
2.2.1. Convergencia . . . 6
2.3. Selecci´on . . . 6
2.4. Cruce . . . 7
2.5. Mutaci´on . . . 8
2.6. Reemplazo . . . 8
3. Operadores de cruce para individuos con codificaci´on real . . . 8
3.1. Blend Crossover operator (BLX) . . . 8
3.2. Blend alpha (BLX–α) . . . . 9
3.3. Operador de Cruce Morfol´ogico (MMX) . . . 10
3.3.1. Calculo de la diversidad de poblaci´on . . . 10
3.3.2. Intervalo de cruce . . . 11
III Redes de Neuronas Artificiales 12 4. Estructura de las Redes de Neuronas Artificiales . . . 12
5. Aprendizaje . . . 13
6. Funcionamiento de las Redes de Neuronas Artificiales . . . 13
6.1. Funciones de Activaci´on . . . 14
6.1.1. Lineal . . . 14
6.1.2. Tangente hiperb´olica . . . 15
6.1.3. Log´ıstica . . . 15
6.1.4. Rectified Linear Unit - ReLU . . . 15
6.1.5. SoftMax . . . 16
6.2. Algoritmos de entrenamiento . . . 16
6.2.1. Retropropagaci´on de gradiente . . . 16
6.3. M´etodos de inicializaci´on . . . 17
6.3.1. Inicializaci´on Xavier - Glorot . . . 18
6.3.2. Inicializaci´on He . . . 18
6.4. Autoencoders . . . 18
7. Limitaciones de la retropropagaci´on del gradiente en redes de neuro- nas profundas . . . 20
7.1. Problema de la tendencia a cero o infinito del gradiente . . . 20
7.2. Sobre-ajuste . . . 20
7.3. Elevado coste computacional . . . 22
´Indice de figuras 5
8. Soluciones . . . 22
8.1. Retropropagaci´on de gradiente con factor momento . . . 22
8.2. Entrenamiento por lotes . . . 23
8.3. Dropout y Dropconnect . . . 24
8.4. Pretraining . . . 25
9. Entrenamiento de redes neuronales mediante algoritmos gen´eticos . . 26
IV Planteamiento 28 V Soluci´on propuesta 29 10. Modelo B´asico . . . 29
11. Entrenamiento por Lotes . . . 30
12. Inicializaci´on heur´ıstica . . . 31
VI Resultados 32 13. Experimentos . . . 32
13.1. Coste computacional . . . 32
14. Conjunto de Datos . . . 33
14.1. Experimento 1 . . . 33
14.1.1. Resultados . . . 34
14.2. Experimento 2 . . . 39
14.2.1. Resultados . . . 39
14.3. Experimento 3 . . . 40
14.3.1. Resultados . . . 42
VII Conclusiones y l´ıneas futuras 43
´Indice de figuras
1. Esquema gen´erico de los Algoritmos Evolutivos. . . 32. Esquema SSGA con operadores b´asicos. . . 5
3. M´etodo de la ruleta. [Font et al., 2009b] . . . 7
4. Funci´on ϕ de MMX. [Barrios et al., 2003] . . . 11
5. Red Neuronal Completamente Conectada Hacia Adelante (FCFFNN). 13 6. Gr´aficas de las funciones de activaci´on m´as utilizadas. . . 15
7. Autoencoder. . . 19
8. Codificador y Decodificador obtenidos a partir del autoencoder de la Figura 7. . . 19
9. A la izquierda, la red neuronal, a la derecha la red tras aplicar Dro- pout. [Hinton et al., 2014] . . . 24
6 ´Indice de cuadros
10. A la izquierda, los pesos durante la fase de entrenamiento, a la derecha
durante la fase de pruebas. [Hinton et al., 2014] . . . 24
11. Redes neuronales entrenadas y su cromosoma equivalente. [Barrios et al., 2003] . . . 27
12. Evoluci´on del entrenamiento mediante BP. . . 35
13. Evoluci´on del entrenamiento mediante BPM. . . 35
14. Evoluci´on del entrenamiento mediante BPM por lotes. . . 37
15. Evoluci´on del entrenamiento mediante BPM por lotes con inicializa- ci´on heur´ıstica. . . 37
16. Entrenamiento evolutivo funci´on de activaci´on sigmoide. . . 38
17. Sobre-ajuste del entrenamiento evolutivo. . . 38
18. Entrenamiento evolutivo por lotes funci´on de activaci´on sigmoide. . . 41
19. Sobre-ajuste del entrenamiento evolutivo por lotes funci´on de activa- ci´on sigmoide. . . 41
´Indice de cuadros
1. Error cuadr´atico medio de distintos m´etodos de entrenamiento de redes neuronales para el autoencoder del experimento 1. . . 362. Coste de distintos m´etodos de entrenamiento de redes neuronales para el autoencoder del experimento 1. . . 36
3. Comparativa del error entre los distintos algoritmos gen´eticos del ex- perimento. . . 40
4. Coste de distintos m´etodos de entrenamiento gen´eticos. . . 40
1
Parte I. Introducci´ on
La cantidad de informaci´on producida por el ser humano diariamente excede con mucho nuestras capacidades cognitivas para procesarla manualmente. Los m´etodos de aprendizaje autom´atico buscan extraer patrones de conocimiento a partir de los datos. El ´ambito de aplicaci´on del aprendizaje autom´atico va desde el an´alisis automatizado de fraude fiscal hasta el an´alisis de opini´on pol´ıtica en redes sociales.
El Deep Learning, uno de los campos que actualmente goza de mayor atenci´on dentro del aprendizaje autom´atico, surgi´o en 2006 gracias a los trabajos de Hinton, LeCun y Bengio [LeCun et al., 2015]. El algoritmo de retropropagaci´on de gradiente es el m´etodo de entrenamiento m´as utilizado en redes neuronales profundas. No obstante, la retropropagaci´on del gradiente presenta una serie de limitaciones que dificultan el entrenamiento cuando se trabaja con redes neuronales profundas [Glorot and Bengio, 2010, Bengio et al., 1994]. Algunas de estas limitaciones son: el problema de tendencia a cero de los pesos de las conexiones [Pascanu et al., 2013], el sobre- ajuste [Geman et al., 1992], que se produce cuando la red neuronal proporciona resultados mejores para el conjunto de vectores de entrenamiento que para el de pruebas o el elevado coste computacional del algoritmo.
Algunas de las soluciones existentes para las limitaciones son: las funciones de activaci´on ReLU [Glorot et al., 2011], cuya derivada siempre vale 1 para valores positivos; el entrenamiento por lotes, que reduce el sobre-ajuste y el coste compu- tacional del entrenamiento; el uso de m´etodos de inicializaci´on heur´ısticos [Glorot and Bengio, 2010, He et al., 2015]; los algorimtos Dropout [Hinton et al., 2014]
y Dropconnect [Le Cun et al., 2013], dise˜nados para reducir el sobreajuste, entre otras. A su vez, las soluciones presentan sus propias limitaciones, como la ReLU, que en algunos escenarios toma valores que llevan a la muerte de algunas neuronas.
Se denomina muerte de una neurona a la situaci´on en la que los pesos de las cone- xiones entrantes de una neurona toman valores tales que la neurona nunca vuelve a activarse durante el entrenamiento (su salida toma siempre valor cero).
Los algoritmos gen´eticos son una rama de la computaci´on evolutiva, que estu- dia algoritmos basados en la evoluci´on natural, cuyos elementos distintivos son la codificaci´on de individuos como vectores de genes y el uso del cruce como principal operador. En el presente trabajo se estudia un m´etodo alternativo de entrenamiento de redes neuronales mediante algoritmos gen´eticos con codificaci´on real utilizando el operador de cruce MMX [Rolan´ıa, 1992]. Se ha demostrado que el entrenamiento gen´etico obtiene mejores resultados con menor coste computacional en redes pe- que˜nas [Barrios et al., 2003]. El objetivo del presente trabajo es aplicar el algoritmo a Autoencoders [LeCun, 1987] de tama˜no medio, con m´as de un mill´on de conexio- nes. Adicionalmente se proponen dos nuevas aportaciones. La primera consiste en una adaptaci´on del entrenamiento por lotes a los algoritmos gen´eticos cuyo objetivo es reducir el coste computacional de evaluar los individuos sin empeorar la calidad de los resultados. La segunda consiste en la aplicaci´on de los m´etodos de inicializaci´on heur´ısticos de Xavier y He [Glorot and Bengio, 2010, He et al., 2015], t´ıpicamente empleados en retropropagaci´on de gradiente, al algoritmo gen´etico.
2
La arquitectura escogida es el Autoencoder debido a su versatilidad, y a la natu- raleza no supervisada del entrenamiento que requiere. Los autoencoders se emplean t´ıpicamente para la reducci´on de dimensionalidad de datos [Hinton and Salakhut- dinov, 2006], la extracci´on de caracter´ısticas [LeCun, 1987] o en aprendizaje por refuerzo [Lange and Riedmiller, 2010], entre otros [Goodfellow et al., 2016].
El presente documento se organiza en siete cap´ıtulos. El primer cap´ıtulo co- rresponde a la presente introducci´on. El segundo cap´ıtulo describe las t´ecnicas de computaci´on evolutiva y algoritmos gen´eticos con codificaci´on real utilizadas en la soluci´on. El tercer cap´ıtulo describe las redes neuronas artificiales y sus m´etodos de entrenamiento m´as comunes. Asimismo se exponen las soluciones actuales a las limitaciones del algoritmo de retropropagaci´on de gradiente en redes neuronales profundas y se presenta el algoritmo gen´etico de entrenamiento de redes neuronales original.
En el cuarto cap´ıtulo se plantea el problema, as´ı como los objetivos e hip´otesis de trabajo. El quinto cap´ıtulo describe la soluci´on propuesta y las nuevas aportaciones de este trabajo. El sexto cap´ıtulo contiene la descripci´on de los experimentos y el an´alisis de los resultados. En el s´eptimo cap´ıtulo se presentan las conclusiones y las l´ıneas futuras de investigaci´on.
3
Parte II. Computaci´ on Evolutiva
La computaci´on evolutiva (CE) estudia algoritmos basados en la evoluci´on na- tural. Los primeros estudios en el campo se remontan a los a˜nos 60, aunque no fue hasta 1991 que se acu˜n´o oficialmente el t´ermino computaci´on evolutiva [B¨ack et al., 1997]. Estos algoritmos se denominan algoritmos evolutivos (AE).
Los algoritmos evolutivos utilizan m´etodos basados en los mecanismos evolutivos naturales, como la reproducci´on, la mutaci´on y la selecci´on natural. Existen tres aproximaciones principales para emular dichos mecanismos: los algoritmos gen´eticos, las estrategias evolutivas y la programaci´on gen´etica [B¨ack et al., 1997].
Fig. 1: Esquema gen´erico de los Algoritmos Evolutivos.
La Figura 1 describe el funcionamiento de un algoritmo evolutivo gen´erico. Ini- cialmente se crea una poblaci´on del tama˜no deseado compuesta por individuos que codifican soluciones muestreadas aleatoriamente dentro del espacio de b´usqueda.
Cada individuo codifica una posible soluci´on al problema, y los operadores trabajan sobre estos individuos, no sobre las soluciones. El proceso de evaluaci´on consiste en decodificar el individuo para obtener la soluci´on que representa y evaluar la calidad de la misma.
Si alguna de las soluciones cumple con los criterios especificados el algoritmo termina y devuelve las mejores soluciones. En caso contrario, se inicia un proceso iterativo que consiste en aplicar operadores gen´eticos basados en los mecanismos evolutivos para obtener nuevas soluciones que reemplacen a las antiguas.
La funci´on evaluaci´on simula el desempe˜no de tareas importantes para su super- vivencia por parte del organismo. A diferencia de en la naturaleza, basta con ejecutar la funci´on de evaluaci´on una ´unica vez para cada nuevo individuo, salvo que la fun- ci´on de evaluaci´on dependa de par´ametros externos (no codificados en el individuo) cambiantes durante el paso de las generaciones, aunque esto no es habitual.
El operador de reemplazo simula la competici´on por los recursos que tiene lugar en la naturaleza. Debido a que el tama˜no de la poblaci´on es constante, lo cual simula un medio con recursos finitos, los individuos deben competir entre s´ı por
4 1 Codificaci´on
la supervivencia. Existen diversas estrategias de reemplazo, aunque el denominador com´un es dar mayor probabilidad de supervivencia a individuos mejor adaptados.
Los nuevos individuos, que se eval´uan y se introducen en la poblaci´on reemplazan a los peores individuos. Algunos operadores de reemplazo enfrentan a los individuos existentes con los nuevos, mientras que otros garantizan la introducci´on de los nuevos individuos. Esta estrategia favorece la diversidad gen´etica sin perjudicar demasiado a los resultados, puesto que si se introduce en la poblaci´on un nuevo individuo con un grado de adaptaci´on muy bajo ´este tendr´a probabilidad m´as alta de ser eliminado en la siguiente generaci´on.
Posteriormente se verifican las condiciones de parada. Si se cumplen, el algoritmo devuelve los mejores resultados, en caso contrario contin´ua el bucle. El comporta- miento esperado del algoritmo es que la calidad media de las soluciones encontradas mejore en cada iteraci´on hasta converger en el ´optimo o hasta que se encuentre la soluci´on o se cumpla alguna de las condiciones de parada destinadas a controlar el tiempo de ejecuci´on.
Las condiciones de parada m´as comunes son que el grado de adaptaci´on tome un valor dentro de un determinado rango, que se haya producido la convergencia de la poblaci´on o que haya transcurrido un determinado n´umero de generaciones, ya sea total o sin mostrar mejoras en las soluciones.
La evoluci´on es un proceso de optimizaci´on [Mayr, 1988], por lo que el dominio natural de la computaci´on evolutiva es la resoluci´on de problemas de optimizaci´on para los que no existen algoritmos espec´ıficos, con la peculiaridad de utilizar pobla- ciones con m´ultiples soluciones [B¨ack et al., 1997].
1. Codificaci´ on
El conjunto de genes (tambi´en llamado cromosoma) que componen un indivi- duo se denomina genotipo, y la soluci´on que representan fenotipo. Los m´etodos de codificaci´on tradicionales utilizan una representaci´on binaria, aunque actualmente existen m´etodos de codificaci´on con n´umeros reales. El m´etodo de codificaci´on utili- zado depende del problema a resolver, aunque lo ideal es utilizar funciones biyectivas siempre que sea posible.
El problema m´as grave de una funci´on de codificaci´on inapropiada es la existen- cia de soluciones no codificables, que puede ocasionar que el algoritmo no encuentre la soluci´on apropiada. El siguiente problema en orden de gravedad es la existencia de individuos que codifiquen soluciones no v´alidas. Este problema puede mitigarse a˜nadiendo una penalizaci´on a los individuos en la funci´on de evaluaci´on. Otro pro- blema es que distintos individuos representen la misma soluci´on. Esto aumenta el espacio de b´usqueda, aunque esto no tiene por qu´e ser algo negativo si las soluciones repetidas son relativamente buenas.
5
Fig. 2: Esquema SSGA con operadores b´asicos.
2. Algoritmos Gen´ eticos
Los algoritmos gen´eticos (AG) son una rama de la computaci´on evolutiva cuyos elementos distintivos son la codificaci´on de individuos como vectores de genes y el uso del cruce como principal operador.
La figura 2 muestra el esquema de un algoritmo gen´etico que hace uso de los operadores gen´eticos est´andar: selecci´on, cruce, mutaci´on y reemplazo.
La primera fase del algoritmo, denominada inicializaci´on de poblaci´on, consiste en generar una poblaci´on inicial de individuos. Normalmente la inicializaci´on es aleatoria [B¨ack et al., 1997, Spears et al., 1993], aunque existen m´etodos inteligentes que normalmente suelen ser espec´ıficos del problema.
La segunda fase consiste en evaluar la poblaci´on y determinar si alg´un individuo cumple alguna de las condiciones de parada. Si la condici´on se cumple el algoritmo finaliza, en caso contrario comienza el bucle de operadores gen´eticos hasta que se cumple una condici´on de parada. A cada iteraci´on del bucle se le denomina gene- raci´on. Tras cumplirse la condici´on de parada, el algoritmo devuelve las mejores soluciones.
La selecci´on emula al proceso de emparejamiento, mediante el cual los individuos compiten entre ellos por reproducirse. Al igual que en la naturaleza, los individuos mejor adaptados tienen mayor probabilidad de reproducirse. El cruce simula la re- producci´on. Los operadores de cruce combinan el genoma de varios progenitores para producir nuevos individuos. La mutaci´on pretende introducir peque˜nos cam- bios aleatorios en el genoma con la intenci´on de introducir diversidad en el acervo gen´etico. Al igual que su an´alogo en la naturaleza, sus resultados son impredecibles.
El algoritmo gen´etico de la Figura 2 es un Steady State Genetic Algorithm (SS- GA). Esta variaci´on se caracteriza por realizar un ´unico cruce entre n padres en cada generaci´on y aplicar el resto de operadores sobre la descendencia generada, por lo que los operadores no modifican la poblaci´on de generaciones anteriores, excepto
6 2 Algoritmos Gen´eticos
en los reemplazos [Syswerda, 1991]. Los descendientes se introducen a la poblaci´on en cada iteraci´on, por lo que nunca se produce un reemplazo de toda la poblaci´on simult´aneamente.
2.1. Evaluaci´ on
La funci´on de evaluaci´on (o funci´on fitness) mide la calidad (o grado de adapta- ci´on) del fenotipo del individuo. La funci´on de evaluaci´on descodifica el genotipo del individuo para obtener el fenotipo y aplica un algoritmo o una funci´on para obtener el grado de adaptaci´on del individuo. El objetivo del algoritmo gen´etico es encontrar un individuo cuyo grado de adaptaci´on sea m´ınimo (o m´aximo).
2.2. Condici´ on de parada
La condici´on de parada determina el fin del bucle principal del algoritmo evo- lutivo. La condici´on de parada principal detiene el algoritmo cuando el grado de adaptaci´on del mejor individuo toma un valor dentro del rango deseado. Esta condi- ci´on de parada no garantiza la finalizaci´on del algoritmo, pues ´este puede converger prematuramente y estancarse en un ´optimo local, por lo que es conveniente medir la convergencia de la poblaci´on y detener el algoritmo si converge prematuramente.
Otro problema t´ıpico es el tiempo de ejecuci´on, por lo que tambi´en puede introdu- cirse un n´umero m´aximo de generaciones totales o de generaciones sin mejorar la soluci´on encontrada.
2.2.1. Convergencia
Un gen con codificaci´on finita converge cuando al menos el 95 % de los individuos de la poblaci´on comparte el valor de dicho gen [De Jong, 1975]. En el caso de individuos con codificaci´on real, se da cuando la variaci´on en los valores del gen a trav´es de toda la poblaci´on es menor del 5 %. [Font et al., 2009b]
2.3. Selecci´ on
Tambi´en llamado operador de reproducci´on. El operador de selecci´on escoge los individuos que se utilizar´an en el operador de cruce, tambi´en denominados padres y los almacena en el matting pool. Existen numerosos operadores de selecci´on, aun- que normalmente son estoc´asticos y asignan mayor probabilidad a los individuos con mejor grado de adaptaci´on. Los operadores pueden permitir seleccionar a un individuo varias veces.
El n´umero de padres necesarios para un cruce satisfactorio puede variar depen- diendo del operador de cruce utilizado. En el m´etodo de la selecci´on proporcional a la funci´on objetivo [Barrios, 1991] la probabilidad de selecci´on es directamente proporcional al grado de adaptaci´on, aunque este m´etodo puede asignar demasiado peso a individuos cuyo grado de adaptaci´on sobresale de la media ocasionando sesgo.
2.4 Cruce 7
Fig. 3: M´etodo de la ruleta. [Font et al., 2009b]
El muestreo universal estoc´astico o m´etodo de la ruleta [Baker, 1987] utiliza un c´ırculo dividido en sectores de tama˜no proporcional al grado de adaptaci´on de la funci´on objetivo. Los individuos se seleccionan utilizando marcadores equidistantes colocando el primero aleatoriamente. La Figura 3 ilustra el proceso de selecci´on de 4 padres en una poblaci´on de 4 individuos.
El orden de los individuos puede producir sesgo en la selecci´on, por lo que es conveniente colocarlos de forma aleatoria para reducirlo.
El m´etodo de selecci´on por torneo [Brindle, 1981] selecciona al azar un n´ume- ro predeterminado de individuos, y se realiza una competici´on para escoger k in- dividuos. Se repite el proceso hasta obtener el n´umero de padres deseado. Si la competici´on selecciona los k individuos de manera determinista se denomina torneo determinista, mientras que si lo hace de forma estoc´astica se denomina torneo pro- babil´ıstico. En los torneos probabil´ısticos, el mejor individuo tiene una probabilidad p de ser escogido.
2.4. Cruce
El operador de cruce genera nuevos individuos (llamados descendencia) a partir de los padres. Es un operador muy dependiente de la funci´on de codificaci´on. Aun- que existen operadores de cruce dise˜nados ad hoc para un m´etodo de codificaci´on espec´ıfico, en general se distingue entre operadores de cruce con alfabeto finito y ope- radores de cruce con alfabeto real. La descendencia se genera aplicando operaciones aritm´eticas o combinatorias sobre los cromosomas de los padres. Normalmente es un operador explotativo, aunque existen variantes m´as explorativas, como MMX [Barrios et al., 2003].
8 3 Operadores de cruce para individuos con codificaci´on real
2.5. Mutaci´ on
El operador de mutaci´on es un operador explorativo que modifica aleatoriamente genes del cromosoma del individuo. La probabilidad de ocurrencia y el n´umero y naturaleza de las modificaciones dependen del operador utilizado. T´ıpicamente la probabilidad de ocurrencia es baja. Depende del m´etodo de codificaci´on en menor medida que el operador de cruce, salvo si el m´etodo codificaci´on permite codificar individuos no v´alidos, en cuyo caso debe ser tenido en cuenta a la hora de producir nuevos individuos.
2.6. Reemplazo
Introduce la descendencia en la poblaci´on. El n´umero total de individuos de la poblaci´on normalmente no var´ıa, por lo que es necesario eliminar individuos para in- troducir los nuevos. Existen distintos operadores de reemplazo que se diferencian en la estrategia utilizada para seleccionar los individuos a eliminar. Los operadores son similares a los de selecci´on, aunque dan mayor probabilidad a los peores individuos.
Si la introducci´on de individuos se produce antes de la eliminaci´on, los hijos pueden ser eliminados en la misma iteraci´on en la que han sido introducidos.
3. Operadores de cruce para individuos con codificaci´ on real
Los operadores de cruce tradicionales trabajan sobre individuos con codificaci´on binaria, por lo que no son efectivos para codificaci´on real. Esto se debe a que los operadores binarios se limitan a recombinar los genes de los progenitores, por tanto, el ´unico operador capaz de generar nuevos genes es el de mutaci´on, y dada su baja probabilidad de ocurrencia evita que se produzca la convergencia del algoritmo [Font et al., 2009b]
Normalmente los operadores de cruce con codificaci´on real operan gen a gen, por lo que son altamente paralelizables. A continuaci´on se explican los m´as utilizados.
3.1. Blend Crossover operator (BLX)
El operador BLX [Wright, 1991] act´ua sobre dos padres gen a gen. Toma los genes en la posici´on i de cada padre (ai ,bi) y obtiene los genes en la posici´on i de los hijos (ci ,di). Las formulas utilizadas son las siguientes.
I = [ai, bi], con ai ≤ bi (1)
ci ∈ I (2)
di = ai+ bi− ci (3)
3.2 Blend alpha (BLX–α) 9
donde I es el int´ervalo de cruce, ciel valor elegido aleatoriamente dentro del intervalo I y di el valor del gen calculado a partir del primero. La ecuaci´on (3) describe la selecci´on de un punto di sim´etrico a ci con respecto al centro del intervalo I.
Se denomina intervalo de cruce I a los valores comprendidos entre los valores de los genes de los progenitores, [ai, bi]. Se obtiene el gen del primer hijo de forma aleatoria dentro del intervalo de cruce. El valor del gen del segundo hijo es sim´etrico al primero con respecto al centro del intervalo de cruce. Esto implica que el algoritmo es totalmente explotativo. Si se desea incluir exploraci´on debe hacerse utilizando el operador de mutaci´on. El m´etodo es altamente dependiente de una buena funci´on de inicializaci´on que distribuya la poblaci´on inicial por todo el espacio de b´usqueda.
3.2. Blend alpha (BLX–α)
El operador BLX–α [Eshelman and Schaffer, 1993] est´a basado en BLX. La meto- dolog´ıa para crear la descendencia es similar, aunque se a˜nade un factor explorativo al ensanchar el intervalo de cruce.
α∈ [0, 1] (4)
donde α es el factor de exploraci´on / explotaci´on. La distancia entre ai y bi, D, es el valor absoluto del resultado de restar el valor de un gen al otro gen:
D =|ai− bi| (5)
El producto de α y D se utiliza para ensanchar el intervalo I de BLX en ambos sentidos:
I = [ai− αD, bi+ αD], con ai ≤ bi (6) El gen del primer hijo se calcula de la misma forma que en BLX:
ci ∈ I (7)
Si el rango de valores de los genes es [−∞, ∞] el gen del segundo hijo se calcula utilizando la misma ecuaci´on que BLX,
di = ai+ bi− ci (8)
debido a que αD− αD = 0.
Si el rango de valores no es infinito, adem´as de tenerlo en cuenta a la hora de calcular el intervalo de cruce I para garantizar que est´a dentro del rango de valores permitidos.
I = [min(ai− αD, Linf), max(bi+ αD, Lsup)], con ai ≤ bi (9) di = min(ai− αD, Linf) + max(bi+ αD, Lsup)− ci, con ai ≤ bi (10) donde Liinf es el l´ımite inferior del rango I y Lisup el l´ımite superior.
10 3 Operadores de cruce para individuos con codificaci´on real
Cuanto mayor es la diversidad gen´etica mayores son D y el intervalo de cruce, por lo que evita la convergencia prematura. El par´ametro α permite balancear entre explotaci´on y exploraci´on, aunque es est´atico, por lo que no puede adaptarse en funci´on del estado actual de la poblaci´on.
3.3. Operador de Cruce Morfol´ ogico (MMX)
El operador MMX [Barrios et al., 2003] est´a basado en BLX–α. La metodo- log´ıa es similar a ´este, aunque el int´ervalo de cruce se calcula mediante el gradiente morfol´ogico, t´ıpicamente usado en procesamiento de im´agenes para detectar bor- des. Permite un n´umero arbitrario de padres, aunque el n´umero recomendado por el autor es 7.
I = [min(fi) + ϕ(gi), max(fi)− ϕ(gi)] (11)
ci ∈ I (12)
di = min(fi) + max(fi)− ci (13) Donde fi es la columna de valores de los genes en la posici´on i de todos los proge- nitores, gi es la medida de diversidad del gen en la posici´on i entre los progenitores y ϕ es la funci´on de exploraci´on / explotaci´on. Esta funci´on determina el nivel de exploraci´on y explotaci´on en cada momento en funci´on de la diversidad gen´etica.
max() y min() son las funciones m´aximo y m´ınimo, respectivamente. Si el rango de b´usqueda es limitado, hay que tenerlo en cuenta y modificar el c´alculo del intervalo y del gen del segundo hijo:
I = [min(min(fi) + ϕ(gi), Linf), max(max(fi)− ϕ(gi), Lsup)] (14) di = min(min(fi) + ϕ(gi), Linf) + max(max(fi)− ϕ(gi), Lsup)− ci (15) donde Linf y Lsup son los l´ımites inferior y superior del rango, respectivamente
3.3.1. Calculo de la diversidad de poblaci´on
La medida ideal de diversidad de poblaci´on es la desviaci´on t´ıpica, aunque tiene un alto coste computacional. Se utiliza como alternativa el gradiente morfol´ogico, empleado en la detecci´on de bordes de im´agenes.
gi = max(fi)− min(fi) (16)
donde max(fi) es el valor m´aximo de la columna de genes fi y min(fi) el m´ınimo.
Si gi es pr´oximo a cero la diversidad gen´etica es baja.
3.3 Operador de Cruce Morfol´ogico (MMX) 11
Fig. 4: Funci´on ϕ de MMX. [Barrios et al., 2003]
3.3.2. Intervalo de cruce
El intervalo de cruce depende de los valores m´aximo y m´ınimo de cada gen, de la diversidad gen´etica y de los par´ametros de la funci´on de exploraci´on.
I = [min(fi) + ϕ(gi), max(fi)− ϕ(gi)] (17) La Figura 4 muestra la funci´on ϕ. La funci´on tiene 4 par´ametros predefinidos, a, b, c y d y se describe con la siguiente expresi´on anal´ıtica.
ϕ(gi) =
⎧⎨
⎩
a + gib−ac si gi < c dgi− c
1− c si gi ≥ c (18)
12 4 Estructura de las Redes de Neuronas Artificiales
Parte III. Redes de Neuronas Artificiales
Las redes de neuronas artificiales (RNA) son un modelo computacional inspirado en la estructura neuronal del cerebro. El modelo consiste en un conjunto de unidades de c´omputo simples, llamadas neuronas artificiales, conectadas entre ellas mediante conexiones. No debe considerarse a las redes neuronales como una imitaci´on fiel de la cognici´on de los seres vivos, puesto que no se conoce exactamente c´omo funciona, sino como un mecanismo que intenta aproximar su m´etodo de resolver problemas aplic´andolo a la ingenier´ıa.
El modelo original de neurona fue propuesto en 1943 [McCulloch and Pitts, 1943].
En 1959 se propuso ADALINE (Neurona Adaptativa Lineal), el primer modelo de red de neuronas aplicado a problemas del mundo real [Widrow, 1959]. En 1969 Minsky demuestra en su libro Perceptrons [Minsky and Papert, 1969] las limitaciones de las redes neuronales con una ´unica capa oculta, lo que lleva al declive del campo. Pese a que siguen apareciendo ciertos avances, [Font et al., 2009b] el campo resurge en los 80 gracias a los trabajos de Hopfield [Hopfield, 1982] y especialmente al algoritmo de retropropagaci´on de gradiente [Rumelhart et al., 1986], que es la base del aprendizaje profundo actualmente.
4. Estructura de las Redes de Neuronas Artificiales
La estructura de una red de neuronas se denomina arquitectura y se representa mediante un grafo dirigido. La direcci´on de los arcos representa el flujo de informa- ci´on. Las neuronas que reciben como entrada los datos desde el exterior de la RNA se denominan neuronas de entrada, las neuronas cuya salida env´ıa la informaci´on fuera de la RNA se denominan neuronas de salida.
En funci´on del recorrido que sigue la informaci´on las redes neuronales se clasifican en: alimentadas hacia adelante y recurrentes. Las redes neuronales alimentadas hacia adelante se organizan en capas. Las neuronas de una capa solo pueden tener entradas desde neuronas de capas anteriores y salidas hacia capas posteriores, y no pueden tener conexiones con ninguna neurona de su propia capa. El estado de activaci´on de cada neurona s´olo se calcula una vez, puesto que el sentido de la informaci´on siempre es hacia adelante. Las redes neuronales recurrentes no se organizan en capas, y las neuronas pueden tener conexiones con cualquier neurona de la red y consigo mismas.
Debido a la retroalimentaci´on, el estado de las neuronas cambia constantemente, por lo que la red debe de alcanzar un estado de equilibrio. En el presente trabajo s´olo se utilizan redes neuronales alimentadas hacia adelante.
La figura 5 muestra una red neuronal completamente conectada alimentada hacia adelante (FCFFNN). Esta arquitectura es un caso part´ıcular de red neuronal ali- mentada hacia adelante en la que cada neurona tiene su entrada conectada a todas las neuronas de la capa anterior, y su salida conectada a todas las neuronas de la siguiente capa.
13
Fig. 5: Red Neuronal Completamente Conectada Hacia Adelante (FCFFNN).
5. Aprendizaje
El aprendizaje autom´atico es un campo de la Inteligencia Artificial (IA) que se dedica a la extracci´on autom´atica de patrones relevantes a partir de datos [Shalev- Shwartz and Ben-David, 2014]. Las redes neuronales son un campo del aprendizaje autom´atico. En una red neuronal el aprendizaje consiste en aproximar una funci´on y = f (x) que sea capaz de calcular correctamente el valor de y para vectores x no vistos previamente. Esto se hace ajustando los pesos de las conexiones entre las neuronas utilizando un algoritmo de entrenamiento o aprendizaje.
El aprendizaje supervisado emplea un conjunto de vectores de entrenamiento etiquetado, P = {{p1, l1}, {p2, l2}...{pn, ln}}, donde pi es el vector de datos que se le suministra a la red y li la etiqueta con el resultado esperado. Para entrenar las redes, se calcula alguna m´etrica de distancia o error entre la salida obtenida al eva- luar pi y li, como por ejemplo el error cuadr´atico medio. Para que el aprendizaje se considere supervisado no es necesario que el conjunto de entrenamiento est´e expl´ıci- tamente etiquetado: si se utiliza un algoritmo para verificar los resultados, o incluso la verificaci´on humana, se considera aprendizaje supervisado.
El aprendizaje no supervisado emplea un conjunto de vectores de entrenamiento que no est´a etiquetado. T´ıpicamente empleado para clasificaci´on, donde los elemen- tos se catalogan en funci´on de su distancia a las clases creadas. El autoencoder es una estructura de red neuronal cuyas entradas deben ser iguales a las salidas, por lo que se considera aprendizaje no supervisado: no requiere una etiqueta asociadas a cada vector de entrada.
6. Funcionamiento de las Redes de Neuronas Artificiales
La red neuronal recibe los vectores de entrada por las neuronas de la capa de entrada, y proporcionan los resultados por la capa de salida.
Las neuronas est´an interconectadas por conexiones ponderadas por pesos que
14 6 Funcionamiento de las Redes de Neuronas Artificiales
Algorithm 1 evaluacionF F N N (p) Datos: (p = vector de entrada)
Alimentar la capa de entrada (capa 1) de la RNA con p Calcular la salida de todas las neuronas de la capa de entrada capaActual = 2
mientras queden capas hacer
Calcular neti de todas las neuronas de la capa capaActual Calcular la salida de todas las neuronas de la capa capaActual capaActual = capaActual + 1
fin mientras
return resultado en la capa de salida fin
cada neurona combina en un ´unico valor utilizando la regla de propagaci´on (net).
Normalmente la regla de propagaci´on consiste en la suma ponderada de las entradas de la neurona multiplicadas por los pesos de cada conexi´on:
neti =
j
wijsj (19)
donde neti es el resultado de la regla de propagaci´on de la neurona i, wij es el peso de la conexi´on que va de la neurona j hacia la neurona i y sj el valor de salida de la neurona j de la capa anterior.
La salida de una neurona (si) se calcula aplicando la funci´on de activaci´on F al valor calculado por la regla de propagaci´on:
si = F (neti) (20)
Habitualmente la funci´on de activaci´on de las neuronas de la capa de entrada es la funci´on identidad, su net es la entrada suministrada.
Cada iteraci´on del bucle del algoritmo 1 corresponde al c´alculo de las neuronas de una capa y depende del resultado de la iteraci´on anterior debido a que cada capa necesita las salidas de la capa anterior para calcular las propias, por lo que la evaluaci´on de las neuronas de una misma capa puede hacerse en paralelo sin dependencias de datos.
6.1. Funciones de Activaci´ on
6.1.1. Lineal
La funci´on de activaci´on lineal es una ecuaci´on lineal.
f (x) = mx + b (21)
La funci´on de identidad es un caso particular de ´esta funci´on de activaci´on.
6.1 Funciones de Activaci´on 15
(a) Tangente hiperb´olica. (b) Funci´on log´ıstica. (c) ReLU.
Fig. 6: Gr´aficas de las funciones de activaci´on m´as utilizadas.
f (x) = x (22)
Es habitual utilizar la funci´on identidad en la capa de entrada, aunque tambi´en puede estar presente en las neuronas de la capa de salida. El intervalo de salida es [-∞,∞]. Si dos capas consecutivas utilizan funciones de activaci´on lineales pueden simplificarse en una ´unica capa [Font et al., 2009b]. Debido a ello, este tipo de funciones raramente se utiliza en las capas ocultas, puesto que una red neuronal profunda con un n´umero arbitrario de capas lineales se simplifica.
6.1.2. Tangente hiperb´olica
Es una funci´on de activaci´on continua (Figura 6a) [Fausett et al., 1994]. Su intervalo de salida es [-1,1]. Com´unmente abreviada como tanh.
f (x) = 1− e−2x
1 + e−2x (23)
Esta funci´on es muy utilizada cl´asicamente con el algoritmo de entrenamiento de retropropagaci´on de gradiente.
6.1.3. Log´ıstica
La funci´on de activaci´on log´ıstica o sigmoide es una funci´on continua represen- tada por una curva log´ıstica simple [Fausett et al., 1994] (Figura 6b). Su intervalo de salida [0,1].
f (x) = 1
1 + e−x (24)
Esta funci´on es muy utilizada cl´asicamente con el algoritmo de entrenamiento de retropropagaci´on de gradiente.
6.1.4. Rectified Linear Unit - ReLU
La funci´on ReLU es una funci´on identidad para valores positivos del dominio que devuelve 0 para valores negativos (Figura 6c). Se ha demostrado emp´ıricamente que es capaz de obtener mejores resultados que las log´ısticas y tangentes hiperb´olicas [Glorot et al., 2011].
16 6 Funcionamiento de las Redes de Neuronas Artificiales
f (x) =
x si x > 0
0 si x≤ 0 (25)
Las ReLU reducen la densidad del flujo de informaci´on de la red debido a que todas las neuronas cuyo net sea negativo tienen sus salidas a cero, aunque si se desea una mayor densidad en el flujo de informaci´on de la red puede utilizarse la Leaky ReLU,
f (x) =
x si x > 0
ax si x≤ 0 (26)
T´ıpicamente a = 0,01 6.1.5. SoftMax
A diferencia de la mayor´ıa de funciones, que solo dependen del estado de activa- ci´on de la propia neurona, la funci´on SoftMax depende de los estados de activaci´on de las neuronas de toda la capa. La suma total de todas las salidas de una capa SoftMax es 1, por lo que se utilizan para calcular la probabilidad de pertenencia a una clase en problemas de clasificaci´on.
La funci´on se define mediante la ecuaci´on, f (x) = eneti
netj
enetj
(27)
donde el denominador corresponde a la suma de enetj de todas las neuronas j de la capa y el numerador eneti de la neurona actual i.
6.2. Algoritmos de entrenamiento
Los algoritmos de entrenamiento o aprendizaje suministran a la red neuronal vectores de entrada y reajustan los pesos de las conexiones en funci´on de las salidas de la red. Los m´etodos se dividen en aprendizaje supervisado (SL) si los vectores de entrenamiento est´an etiquetados con la salida correcta, o no supervisados (UL) en caso contrario.
6.2.1. Retropropagaci´on de gradiente
Propuesto por Rumelhart y Mclelland [Rumelhart et al., 1986]. Junto con sus modificaciones, es el algoritmo de entrenamiento m´as utilizado [Font et al., 2009a, Schmidhuber, 2015].
El c´alculo del net y las salidas de todas las neuronas se lleva a cabo mediante las ecuaciones 19 y 20.
El gradiente de la neurona i de la capa de salida para el vector p (δip) se calcula mediante la ecuaci´on
6.3 M´etodos de inicializaci´on 17
Algorithm 2 BP (p)
Datos: (p = vector de entrada)
Calcular net y salidas de todas las neuronas para p
Calcular el gradiente δip de todas las neuronas i de la capa de salida capaActual = numeroCapasRed− 1
mientras capaActual no sea la capa de entrada hacer
Calcular el gradiente δ de todas las neuronas de la capa oculta capaActual capaActual = capaActual− 1
fin mientras
Calcular el incremento de los pesos de todas las conexiones, Δwij Actualizar pesos
fin
δip= (tip− sip)F(netip) (28) donde F es la derivada de la funci´on de activaci´on F y tip la salida esperada de la neurona i para el vector p.
El gradiente de las neuronas de las capas ocultas se calcula mediante la propa- gaci´on hacia atr´as del gradiente de las capas posteriores mediante la ecuaci´on
δip = F(netip)
k
wkiδkp (29)
donde i son las neuronas con conexiones salientes hacia la neurona k El incremento de los pesos Δwij se calcula mediante la ecuaci´on
Δwij = μδipsjp (30)
donde μ es la tasa de aprendizaje.
Existe cierta confusi´on con respecto al t´ermino ´epoca o epoch. Lo m´as habitual es considerar que una ´epoca consiste en la evaluaci´on del conjunto de entrenamiento completo, aunque algunos trabajos hacen referencia a la ´epoca dando a entender que consiste en la evaluaci´on y ajuste de pesos para un ´unico subconjunto de vec- tores, tambi´en llamado lote. En adelante se considerar´a el primer supuesto: una
´
epoca consiste en la evaluaci´on del conjunto de entrenamiento completo y todas las actualizaciones de pesos correspondientes.
6.3. M´ etodos de inicializaci´ on
Al inicio del entrenamiento es necesario inicializar los pesos de las conexiones entre neuronas. El uso de inicializaci´on completamente aleatoria junto con m´etodos de entrenamiento derivados de la retropropagaci´on de gradiente puede causar pro- blemas como la ca´ıda en ´optimos locales, adem´as de ralentizar el entrenamiento. El entrenamiento de una red neuronal es en esencia un problema de optimizaci´on, por
18 6 Funcionamiento de las Redes de Neuronas Artificiales
lo que seleccionar los pesos iniciales pr´oximos al objetivo reduce estos problemas y acorta el tiempo de entrenamiento. El m´etodo de inicializaci´on m´as apropiado depende de la estructura de la red y de las funciones de activaci´on utilizadas.
Si un m´etodo requiere vectores de entrenamiento para calcular los pesos iniciales se denomina m´etodo de pre-entrenamiento, si no los necesita, m´etodo de inicializa- ci´on.
6.3.1. Inicializaci´on Xavier - Glorot
Propuesto por Xavier Glorot en 2010 [Glorot and Bengio, 2010]. Funciona mejor con las funciones de actibaci´on tanh y log´ıstica. Se trata de inicializar los valores de los pesos de cada conexi´on de forma aleatoria utilizando una distribuci´on gaussiana, con media 0 y varianza basada en el n´umero de entradas y salidas de la neurona,
V arianzaXavier = 2
inputs + outputs (31)
donde inputs es el n´umero de conexiones entrantes hacia la neurona y outputs el n´umero de conexiones salientes.
Algunas implementaciones de redes neuronales como Caffe o TensorFlow [Abadi et al., 2015] utilizan funciones ligeramente distintas debido a que en su implementa- ci´on la estructura de datos utilizada para representar una capa solo guarda referencia a los pesos de las conexiones entrantes, por lo que contar el n´umero de conexiones salientes tiene un coste computacional mayor:
V arianzaXavierT F = 1
inputs (32)
6.3.2. Inicializaci´on He
Propuesto en 2015 por He et al. [He et al., 2015]. Funciona mejor con la funci´on de activaci´on ReLU que la inicializaci´on Xavier. Es similar al de Xavier, aunque difiere en el calculo de la varianza:
V arianzaHe = 2
inputs (33)
6.4. Autoencoders
Un autoencoder es una red neuronal cuyos valores de entrada son iguales a los de salida (Figura 7), por lo que emplea aprendizaje no supervisados. [LeCun, 1987, Ballard, 1987, Schmidhuber, 2015]
T´ıpicamente los autoencoders son sim´etricos con respecto a la capa central y se componen de dos partes: Desde la capa de entrada hasta la capa central, ambas incluidas, se denomina codificador, y desde la capa central hasta la capa de salida, decodificador. Esta nomenclatura se debe a que si se divide el autoencoder en dos redes neuronales funcionan como un algoritmo de codificaci´on (Figura 8): la red
6.4 Autoencoders 19
Fig. 7: Autoencoder.
neuronal cuya entrada es la entrada del autoencoder y su salida la capa central act´ua como una funci´on compresi´on de informaci´on, mientras que la red cuya capa de entrada es la capa central del autoencoder y su capa de salida la capa de salida del autoencoder act´ua como una funci´on de descompresi´on. El codificador (Figura 8a) funciona tambi´en como extractor de caracter´ısticas.
(a) Codificador. (b) Decodificador.
Fig. 8: Codificador y Decodificador obtenidos a partir del autoencoder de la Figura 7.
Los autoencoders se emplean t´ıpicamente para la reducci´on de dimensionalidad de datos [Hinton and Salakhutdinov, 2006], la extracci´on de caracter´ısticas [LeCun, 1987] o en aprendizaje por refuerzo [Lange and Riedmiller, 2010], entre otros [Good- fellow et al., 2016].
20 7 Limitaciones de la retropropagaci´on del gradiente en redes de neuronas profundas
7. Limitaciones de la retropropagaci´ on del gradiente en redes de neuronas profundas
Actualmente los algoritmos de entrenamiento m´as ampliamente utilizados son la retropropagaci´on de gradiente y sus derivados. Estos m´etodos est´an presentes en las primeras posiciones en la mayor´ıa de competiciones de aprendizaje profun- do, y fueron la causa del resurgimiento del campo de las redes neuronales [Font et al., 2009b]. Pese a todo ello, causa una serie de limitaciones que dificultan el en- trenamiento, especialmente en sus fases m´as tard´ıas. Normalmente se obtienen los mejores resultados cuando se trata estas limitaciones utilizando enfoques espec´ıficos del problema tratado, aunque existen m´etodos gen´ericos.
7.1. Problema de la tendencia a cero o infinito del gradiente
Introducido por [Bengio et al., 1994] (vanishing or exploding gradient ), es la mayor limitaci´on a la hora de entrenar redes neuronales recurrentes para recono- cer relaciones muy separadas en el tiempo [Pascanu et al., 2013], aunque debido al mismo principio dificultan el aprendizaje en cualquier red neuronal lo suficien- temente profunda que utilice m´etodos de entrenamiento basados en el gradiente.
Las redes recurrentes t´ıpicamente presentan el problema de tendencia a infinito de los pesos durante el proceso de aprendizaje, mientras que en las redes alimentadas hacia adelante los pesos tienden a cero, especialmente cuando se utilizan funciones de activaci´on que saturan en valores peque˜nos.
En redes neuronales profundas alimentadas hacia adelante entrenadas mediante algoritmos basados en la retropropagaci´on de gradiente es posible que en las primeras capas los incrementos en los pesos tiendan a cero. La ecuaci´on para el c´alculo de gradiente de las neuronas de las capas ocultas ilustra el problema:
δip = F(netip)
k
wkiδkp (34)
La funci´on se compone de la derivada de la funci´on de activaci´on de la neurona actual y la suma ponderada de los gradientes de la siguiente capa. En el caso de funciones sigmoides (tanh y log´ıstica) el problema se agrava, puesto que su derivada vale 0 para valores peque˜nos. La funci´on ReLU resuelve este problema, pues su derivada siempre vale 1 para entradas positivas y 0 para negativas. El segundo factor es el responsable de la propagaci´on hacia atr´as del valor de pesos cercanos a cero, por tanto al aumentar el n´umero de capas ocultas los pesos se hacen cada vez m´as peque˜nos.
7.2. Sobre-ajuste
El objetivo del entrenamiento supervisado es aproximar una funci´on y = f (x) a partir de un conjunto de vectores de entrenamiento {(x1, y1), (x2, y2)...(xn, yn)}, donde xi es el vector de datos de entrada de la red e yi la salida esperada. La red
7.2 Sobre-ajuste 21
debe ser capaz de estimar correctamente los valores de y para x no presentes en el conjunto de entrenamiento (generalizaci´on). El sesgo (bias) mide la diferencia entre las predicciones del modelo de entrenamiento y el resultado esperado, es decir, el error de entrenamiento. Un bias alto supone malos resultados para el conjunto de entrenamiento. La varianza mide la diferencia entre el error del conjunto de pruebas y el de entrenamiento. Una varianza elevada contribuye a obtener peores resultados al utilizar la red con vectores de datos no evaluados previamente. Normalmente la varianza se reduce suavizando la funci´on f (x), aunque esto aumenta el sesgo debido a la p´erdida de precisi´on al suavizarla (compromiso varianza/sesgo). [Geman et al., 1992]
V arianza = Errorpruebas− Errorentrenamiento (35)
Sesgo = Errorentrenamiento (36)
El c´alculo de la varianza puede realizarse durante las fases del entrenamiento uti- lizando el error de la red para el conjunto de pruebas, y hacer un c´alculo final utilizando el error del conjunto de validaci´on en su lugar.
Si se desea comparar el rendimiento de la red con el del ser humano, es posible restar el valor del error humano al error de entrenamiento para calcular el sesgo:
Sesgoh = Errorentrenamiento − Errorhumano (37) Seg´un esta definici´on, un sesgo negativo significa que la red neuronal es capaz de clasificar el conjunto de entrenamiento mejor que la media de los seres humanos.
Se dice que una red neuronal est´a sobre-ajustada cuando obtiene resultados sig- nificativamente peores evaluando vectores no vistos anteriormente que evaluando los presentes en el conjunto de entrenamiento. Debido al compromiso varianza/sesgo es dif´ıcil determinar la fuente del error y solucionarlo. Una estrategia habitual para medir el sobre-ajuste en tiempo real durante el entrenamiento consiste en dividir el conjunto de vectores de entrenamiento en tres conjuntos de datos: conjunto de en- trenamiento, conjunto de pruebas y conjunto de validaci´on. Si el conjunto de datos es muy grande la distribuci´on recomendada de vectores es 98 %, 1 %, 1 %, respectiva- mente, mientras que si el conjunto de datos es peque˜no alrededor de 85 %,10 %,5 % para garantizar que los conjunto de pruebas y validaci´on sean representativos.
Durante la fase de entrenamiento se utilizan los datos del conjunto de entrena- miento para calcular el error que se utiliza para ajustar los pesos de la red neuronal.
Cada cierto n´umero de iteraciones se eval´uan las entradas y salidas del conjunto de pruebas y se mide el error medio de la red sin actualizar los pesos. La medida de error obtenida se utiliza como referencia, aunque nunca tiene influencia en el resultado del entrenamiento, por lo que a efectos pr´acticos se puede decir que la red nunca ha visto esos vectores, por lo que pueden seguir utiliz´andose en iteraciones sucesivas. El conjunto de validaci´on s´olo se utiliza cuando se considera que la red est´a completamente entrenada y lista para su uso. Su funci´on es validar que el en- trenamiento ha sido correcto y asegurar que no se ha producido sobre-ajuste para el conjunto de pruebas.
22 8 Soluciones
7.3. Elevado coste computacional
El entrenamiento de redes neuronales conlleva un elevado coste computacional.
Con una implementaci´on eficiente de la red neuronal el coste en memoria de almace- narla y entrenarla no es excesivo. El coste radica en el elevado n´umero de operaciones necesarias para entrenar los pesos de la red.
Este problema se ha tratado cl´asicamente mejorando la capacidad de c´omputo y la eficiencia de la implementaci´on de los sistemas de redes de neuronas. En este campo, el mayor salto en capacidad de c´omputo se produjo mediante la introducci´on de la computaci´on con GPUs. Tambi´en se han utilizando estrategias que reduzcan el n´umero de ´epocas necesario para entrenar la red neuronal, como el entrenamiento por lotes (batch). Algunos m´etodos, como la distorsi´on de los vectores de entrada [Ciresan et al., 2012], permiten utilizar conjuntos de datos de entrenamiento m´as peque˜nos, reduciendo n´umero de operaciones por ´epoca.
8. Soluciones
Pese a las limitaciones vistas anteriormente, la retropropagaci´on de gradiente es el algoritmo de entrenamiento m´as utilizado en deep learning[Font et al., 2009b]. Se han desarrollado numerosos m´etodos destinados a reducir los problemas de tendencia a cero o infinito del gradiente, como la funci´on ReLU, cuya derivada siempre es 0 para valores negativos y 1 para positivos, eliminando el problema que se produc´ıa al utilizar derivadas de funciones que se saturan.
Las funciones de inicializaci´on vistas anteriormente, as´ı como numerosos m´eto- dos de pre-entrenamiento buscan encontrar buenos puntos de partida dentro del espacio de b´usqueda de pesos. Los m´etodos de inicializaci´on de He y Xavier arrojan buenos resultados [Glorot and Bengio, 2010, He et al., 2015] y, aunque aumentan el tiempo de inicializaci´on, este tiempo es despreciable en comparaci´on con el de entrenamiento, puesto que se realiza una ´unica vez al comienzo del algoritmo.
8.1. Retropropagaci´ on de gradiente con factor momento
Es una modificaci´on del algoritmo de retropropagaci´on de gradiente. Se utiliza principalmente con objeto de reducir el tiempo de entrenamiento. El algoritmo es el mismo, aunque a˜nade un factor de inercia o factor momento a la ecuaci´on del c´alculo del incremento de pesos:
Δwij(t) = μδi(t)sj(t) + αΔwij(t− 1) (38) donde Δwij(t) es el incremento de peso, sj(t) la salida de la neurona j para el vector actual, α es el factor momento y Δwij(t− 1) es el anterior incremento de peso.
El algoritmo reduce enormemente el n´umero de iteraciones si el sentido del gra- diente se mantiene. La desventaja de ´este algoritmo es la misma que en todos los algoritmos de b´usqueda con factor de inercia: el posible efecto rebote acrecentado por la inercia. El efecto rebote consiste en la oscilaci´on producida en torno al objeti- vo o a un m´ınimo local. El par´ametro α determina el comportamiento del algoritmo.
8.2 Entrenamiento por lotes 23
Para valores elevados del factor de inercia, si el gradiente se mantiene el incremento de los pesos crece r´apidamente, causando que la funci´on de b´usqueda avance con mayor velocidad hacia el objetivo, permiti´endole escapar con mayor facilidad de
´
optimos locales, aunque una vez pr´oxima al objetivo, es probable que el factor de inercia ocasione que la b´usqueda pase de largo el objetivo. En este caso se produce el efecto rebote, con el coste a˜nadido de amortiguar la inercia acumulada. Si el factor momento es demasiado bajo, la inercia a˜nadida el movimiento no supone una mejora significativa en el tiempo de entrenamiento.
8.2. Entrenamiento por lotes
El entrenamiento por lotes (batch) es una estrategia ampliamente utilizada en aprendizaje profundo. Disminuye el problema del sobre-ajuste, y se producen mejores resultados en menor tiempo. El algoritmo eval´ua un conjunto de n vectores de datos de entrenamiento, llamado lote o batch, calculando los incrementos en los pesos y acumul´andolos sin actualizar los pesos de las conexiones. Actualiza los pesos s´olo cuando ha terminado de evaluar el conjunto completo con la suma de los incrementos de cada peso en cada vector almacenados.
Algorithm 3 BP Lotes(P )
Datos: (T = Conjunto completo de vectores de entrenamiento agrupados en lotes {P1, P2...Pm}, P = Lote de vectores de entrenamiento {p1, p2...pn})
i = 1
mientras i≤ m hacer k = 1
mientras k ≤ n hacer
Calcular net y salidas de todas las neuronas para el vector pk
Calcular el gradiente δip de todas las neuronas i de la capa de salida capaActual = numeroCapasRed− 1
mientras capaActual no sea la capa de entrada hacer
Calcular el gradiente δ de todas las neuronas de la capa oculta capaActual capaActual = capaActual− 1
fin mientras
Calcular el incremento de los pesos de todas las conexiones, Δwij Acumular el incremento
k = k + 1 fin mientras
Actualizar pesos con el incremento acumulado del lote completo i = i + 1
fin mientras fin
Puede utilizarse con cualquier versi´on de la retropropagaci´on de gradiente y apenas aumenta el coste computacional en cada ´epocas a cambio de una notable
24 8 Soluciones
Fig. 9: A la izquierda, la red neuronal, a la derecha la red tras aplicar Dropout.
[Hinton et al., 2014]
Fig. 10: A la izquierda, los pesos durante la fase de entrenamiento, a la derecha durante la fase de pruebas. [Hinton et al., 2014]
mejora en los resultados y una reducci´on en el n´umero total de ´epocas, reduciendo el coste computacional total. Una posible desventaja del m´etodo es que introduce un hiperpar´ametro adicional al algoritmo de entrenamiento, el tama˜no del lote, n, aumentando el tiempo requerido para el ajuste de los mismos.
8.3. Dropout y Dropconnect
Dropout es un algoritmo dise˜nado para reducir el sobre-ajuste. Propuesto en 2013, demostr´o obtener resultados significativamente mejores entrenando con retro- propagaci´on de gradiente dos arquitecturas id´enticas, una con dropout y otra sin
´
el para clasificar MNIST [LeCun and Cortes, 2010] y otros conjuntos de datos de pruebas. [Hinton et al., 2014].
El m´etodo consiste en desactivar temporalmente neuronas de forma aleatoria durante la fase de entrenamiento como se muestra en la Figura (9). Los net de dichas neuronas no se calculan, y las neuronas conectadas a sus salidas no reciben entradas de las neuronas desactivadas. Durante la fase de retropropagaci´on dichas neuronas tampoco est´an activas, por lo que los pesos de sus conexiones entrantes y salientes tampoco se actualizan. Para cada vector evaluado las neuronas desactivadas son diferentes.
8.4 Pretraining 25
Algorithm 4 DropoutBP (p)
Datos: (t = vector de entrenamiento)
Seleccionar aleatoriamente las neuronas a desactivar Calcular net y salidas de las neuronas activas para t
Calcular el gradiente δip de todas las neuronas i de la capa de salida capaActual = numeroCapasRed− 1
mientras capaActual no sea la capa de entrada hacer
Calcular el gradiente δ de todas las neuronas activas de la capa capaActual capaActual = capaActual− 1
fin mientras
Calcular el incremento de los pesos de todas las conexiones activas, Δwij Actualizar pesos de todas las conexiones activas
Reactivar todas las neuronas.
fin
Durante la fase de entrenamiento, se asigna una probabilidad p a cada neurona de mantenerse activada. En ´esta fase el c´alculo del net no var´ıa con respecto al algoritmo normal de retropropagaci´on de gradiente, aunque, como se muestra en la Figura 10, en la fase de pruebas los pesos se multiplican temporalmente por p para mantener la suma total consistente con la suma de red generada con dropout. Los pesos de la red final tambi´en deben multiplicarse por p. Los valores t´ıpicos de p son:
0,5 para las neuronas ocultas y entre 0,75 y 1 para las de entrada [Hinton et al., 2014].
Dropconnect [Le Cun et al., 2013] es una generalizaci´on del algoritmo de dropout.
En esta versi´on se desactivan las conexiones individualmente, en lugar de desactivar neuronas completas. El algoritmo ostenta desde 2013 el r´ecord mundial de clasifica- ci´on de MNIST, con un error del 0.21 %, similar al error humano para ese dataset.
[Le Cun et al., 2013] Si el error humano es igual o mayor al error del conjunto de entrenamiento el sesgo es 0 %. Dado que en este caso la diferencia de errores entre los conjuntos de entrenamiento y test es tambi´en muy reducida, la varianza es tambi´en pr´oxima a 0.
8.4. Pretraining
El objetivo del pre-entrenamiento es es mismo que el de los m´etodos de inicia- lizaci´on inteligentes: proporcionar un buen punto de partida al algoritmo de entre- namiento. Al igual que los m´etodos de inicializaci´on, reducen el tiempo de entrena- miento, reducen el riesgo de ca´ıda en ´optimos locales y ralentizan la tendencia a cero o infinito de los pesos de las conexiones. Todo ello contribuye tambi´en a reducir el sobre-ajuste de la red.
La diferencia con los m´etodos de inicializaci´on es que el pre-entrenamiento ne- cesita vectores de entrenamiento. No es imperativo que ´estos datos sean id´enticos a los que se utilizan en el algoritmo de entrenamiento. Durante el pre-entrenamiento