Comparativa De Tecnologías De Deep Learning
Total Page:16
File Type:pdf, Size:1020Kb
Universidad Carlos III de Madrid Departamento de Informática Proyecto Final de Carrera Comparativa de Tecnologías de Deep Learning Author: Alberto Lozano Benjumea Supervisors: Alejandro Baldominos Gómez Ignacio Navarro Martín Leganés.Septiembre de 2017 Alberto Lozano Benjumea Universidad Carlos III de Madrid Avenida de la Universidad, 30 28911 Leganés, Madrid (Spain) Email: [email protected] “Just because it’s not nice doesn’t mean it’s not miraculous” Terry Pratchett This page has been intentionally left blank. Abstract Este proyecto se localiza en la rama de aprendizaje automático del campo de la in- teligencia artificial. El objetivo del mismo es realizar una comparativa de los diferentes frameworks y bibliotecas existentes en el mercado, a día de la realización del presente documento, sobre aprendizaje profundo. Esta comparativa, pretende compararlos us- ando diferentes métricas y una batería heterogénea de pruebas. Adicionalmente se realizará un detallado estudio del arte indicando las técnicas sobre las que sustentan dichas bibliotecas. Se indicarán con ejemplos cómo usar cada una de estas técnicas, las ventajas e inconvenientes de las mismas y sus relaciones. Keywords: aprendizaje profundo, aprendizaje automático frameworks, comparativa v This page has been intentionally left blank. Agradecimientos Probablemente se podría escribir la mitad del documento con agradecimientos a las personas que han influido en que este documento pueda existir. Podría partir de mi abuelo quién me enseñó la informática y lo que se podía lograr con el Amstrad y de ahí hasta el día de hoy, a familia, compañeros, amigos que te influyen, incluso las personas que influyen negativamente, con los que ves que que camino no debes escoger. Para no extenderlo demasiado si quiero destacar a algunas personas. Literalmente, este documento no existiría sin la ayuda, el apoyo, insistencia, amistad y un largo etcétera de Ignacio Navarro Martín que me lleva demostrando desde hace años lo que significa, o lo poco catalogable, que es la amistad. Es imposible no incluir a Anabel, con la que llevo compartida más de media vida. Durante este tiempo he vivido con ella los mejores momentos de mi vida, siendo el más reciente nuestra boda. Día a día me hace ver que cualquier cosa se puede hacer, me apoya, se ríe conmigo, perdona mis errores y sé, que no hace falta pedirle nada porque siempre esta cuando la necesito. Desde pequeño la informática ha atraído mi atención y mi madre, aún siendo muy pequeño para saber lo que significaba en realidad, siempre me ha ayudado a poder alcanzarlo. Gracias a su sacrificio diario, esfuerzo y ánimos, nunca he visto que pudiera ser algo inalcanzable y no podía faltar porque parte de esta carrera es suya. Por último, también agradecer al resto de mi familia, siempre presentes en mi vida y a mis amigos de la universidad (Lidia, Iván, Pablo, Roberto, ...) que siempre me han apoyado y con los que he reído y compartido muy buenos momentos dentro y fuera de la universidad. vii This page has been intentionally left blank. Contents Contents 1 1 Introducción y Objetivos5 1.1 Contexto y Motivación..............................5 1.2 Objetivos......................................6 1.3 Medios empleados................................7 1.4 Estructura de la Memoria............................7 2 Estado del arte9 2.1 Conceptos básicos.................................9 2.1.1 Aprendizaje Automático.........................9 2.1.2 Reglas de Asociación........................... 13 2.1.3 Redes de Neuronas Biológicas..................... 17 2.1.4 Perceptrón................................. 19 2.1.5 Perceptrón Multicapa.......................... 21 2.1.6 Aprendizaje Profundo.......................... 25 2.1.7 Rectificador................................ 26 2.1.8 Encoder.................................. 27 2.1.9 Restricted Boltzmann Machine..................... 27 2.1.10 Enconders Aplicados........................... 30 2.1.11 Redes de Creencias Profundas DBN.................. 32 2.1.12 Red Neuronal Recurrente - RNR.................... 33 2.1.13 Memorias a Corto-Largo Plazo - LSTM................ 35 1 2 Evolutionary Design of Deep Neural Networks 2.1.14 Backpropagation Through Time - BPTT................ 38 2.1.15 Unidad recurrente cerrada - GRU................... 39 2.1.16 Redes Convolucionales......................... 40 2.2 Bibliotecas de Aprendizaje Automático.................... 43 2.2.1 CPU y GPU................................ 45 2.2.2 Frameworks................................ 45 2.2.3 Librerías de abstracción......................... 46 3 Experimentación 51 3.1 Elección de los Frameworks/bibliotecas.................... 51 3.2 Análisis de la Implementación de cada Biblioteca.............. 52 3.2.1 Keras.................................... 52 3.2.2 PyTorch.................................. 54 3.2.3 Caffe.................................... 55 3.2.4 Deeplearning 4J.............................. 56 3.2.5 TensorFlow................................ 57 3.2.6 Theano................................... 58 3.2.7 Lasagne.................................. 59 3.3 Elección de los Clasificadores.......................... 59 3.4 Elección de los Conjuntos de Entrenamiento................. 60 3.5 Diseño de las pruebas.............................. 60 3.5.1 Métricas a medir............................. 60 3.5.2 Estructura de las pruebas........................ 61 3.6 Pruebas....................................... 62 3.6.1 Definiciones................................ 62 3.7 Resultados..................................... 66 3.7.1 Pytorch................................... 66 3.7.2 Lasagne - Theano............................. 73 3.7.3 Keras.................................... 80 3.7.4 Tensor................................... 88 Contents 3 3.7.5 Deeplearning4J.............................. 95 3.8 Comparativa.................................... 98 4 Presupuesto 99 4.1 Costes........................................ 99 4.2 Planificación.................................... 99 4.3 Presupuesto.................................... 100 5 Conclusiones y líneas futuras 103 5.1 Dificultades encontradas............................. 103 5.2 Conclusiones.................................... 103 5.3 Líneas futuras................................... 104 Appendix A Ejemplos conjuntos de entrenamiento 107 Appendix B Instalación de librerías/framework 109 B.1 Theano....................................... 109 B.2 Lasagne....................................... 110 B.3 TensorFlow.................................... 110 B.3.1 Virtualenv................................. 111 B.3.2 Pip..................................... 112 B.3.3 Docker................................... 112 B.3.4 Anaconda................................. 112 B.4 Keras........................................ 113 B.5 Pytorch....................................... 113 B.6 Caffe........................................ 113 B.7 Deeplearning 4J.................................. 114 Bibliography 115 This page has been intentionally left blank. Chapter 1 Introducción y Objetivos 1.1 Contexto y Motivación Últimamente es cada vez más habitual escuchar el término aprendizaje automático [28] asociado a cualquier campo. Ya no solo en los de tipo técnico como las finanzas [14][19][31], predicciones meteorológicas [25][46][46], biotecnología [2] o la medic- ina [4][47][39], sino en otros más inesperados como la moda [34], deportes [37][18][42] o educación [17][43]. Esta tendencia va en aumento, cada vez más el aprendizaje au- tomático va a influenciar aspectos de la vida. Entendemos aprendizaje automático como la rama de informática especializada en crear técnicas que puedan aprender y mejorar resultados por sí mismas. Recibiendo una información como entrada son capaces de generalizar comportamientos, creando un modelo de salida que será utilizado para realizar predicciones sobre datos futuros. Aunque el aprendizaje automático sea una rama dentro del campo de la inteligencia artificial, su tamaño y complejidad no son irrelevantes. Existen multitud de técnicas, muchas de las cuales son igualmente válidas para el mismo problema, con cientos de parámetros de configuración. Esto puede ocasionar problemas al usuario no experi- mentado en estas técnicas, que desea usarlas pero no tiene conocimientos en profun- didad sobre las mismas. ¿Qué técnicas se deben usar para cada ocasión? ¿Cuales son mejores? ¿Debería mejorar el hardware de mi máquina para mejorar el rendimiento? Intentar crear un estudio comparativo de todas las técnicas de aprendizaje automático está fuera del alcance de este proyecto, llevaría demasiado tiempo y podría llegar a ser casi inabordable. Por ello se ha decidido centrar el enfoque del proyecto en las técnicas de aprendizaje profundo (deep learning en inglés). Estas técnicas intentan crear modelos predictivos basados en conjuntos de datos iniciales usando modelos profundos (como redes de neuronas). Este aprendizaje puede ser supervisado, si el conjunto de entrenamiento indica el resultado, por ejemplo la clase del dato en un problema de clasificación; o no supervisado, si solo se proveen los datos en bruto sin más información. No obstante, el aprendizaje no supervisado no se asocia con modelos predictivos y por ello no será usado en el presente documento. 5 6 Evolutionary Design of Deep Neural Networks Esta memoria está orientada al usuario que desea usar bibliotecas de aprendizaje au- tomático, que implementan distintos métodos de aprendizaje profundo. Tras leer el pre- sente documento, el lector sabrá cuáles son las bibliotecas de