Análisis y experimentación práctica de Frameworks Deep Learning aplicados a la astronomía
Abstract
Grado en Ingeniería Informática
Full text
Universidad de Valladolid ESCUELA DE INGENIER´ IA INFORM´ ATICA Trabajo Fin de Grado GRADO EN INGENIER´ IA INFORM ´ ATICA Menci´on en Ingenier´ıa del Software An´alisis y Experimentaci´on Pr´actica de Frameworks Deep Learning Aplicados a la Astronom´ıa Autor: Jorge Barrio Conde Tutor: Benjam´ın Sahelices Fern´andez Cotutor: Fernando Buitrago Alonso
A mi familia y amigos Jorge Barrio Conde I
II Jorge Barrio Conde
Si se espera que una m´aquina sea infalible, no se puede esperar que tambi´en sea inteligente. Alan Turing. Jorge Barrio Conde III
IV Jorge Barrio Conde
AGRADECIMIENTOS Agradecimientos En primer lugar, quiero agradecer a mis padres y a mi hermano por todo el apoyo que siempre me han brindado y por su inmensa paciencia en los d´ıas de mayor estr´es. Por supuesto, agradecer al resto de mi familia por los valores y la educaci´on que me han inculcado, en especial a los que ya no est´an para verlo. A su vez, quiero dar las gracias a mis amigos y compa˜neros de universidad que han hecho de estos cuatro a˜nos tan duros, una etapa muy bonita y de crecimiento personal, de los que me llevo grandes recuerdos y vivencias tanto de los momentos de estudio como de los de desconexi´on y disfrute. Por ´ultimo, y no por eso menos importante, quiero agradecer a todas las personas que han estado involucradas en mi formaci´on, en especial a Benjam´ın Sahelices y a Fernando Buitrago por su empe˜no y dedicaci´on durante la tutela del proyecto, as´ı como a Javier Rodriguez por sus aportes y conocimientos al inicio del mismo, haciendo de este Trabajo de Fin de Grado un gran proceso de aprendizaje. Jorge Barrio Conde V
AGRADECIMIENTOS VI Jorge Barrio Conde
RESUMEN Resumen Con este Trabajo de Fin de Grado se busca indagar en los fundamentos del Aprendizaje Profundo y las redes neuronales para aplicarlos a problemas astron´omicos relacionados con galaxias distantes. El primer problema consistir´a en una clasificaci´on morfol´ogica de galaxias en funci´on del aspecto visual de las mismas. El segundo problema se centrar´a en la detecci´on de sus bordes. Ambos contar´an con una serie de experimentos en los que se evaluar´a y comparar´a la precisi´on de los distintos modelos en funci´on de las diferentes modificaciones que se les aplique. Dichos modelos podr´an ser tanto redes neuronales convolucionales propias como modelos pre-entrenados, con el prop´osito de explorar el potencial de la transferencia de aprendizaje. Estos problemas se aplicar´an sobre las galaxias distantes m´as masivas de tipo espiral que pertenecen al cartografiado CANDELS, uno de los proyectos m´as grandes del Telescopio Espacial Hubble y que manifiesta gran parte de las historia y evoluci´on del universo. La implementaci´on de las soluciones ser´a llevada a cabo utilizando el lenguaje de programaci´on Python junto a la biblioteca de Aprendizaje Profundo fastai yPyTorch. Palabras clave: Aprendizaje profundo, Redes Neuronales, Astroinform´atica, fastai, PyTorch, Astronom´ıa, Hubble, CANDELS. Jorge Barrio Conde VII
´ INDICE GENERAL 6.6.2. Funci´on de coste y m´etrica . . . . . . . . . . . . . . . . . . . . . . . . 76 6.6.3. Sistemabase ................................ 76 6.6.4. Transformaciones de datos . . . . . . . . . . . . . . . . . . . . . . . . . 77 6.6.5. An´alisis de distintas arquitecturas ResNet . . . . . . . . . . . . . . . . 79 6.6.6. Modificaci´on del learning rate y el n´umero de ´epocas . . . . . . . . . . 80 6.7. Conclusiones .................................... 87 7. Detecci´on de bordes de galaxias 89 7.1. Introducci´on al problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 7.2. Elconjuntodedatos................................ 89 7.3. Preprocesamiento de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 7.4. Implementaci´on de la soluci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 7.5. Funci´on de coste y m´etrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 7.6. Sistemabase .................................... 93 7.7. Modificaci´on del learning rate . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 7.8. Transformaciones de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 7.9. Equivalencia del ´angulo opuesto de la galaxia . . . . . . . . . . . . . . . . . . 103 7.10. Redes neuronales convolucionales propias . . . . . . . . . . . . . . . . . . . . 107 8. Conclusiones 113 8.1. Otras aplicaciones del Deep Learning en el campo de la astronom´ıa . . . . . . 114 8.2. L´ıneas de trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 A. Manual de instalaci´on de software utilizado en Ubuntu 117 B. Contenidos del soporte digital 119 Bibliograf´ıa 121 XIV Jorge Barrio Conde
LISTA DE FIGURAS Lista de Figuras 1.1. Comparativa de Machine Learning yDeep Learning [74]............ 2 2.1. Diagrama de Gantt del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1. C´ortex visual del cerebro humano [25] . . . . . . . . . . . . . . . . . . . . . . 9 3.2. Partes y conexiones de una neurona biol´ogica [2] . . . . . . . . . . . . . . . . 10 3.3. Modelo del funcionamiento del perceptr´on simple [65] . . . . . . . . . . . . . 11 3.4. Representaci´on de la funci´on sigmoide . . . . . . . . . . . . . . . . . . . . . . 13 3.5. Perceptr´on multicapa [96] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.6. Convoluci´on con un kernel Sobel Gxpara detectar bordes verticales [16] . . . 16 3.7. Filtro Sobel aplicado a una imagen de la Escuela de Ingenier´ıa Inform´atica . 17 3.8. Padding en una matriz de entrada 5x5 con un kernel 3x3 para obtener una matrizdesalida5x5[56].............................. 18 3.9. Convoluci´on stride-2 con un kernel 2x2 sobre una matriz de entrada 6x6 [1] . 18 3.10. Convoluci´on stride-1 con un kernel 2x2 sobre una matriz de entrada 6x6 [1] . 19 3.11. Operaci´on de max-pooling frente a average-pooling [76]............. 20 3.12. Ejemplo de red neuronal convolucional para clasificar fotograf´ıas [82] . . . . . 21 3.13. Proceso del descenso de gradiente hasta converger [70] . . . . . . . . . . . . . 24 3.14. Coste simulado para los distintos tama˜nos de learning rate . . . . . . . . . . . 25 3.15. Representaci´on tridimensional de la funci´on de estudio . . . . . . . . . . . . . 26 Jorge Barrio Conde XV
LISTA DE FIGURAS 3.16. Evoluci´on de los par´ametros al aplicar el descenso de gradiente con cuatro learning rates distintos............................... 27 3.17. Costes de cada learning rate a lo largo de las iteraciones . . . . . . . . . . . . 28 3.18. Efecto de la magnitud del learning rate sobre el descenso de gradiente [44] . . 28 3.19. Evoluci´on de los par´ametros al aplicar el descenso de gradiente partiendo de distintospuntos................................... 29 3.20. Costes obtenidos por los correspondientes puntos de partida . . . . . . . . . . 29 3.21. Descenso de gradiente sobre una funci´on no convexa [3] . . . . . . . . . . . . 33 3.22. Comparativa de Gradient Descent, SGD y SGD con mini-batches ....... 34 3.23. Comparativa de un modelo con underfitting, ajuste apropiado y overfitting sobre un problema de clasificaci´on [24] . . . . . . . . . . . . . . . . . . . . . . 35 3.24. Comparativa del coste del conjunto de entrenamiento frente al del conjunto de prueba en un modelo que experimenta overfitting [93] . . . . . . . . . . . . 36 3.25. Precisi´on del aprendizaje de un modelo pre-entrenado utilizando transfer learning frente a un entrenamiento desde cero [6] . . . . . . . . . . . . . . . . . . 39 4.1. Combinaci´on de im´agenes de Marte de los filtros azul, verde y rojo [61] . . . . 42 4.2. Filtros del Telescopio Espacial Hubble . . . . . . . . . . . . . . . . . . . . . . 42 4.3. Instrumentos de captaci´on fotogr´afica del Telescopio Espacial Hubble [60] . . 43 4.4. Nebulosa del ´ Aguila captada por el HST en luz visible e infrarroja [59] . . . . 44 4.5. Observaciones del cartografiado CANDELS [91]................. 45 4.6. Ejemplos de galaxias del cartografiado CANDELS . . . . . . . . . . . . . . . 46 5.1. B´usquedas en Google de TensorFlow frente a PyTorch en todo el mundo desde el 25/05/2019 2019 hasta el 25/05/2021 . . . . . . . . . . . . . . . . . . . . . 48 6.1. Esquema de clasificaci´on propuesto por Edwin Hubble [95] . . . . . . . . . . . 54 6.2. Arquitectura de la CNN utilizada por Huertas-Company et al. (2015) [41] . . 55 6.3. Enmascaramiento de la imagen de una galaxia . . . . . . . . . . . . . . . . . 57 6.4. Costes del conjunto de entrenamiento y validaci´on del sistema base . . . . . . 65 6.5. Precisi´on RMSE del modelo seg´un la funci´on de coste escogida . . . . . . . . 66 XVI Jorge Barrio Conde
LISTA DE FIGURAS 6.6. P´erdidas del conjunto de entrenamiento y validaci´on con RMSELoss ...... 66 6.7. RMSE obtenido en funci´on de la especificaci´on de y range ........... 67 6.8. P´erdidas de entrenamiento y validaci´on obtenidas al especificar y range=(0,1) 68 6.9. P´erdidas del conjunto de entrenamiento y validaci´on obtenidas al aplicar transformaciones sobre las im´agenes . . . . . . . . . . . . . . . . . . . . . . . . . . 70 6.10. RMSE obtenido en funci´on de si se han aplicado o no las transformaciones . . 71 6.11. RMSE obtenido con cada variante ResNet . . . . . . . . . . . . . . . . . . . . 72 6.12. Recorte de 100x100 p´ıxeles sobre una imagen con mucha informaci´on frente a otra con pocos p´ıxeles de informaci´on . . . . . . . . . . . . . . . . . . . . . . 73 6.13. M´etrica RMSE obtenida seg´un el tama˜no de las im´agenes . . . . . . . . . . . 73 6.14. P´erdidas del conjunto de entrenamiento y validaci´on obtenidas con el sistema base ......................................... 76 6.15. Precisi´on obtenida con el modelo base de clasificaci´on . . . . . . . . . . . . . 77 6.16. Resultado de show batch(), antes y despu´es de aplicar las transformaciones . 78 6.17. P´erdidas del conjunto de entrenamiento y validaci´on obtenidas al aplicar las transformaciones descritas en cada batch . . . . . . . . . . . . . . . . . . . . . 78 6.18. Precisi´on obtenida al aplicar transformaciones frente a la del sistema base . . 79 6.19. Diferencias entre las p´erdidas de entrenamiento y validaci´on en la ´ultima ´epoca seg´un la arquitectura ResNet . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 6.20. Accuracy obtenido por las diferentes arquitecturas de ResNet . . . . . . . . . 80 6.21. Gr´afica obtenida de la funci´on lr find() .................... 81 6.22. Accuracy obtenido con lr min ylr steep .................... 82 6.23. Precisiones obtenidas al utilizar lr min,lr steep y el learning rate por defecto de fine tune .................................... 82 6.24. Accuracy obtenido usando los distintos learning rates . . . . . . . . . . . . . . 83 6.25. Precisi´on obtenida seg´un el learning rate utilizado . . . . . . . . . . . . . . . 83 6.26. Evoluci´on de la precisi´on obtenida con un learning rate de 1e-02 entrenando durante10´epocas ................................. 84 6.27. Matriz de confusi´on obtenida con el modelo entrenado durante 10 ´epocas . . 84 6.28. Peores p´erdidas de validaci´on para el modelo entrenado con 10 ´epocas . . . . 86 Jorge Barrio Conde XVII
LISTA DE FIGURAS 6.29. Comparativa de la precisi´on del modelo de regresi´on frente al de clasificaci´on 87 7.1. Resultado de show batch sobre el sistema base . . . . . . . . . . . . . . . . . 93 7.2. P´erdidas del conjunto de entrenamiento y validaci´on del sistema base . . . . . 93 7.3. Resultado de show edge results() para el sistema base . . . . . . . . . . . . 94 7.4. Resultado de la funci´on lr find() sobre el sistema base . . . . . . . . . . . . 95 7.5. P´erdidas de entrenamiento y validaci´on con el learning rate de 1e-01 . . . . . 95 7.6. M´etrica MAE del sistema base en funci´on el learning rate . . . . . . . . . . . 96 7.7. Resultado de show edge results() al aplicar un learning rate de 0,1 . . . . . 96 7.8. MAE en funci´on de si se aplica o no GaussianNoise yNormalize ...... 98 7.9. Resultado de show batch aplicando la transformaci´on MovementTfm . . . . . 100 7.10. Resultado de show batch aplicando la transformaci´on RotateTfm ....... 102 7.11. M´etricas MAE seg´un las transformaciones aplicadas . . . . . . . . . . . . . . 102 7.12. Peor predicci´on del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 7.13. M´etrica MAE seg´un si se acepta como v´alido el ´angulo opuesto . . . . . . . . 104 7.14. M´etrica MAE original frente a la nueva modificaci´on . . . . . . . . . . . . . . 104 7.15. Cuatro peores predicciones del modelo . . . . . . . . . . . . . . . . . . . . . . 105 7.16. Cuatro mejores predicciones del modelo . . . . . . . . . . . . . . . . . . . . . 106 7.17. Campo receptivo de una CNN [77] . . . . . . . . . . . . . . . . . . . . . . . . 107 7.18. Red neuronal convolucional solo con capas convolucionales . . . . . . . . . . . 108 7.19. Red neuronal convolucional estilo Huertas-Company et al. (2015) [41] . . . . 109 7.20. CNN con ocho capas convolucionales y tres fully-connected .......... 109 7.21. M´etricas MAE de las distintas arquitecturas CNN . . . . . . . . . . . . . . . 111 8.1. Estrellas frente a galaxias de manera anal´ıtica . . . . . . . . . . . . . . . . . . 115 8.2. Puntos de una galaxia que podr´ıan determinar su borde . . . . . . . . . . . . 116 XVIII Jorge Barrio Conde
LISTA DE TABLAS Lista de Tablas 3.1. Kernel Sobel Gxdedimensi´on3x3 ........................ 17 6.1. Distribuci´on de los conjuntos de datos de entrenamiento y validaci´on seg´un las 6 diferentes categor´ıas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 7.1. MAE de cada valor de las regresi´on del sistema base . . . . . . . . . . . . . . 94 7.2. MAE de cada valor de la regresi´on al aplicar un learning rate de 0,1 . . . . . 97 7.3. MAE de cada valor al aceptar los ´angulos opuestos como v´alidos . . . . . . . 105 Jorge Barrio Conde XIX
LISTA DE TABLAS XX Jorge Barrio Conde
CAP´ ITULO 1. INTRODUCCI ´ ON Cap´ıtulo 1 Introducci´on El presente Trabajo de Fin de Grado se va a desarrollar dentro del ´ambito de la astroinform´atica, un campo de estudio interdisciplinar que nace de la necesidad de utilizar los conocimientos de la inform´atica y la computaci´on sobre la inmensa cantidad de datos que maneja la astronom´ıa [5]. Este proyecto consistir´a en aprender e investigar los conocimientos clave del campo del deep learning, o aprendizaje profundo en espa˜nol, para aplicarlos a problemas astron´omicos como la clasificaci´on morfol´ogica de galaxias en funci´on de su aspecto visual o la detecci´on de sus bordes. Para estos problemas se utilizar´an las observaciones realizadas por el Telescopio Espacial Hubble en su cartografiado CANDELS, el cual recoge algunas de las galaxias m´as lejanas que han sido captadas hasta el momento. La Inteligencia Artificial es un campo de estudio muy extenso que engloba todo tipo de sistemas que hacen posible que m´aquinas imiten comportamientos y habilidades avanzadas atribuidas a los seres humanos. Capacitar a las maquinas de habilidades humanas se puede lograr de m´ultiples formas. Un ejemplo de ello son los sistemas expertos. Estos sistemas son desarrollados para comportarse seg´un unas reglas definidas como un conjunto de condicionales. De esta forma, a partir de unos datos de entrada, y en funci´on de las reglas que se le haya programado, el sistema experto determinar´a la salida correspondiente. Este enfoque es bueno para tareas simples sin mucha variabilidad o complejidad de los datos. Si se piensa en una tarea como la de clasificar una imagen seg´un si se trata de un perro o un gato, la infinidad de casos y estados posibles, hace que sea imposible programar todas esas reglas. Ah´ı es donde surge el campo del Machine Learning o aprendizaje autom´atico en espa˜nol, uno de los campos m´as importantes y extendidos dentro de la inteligencia artificial. El machine learning se basa en que el sistema aprenda e infiera dichas reglas a partir de una aprendizaje o entrenamiento previo. Dentro de este campo se encuentra el Deep Learning o aprendizaje profundo en espa˜nol [78]. El adjetivo “profundo” se le atribuye debido a que trabaja con redes neuronales profundas, es decir, redes con muchas capas de neuronas. Jorge Barrio Conde 1
Pese a que gran parte de los fundamentos que sustentan el deep learning aparecieron hace d´ecadas, no ha sido hasta los ´ultimos a˜nos cunado ha experimentado su enorme crecimiento. Esto se debe a los grandes avances que ha experimenta el hardware, las investigaciones de nuevos algoritmos m´as eficientes y la exorbitante cantidad de datos que se tiene a disposici´on. Figura 1.1: Comparativa de Machine Learning yDeep Learning [74] La Figura 1.1 representa la diferencia sustancial entre machine learning y el deep learning. En el primero, a partir de un conjunto de datos, un profesional ha de extraer las “features” o caracter´ısticas claves de estos datos y suministr´arselas al modelo para que obtenga su predicci´on. Por el contrario, en el deep learning se omite ese paso intermedio, puesto que el propio modelo es el encargado de determinar cu´ales son las caracter´ısticas m´as importantes de los datos que se le est´a suministrando. El deep learning y las redes neuronales prestan las mejores soluciones a muchos de los problemas actuales. Dentro de este campo se pueden encontrar diferentes ´areas o disciplinas, como pueden ser: Visi´on por ordenador: ´area del deep learning que trabaja en base a la interpretaci´on de im´agenes o secuencias de estas. Generaci´on de im´agenes: es un ´area semejante al anterior, pero la misi´on de estos sistemas es generar nuevas im´agenes a partir de una dada. Algunos de los usos de este ´area son proveer de una mayor resoluci´on a una imagen o darle color a una en blanco y negro. Procesamiento del lenguaje natural (o Natural Language Processing, NLP): disciplina que procesa secuencias de texto o voz con el fin de interpretarlas e interaccionar con estas, tal y como lo har´ıa un ser humano. Sistemas de recomendaci´on: ´area muy extendida en aplicaciones web para ofrecer la mejor experiencia al usuario. Todas estas disciplinas pueden ser aplicables a m´ultiples campos externos a la computaci´on, como ser´ıa la medina para la detecci´on enfermedades en base a anomal´ıas en pruebas 2Jorge Barrio Conde
CAP´ ITULO 1. INTRODUCCI ´ ON m´edicas, el campo de la conducci´on aut´onoma para identificar elementos como coches, peatones o se˜nales de tr´afico, o el campo de la astronom´ıa como ser´a el caso de este proyecto [39, p. 3-5]. 1.1. Motivaci´on La raz´on principal que me motiv´o a llevar a cabo este proyecto fue el amplio vac´ıo de conocimiento que pose´ıa en torno al campo de la inteligencia artificial y, m´as concretamente, al campo del aprendizaje autom´atico. Es por ello, por lo que no quer´ıa finalizar mi grado en ingenier´ıa inform´atica sin adentrarme en esta disciplina que siempre llam´o mi atenci´on por su gran potencial y protagonismo que ha cobrado en estos ´ultimos a˜nos. A su vez, la astronom´ıa siempre ha sido de gran inter´es para m´ı, por lo que poder aplicar todo este nuevo conocimiento a dicho campo, manejando im´agenes de galaxias distantes capturadas por el Telescopio Espacial Hubble, propici´o la elecci´on del desarrollo de este proyecto. 1.2. Objetivos del proyecto Los objetivos principales en los que se basa este proyecto podr´ıan resumirse en los cinco siguientes: Investigar y asimilar los conceptos y principios m´as importantes del Deep Learning y las redes neuronales. Investigar sobre las tecnolog´ıas existentes para desarrollar tareas de Deep Learning, elegir las m´as adecuadas y profundizar en ellas. Aprender a utilizar el software astron´omico para procesar los datos del cartografiado CANDELS del Telescopio Espacial Hubble. Clasificar morfol´ogicamente galaxias lejanas mediante t´ecnicas de deep learning en base a su aspecto f´ısico . Construir un modelo de deep learning capaz de detectar los bordes de galaxias lejanas. 1.3. Estructura del proyecto El presente documento se ha estructurado en 8 cap´ıtulos y 2 ap´endices. En adici´on a este primer cap´ıtulo de introducci´on, se encuentran los siguientes: Jorge Barrio Conde 3
3.2. NEURONA ARTIFICIAL La imagen anterior (ver Figura 3.1) representa la estructura en capas del c´ortex visual humano, la cual recibe la informaci´on de entrada a partir de los ojos. Al igual que en el modelo biol´ogico, una red neuronal artificial se estructura en capas formadas por neuronas, cuya funci´on es inferir, mediante el aprendizaje, un conjunto de reglas que ser´ıan extremadamente dif´ıciles de programar, y que permitiesen resolver un problema concreto [64, Cap. 1]. 3.2. Neurona artificial Antes de entrar a explicar los fundamentos de las redes neuronales, es necesario explicar c´omo funcionan las unidades m´as b´asica que las conforman, es decir, c´omo funciona una neurona artificial. 3.2.1. Perceptr´on En el a˜no 1943, el psic´ologo Frank Rosenblatt desarroll´o el primer tipo de neurona artificial, denominada Perceptr´on. Para ello se inspir´o en el trabajo realizado por Warren S. McCulloch yWalter Pitts, en el que defini´o un modelo matem´atico capaz de emular el comportamiento de una neurona biol´ogica [53]. La creaci´on del perceptr´on supuso un punto de partida hac´ıa las redes neuronales artificiales. Figura 3.2: Partes y conexiones de una neurona biol´ogica [2] La Figura 3.2 ilustra las partes y conexiones de una neurona biol´ogica. Estas neuronas poseen unas dendritas, cuya funci´on es recibir impulsos el´ectricos de otras neuronas. Estos 10 Jorge Barrio Conde
CAP´ ITULO 3. REDES NEURONALES impulsos se procesan en el Soma, o cuerpo de la c´elula, y se emite un impulso a otras neuronas a trav´es de los terminales del Ax´on. La neurona tan solo se excita y emite un impulso el´ectrico si las se˜nales recibidas superan un cierto umbral [53]. Al igual que el modelo biol´ogico, la funci´on del perceptr´on es recibir unos entradas binarias, procesarlas y generar una salida tambi´en binaria, en base a un cierto umbral. Para ello, asigna un n´umero de peso a cada entrada, lo que se traducir´a en la importancia que se le va a aplicar a cada entrada. Entonces, calcula la suma ponderada de valores de las entradas con sus correspondientes pesos y comprueba si esta supera o no cierto umbral establecido. y=0 si Pn i=1 wixi≤umbral 1 si Pn i=1 wixi> umbral (3.1) La ecuaci´on anterior (ver Ecuaci´on 3.1) refleja matem´aticamente el funcionamiento del perceptr´on simple, donde si la suma ponderada de las entradas (xi) con sus correspondientes pesos (wi) es menor o igual a 0, la neurona no se disparar´a y la salida ser´a 0. Por el contrario, si la suma ponderada es mayor que cero, esta emitir´a un salida con valor 1. Figura 3.3: Modelo del funcionamiento del perceptr´on simple [65] La Figura 3.3 representa visualmente el funcionamiento del perceptr´on simple, donde la salida de este, se obtiene al aplicar una funci´on de activaci´on escalonada sobre la suma ponderada de los pesos y las entradas. Sin embargo, a fin de simplificar la notaci´on, es muy com´un representar la f´ormula del perceptr´on simple como el producto escalar del vector entrada x(x1, x2, ..., xn) y el vector de pesos w(w1, w2, ..., wn) sumado al valor del sesgo (b), siendo este equivalente al valor en negativo del umbral (ver Ecuaci´on 3.2). y=0 si w·x+b≤0 1 si w·x+b > 0(3.2) El sesgo o bias en ingl´es, representa la facilidad con la que el perceptr´on se disparar´a, es decir, la facilidad con la que su output ser´a 1. Por tanto, un valor de sesgo muy alto se traducir´a en una facilidad alta de obtener una salida del perceptr´on de valor 1. Jorge Barrio Conde 11
3.2. NEURONA ARTIFICIAL Por todo ello, el perceptr´on simple se trata de un modelo capaz de tomar decisiones binarias sencillas, en base a unos factores o evidencias que tienen distintas importancias en la deliberaci´on del perceptr´on [64, Cap. 1]. En el libro “Perceptrons” [55], escrito por Marvin Minsky y Seymour Papert, se demostr´o que usando varias capas de los perceptrones de Rosenblatt, estos pod´ıa aprender y modelar funciones matem´aticas simples, como puertas l´ogicas. A este conjunto de capas de perceptrones, se le denomina Multilayer Perceptron (MLP) o perceptr´on multicapa en espa˜nol. Este modelo consiste en una red que conecta la entrada de unos perceptrones con la salida de otros [39, p. 6]. 3.2.2. Neurona sigmoide Para que una red neuronal aprenda a resolver un problema, es necesario realizar peque˜nas correcciones graduales en sus neuronas, tanto en los pesos como en los sesgos, de forma que la salida de la red se aproxime al valor esperado y minimice el error entre el valor real y el esperado. En otras palabras, habr´ıa que hacer peque˜nas modificaciones en los par´ametros de las diferentes neuronas (∆w, ∆b) que produjesen peque˜nos alteraciones en la salida (∆output) hasta conseguir el resultado que se desee. En el caso de los perceptrones, tanto las entradas como la salidas son binarias. Esto significa que, una peque˜na modificaci´on en los pesos o los sesgos de un perceptr´on de la red, podr´ıa provocar que su salida cambie completamente, de un valor 1 a un valor 0 o viceversa, y que esto alterase dr´asticamente el funcionamiento de la red neuronal. Para solventar esta limitaci´on de los perceptrones surgen las neuronas sigmoideas. Este tipo de neuronas es similar al perceptr´on, pues somete a una funci´on de activaci´on el resultado de la suma ponderada de pesos y entrada, m´as el valor del sesgo. A diferencia del perceptr´on, esta no trabaja con una funci´on de activaci´on escalonadas, sino con una suavizaci´on de la misma, denominada funci´on sigmoide o log´ıstica (σ(z)). Esta funci´on no lineal no discretiza sus entradas como si har´ıa la funci´on escalonada del perceptr´on simple, permitiendo valores continuos entre el 0 y el 1, ambos no incluidos. Por ello, la salida de esta neurona se puede definir matem´aticamente con la expresi´on σ(w·x+b). σ(z) = 1 1 + e−z(3.3) Para entender el funcionamiento de estas neuronas es necesario tener presente la funci´on sigmoide (ver Ecuaci´on 3.3 y Figura 3.4). Se puede apreciar como los valores m´as extremos se acercan a las as´ıntotas horizontales y, por tanto, resultan valores muy pr´oximos a 0, en caso de valores negativos, o 1, en caso contrario. Por ejemplo, un valor de 10, dar´a como resultado σ(10) = 0,999 ≈1. En contraposici´on, los valores m´as pr´oximos al 0, resultan valores progresivos comprendidos entre el 0 y el 1. Por ejemplo, el valor -1, tendr´a como resultado σ(−1) = 0,269. Al conseguir suavizar la salida a valores comprendidos entre 0 y 1, es posible representar probabilidades y as´ı abordar problemas m´as complejos [64, Cap. 1]. 12 Jorge Barrio Conde
CAP´ ITULO 3. REDES NEURONALES Figura 3.4: Representaci´on de la funci´on sigmoide 3.2.3. Otras funciones de activaci´on La ´unica diferencia que separa al perceptr´on simple de la neurona sigmoidea es la funci´on de activaci´on. Sin embargo, esta no es la ´unica funci´on que se le puede aplicar a la salida de una neurona. Entre las m´as conocidas se encuentran [39]: Funci´on identidad: esta funci´on se trata de una funci´on lineal que no altera el resultado de la neurona, por lo que la salida de la funci´on, es igual a la entrada de la misma. Puede ser ´util para realizar regresiones lineales. La Ecuaci´on 3.4 representa la expresi´on matem´atica de esta funci´on. f(x) = x(3.4) Tangente hiperb´olica: esta funci´on es una versi´on de la funci´on sigmoide reescalada al rango de (-1, 1) [39, p. 391]. Esta funci´on se expresa matem´aticamente de la siguiente forma: tanh(x) = ex+e−x ex−e−x= 2σ(2x)−1 = 2 1 + e−2x−1 (3.5) ReLU: la Rectified Linear Unit o unidad lineal rectificada en espa˜nol, es una funci´on de activaci´on que convierte cualquier valor negativo en 0. Para el resto de valores, esta funci´on act´ua como la funci´on lineal identidad. La Ecuaci´on 3.6 describe la expresi´on matem´atica de esta funci´on. ReLU(x) = max(0, x) = 0 si x < 0 xsi x≥0(3.6) Existen algunas modificaciones de esta funci´on, con el fin de solventar alg´un problema que esta funci´on pueda provocar. Sin embargo, es una funci´on de activaci´on muy utilizada por su alto rendimiento. Jorge Barrio Conde 13
3.3. TIPOS DE REDES NEURONALES 3.3. Tipos de Redes Neuronales A lo largo de esta secci´on se van a describir algunos de los tipo de redes neuronales m´as importantes que existe 3.3.1. Redes Neuronales Artificiales (ANN) Las Artificial Neural Networks (ANN) o Redes Neuronales Artificiales en espa˜nol, son un modelo de c´omputo compuesto por neuronas conectadas y organizadas por capas, siendo la salida de una capa, la entrada de la siguiente. Se basan en grafos ac´ıclico direccionales, es decir, no poseen ning´un bucle, haciendo que la informaci´on se transmita desde la capa de entrada hasta la capa de salida sin que exista ning´un tipo de retroceso. Por esta “alimentaci´on hacia delante” en el procesamiento de la informaci´on, a estas redes tambi´en se las conoce como Feed-Forward Neural Networks (FNN). Las capas que forman estas redes pueden clasificarse en tres tipos distintos en funci´on del papel que tomen dentro de la red. Esta topolog´ıa de capas se divide en: Capa de entrada: capa cuya funci´on se basa en codificar los datos de entrada. Existe una capa de este por red y posee tantas neuronas como datos contenga la entrada. Capas ocultas: este tipo de capa se encarga de procesar los datos que han sido introducidos en la red y su entrada procede de la salida de la capa anterior. Capa de salida: esta capa est´a dise˜nada de tal forma que codifique una salida acorde al problema que se intenta resolver. Por tanto, el n´umero de neuronas que formar´a esta capa, depender´a de cada problema. Figura 3.5: Perceptr´on multicapa [96] La Figura 3.5 representa un perceptr´on multicapa formado por una capa de entrada que codifica el vector de entrada, una capa oculta que procesa dicha informaci´on y una ´ultima capa que codifica la salida de la red. 14 Jorge Barrio Conde
CAP´ ITULO 3. REDES NEURONALES Como ya se coment´o en la secci´on 3.2.2, el aprendizaje de las redes neuronales se basa en ajustar los par´ametros de sus neuronas (pesos y sesgos), a fin de conseguir el resultado que se espera. En las secciones posteriores se explicar´a m´as en detalle c´omo se lleva a cabo este aprendizaje [39][64]. 3.3.2. Redes Neuronales Recurrentes (RNN) Por otro lado, existen las Recurrent Neural Networks (RNN) o redes neuronales recurrentes en espa˜nol. Estas redes son modificaciones de las ANN tradicionales en las que se incluyen bucles en sus capas ocultas, haciendo que sus neuronas se activen temporalmente [39, p. 382]. Este tipo de redes est´an dise˜nadas para procesar secuencias de entrada de cualquier longitud, tratando estas como datos relacionados, en lugar de tratar las entradas de forma independiente como har´ıa una ANN tradicional [26, Cap. 10]. Estas redes pueden ser muy ´utiles para realizar predicciones futuras en base al hist´orico de datos que se le haya suministrado a la red, semejante a lo que hace el cerebro humano [64]. 3.3.3. Redes Neuronales Convolucionales (CNN) Las Convolutional Neural Networks (CNN), o Redes Neuronales Convolucionales en espa˜nol, son un tipo de redes neuronales cuyo primer dise˜no data del a˜no 1989. Yann LeCun, su creador, buscaba una red neuronal capaz de detectar n´umeros manuscritos en cheques bancarios. Este tipo de redes neuronales est´an enfocadas al procesamiento de datos tabulares o cuadriculados, siendo t´ıpicamente im´agenes. Tanto su estructura como su funcionamiento est´an inspirados en el sistema de visi´on del modelo biol´ogico del cerebro humano, que se explic´o al inicio de este cap´ıtulo (ver Secci´on 3.1). La importancia principal de las CNN reside en su capacidad de detectar complejos patrones en grandes conjuntos de im´agenes. Es por ello por lo que este tipo de red se considera el actual estado del arte en los modelos de visi´on por ordenador. Al introducir una imagen en una red neuronal multicapa tradicional, se introducen los p´ıxeles como variables independiente en forma de vector plano. Al no tener en cuenta la posici´on que posee cada p´ıxel dentro de la imagen, cada p´ıxel es independiente del valor de sus p´ıxeles vecinos, lo que hace imposible detectar patrones visuales en las im´agenes. Adem´as, las redes neuronales tradicionales no son capaces de trabajar con im´agenes a color de gran tama˜no, debido al alto coste computacional que supondr´ıa tener un gran n´umero de neuronas en la capa de entrada (alto x largo x 3 colores de rgb). La feature engineering, o ingenier´ıa de caracter´ısticas en espa˜nol, es una de las grandes ventajas atribuidas al deep learning. Una feature es una transformaci´on que se realiza sobre los datos a fin de de facilitar el modelado. En una imagen, estas features podr´ıan ser patrones visuales distintivos que permitan diferenciar los elementos de la misma. En el caso de los Jorge Barrio Conde 15
3.3. TIPOS DE REDES NEURONALES n´umeros manuscritos, un ejemplo de features para el n´umero “8” ser´ıan dos circunferencias unidas, una encima de otra. El adjetivo convolucional que se le atribuye a este tipo de redes proviene de convoluci´on, una operaci´on matem´atica que se realiza en al menos una capa de la red y se basa en multiplicaciones y sumas de matrices. Esta operaci´on consiste en aplicar un kernel o filtro sobre una imagen. Un kernel es una matriz num´erica de una cierta dimensi´on que seg´un su configuraci´on, se conseguir´an resultados distintos al aplicarlo sobre la misma imagen de entrada, es decir, a partir de filtros diferentes se pueden detectar caracter´ısticas diferentes. Un ejemplo muy t´ıpico es el desenfoque o la detecci´on de bordes. Los resultados de una convoluci´on se conocen com´unmente como mapas de caracter´ısticas debido a que revela en que parte de la imagen de entrada se ha detectado una caracter´ıstica concreta. A su vez, tambi´en pueden ser nombrados como mapas de activaci´on. Figura 3.6: Convoluci´on con un kernel Sobel Gxpara detectar bordes verticales [16] En la Figura 3.6 se puede ver gr´aficamente c´omo funciona una convoluci´on. En este caso se trata de un kernel de dimensiones 3x3 denominado Sobel Gx(matriz verde central), cuya funci´on es encontrar los borde verticales de una imagen. Para ello, se multiplica cada elemento del kernel con su elemento correspondiente en un bloque de 3x3 de la imagen de entrada (matriz de color azul). La suma de los resultados de estas multiplicaciones forman el nuevo valor del mapa de caracter´ısticas correspondiente a ese bloque 3x3. Esta operaci´on se aplicar´a a cada bloque de la imagen de entrada, de forma que se obtengan todos los valores del mapa de caracter´ısticas (matriz de color naranja). 16 Jorge Barrio Conde
CAP´ ITULO 3. REDES NEURONALES -1 0 1 -2 0 2 -1 0 1 Tabla 3.1: Kernel Sobel Gxde dimensi´on 3x3 Si se analiza el kernel de la convoluci´on de la Figura 3.6 (ver Tabla 3.1), los valores de la columna izquierda son los mismo que los de la derecha con signos invertidos. Esto provocar´a que si los valores de la columna izquierda y los de la derecha de un bloque de 3x3 de la imagen de entrada son iguales, se anular´an y el resultado de la convoluci´on para esa posici´on ser´a cero, lo que significar´a que no hay ning´un borde en dicha posici´on. Por el contrario si los valores de ambas columnas laterales son contrarios su activaci´on valdr´a m´as. De esta forma se consigue un filtro que se active ante diferencias de contrastes verticales. Figura 3.7: Filtro Sobel aplicado a una imagen de la Escuela de Ingenier´ıa Inform´atica Fuente: elaboraci´on propia. La Figura 3.7 ilustra el resultado de un ejemplo donde se ha aplicado los filtros Sobel para la detecci´on de bordes vertical (imagen de la izquierda) y horizontales (imagen situada a la derecha) sobre una imagen de la Escuela de Ingenier´ıa Inform´atica de la Universidad de Valladolid. En este caso, al tratarse de un kernel 3x3, el resultado de la convoluci´on ser´a una imagen cuyas dimensiones son H−2 x W−2, siendo H y W el alto y el ancho de la imagen de entrada, respectivamente. Esto se debe al n´umero de bloques 3x3 distintos que pueden existir en la imagen de entrada. Para no perder los p´ıxeles exteriores, existe el padding o relleno. Esta t´ecnica, permite que el mapa de activaci´on de salida pueda ser del mismo tama˜no (o mayor) que el de la imagen de entrada. Para ello se a˜nade un marco exterior con p´ıxeles adicionales, de forma que se puedan aplicar los kernels sobre los extremos. En este caso concreto, habr´ıa que a˜nadir un padding de 2 p´ıxeles para obtener una imagen resultante de tama˜no HxW. De forma general, en filtros de dimensiones impares (los m´as comunes), el padding necesario para obtener las mismas dimensiones de salida que las de entrada es ks//2, siendo ks el tama˜no del kernel y “//” la divisi´on descartando la parte decimal del cociente. Jorge Barrio Conde 17
3.3. TIPOS DE REDES NEURONALES Figura 3.8: Padding en una matriz de entrada 5x5 con un kernel 3x3 para obtener una matriz de salida 5x5 [56] La Figura 3.8 ilustra perfectamente c´omo al aplicar un kernel de dimensiones 3x3 (matriz sombreada) sobre una entrada de tama˜no 5x5 (matriz de color azul) y un padding de 1 (celdas blancas alrededor de la matriz de entrada), se consigue una salida con las mismas dimensiones que la entrada (matriz de color verde). En la Figura 3.6 el kernel se desplaza p´ıxel a p´ıxel. Esto se puede modificar seg´un su “stride”. Se denomina “stride” al desplazamiento que se aplica al kernel sobre los p´ıxeles de la imagen de entrada. Mientras que las convoluciones stride-1 permiten a˜nadir capas convolucionales sin alterar el tama˜no de la salida (junto a un padding de ks//2), las convoluciones stride-2 son ´utiles si se desea reducir el tama˜no de la salida. En las CNN se busca a˜nadir capas convolucionales con convoluciones stride-2, una seguida de otra, a fin de reducir el tama˜no de imagen hasta un convertirlo en un vector. Figura 3.9: Convoluci´on stride-2 con un kernel 2x2 sobre una matriz de entrada 6x6 [1] 18 Jorge Barrio Conde
CAP´ ITULO 3. REDES NEURONALES Tal y como se puede observar en la Figura 3.9, el resultado de aplicar una convoluci´on stride-2 con un kernel 3x3 sobre una matriz de entrada 6x6 resulta una matriz de inferiores dimensiones. Figura 3.10: Convoluci´on stride-1 con un kernel 2x2 sobre una matriz de entrada 6x6 [1] Para comprender c´omo afecta el stride sobre la convoluci´on, en la Figura 3.10, se aplica una convoluci´on stride-1 sobre el mismo ejemplo que en la imagen anterior. En este caso, a partir de la misma matriz 6x6, el resultado es una nueva matriz 5x5. Si se incluyese un padding de 1, la matriz de salida ser´ıa del mismo tama˜no que la de entrada. Para calcular el tama˜no que tendr´a el mapa de caracter´ısticas de una convoluci´on hay que aplicar la siguiente f´ormula: ((s+ 2 ∗padding −ks)//stride) + 1 (3.7) En la f´ormula anterior, la “s” representa el tama˜no de entrada, “ks” el tama˜no del kernel, “padding” el padding que se le aplica a la convoluci´on y “stride” el desplazamiento del kernel sobre los p´ıxeles de la imagen de entrada [39, cap. 13]. Una vez comprendida la convoluci´on, la operaci´on m´as importante de este tipo de redes, se va a describir los tres tipos de capas que componen las Redes Neuronales Convolucionales. Seg´un la funci´on que empe˜nan en la red, las capas se pueden clasificar en los tres siguientes tipos [66] [26, Cap. 9]: Capas convolucionales: son aquellas capas que realizan la operaci´on de convoluci´on explicada anteriormente. Los resultados de las diferentes convoluciones de dicha capa, se pasan por una funci´on de activaci´on no lineal, siendo ReLU la funci´on de activaci´on m´as utilizada. Esta activaci´on se aplica sobre cada p´ıxel de la salida de la convoluci´on. Al igual que en las redes neuronales tradicionales se ajustan los par´ametros de sus neuronas durante el entrenamiento para obtener los resultados esperados, en las capas convolucionales de este tipo de red, los par´ametros que se van a ajustar en el entrenamientos son los que determinar´an la configuraci´on de los distintos kernel, de forma que Jorge Barrio Conde 19
3.4. APRENDIZAJE DE REDES NEURONALES funci´on de coste cualquiera. La funci´on de coste sobre la que se va a experimentar ha sido tomada de un ejemplo del art´ıculo de la Wikipedia destinado a este algoritmo [94] y est´a definida a continuaci´on (ver Ecuaci´on 3.14). F(x, y) = sin (1 2x2−1 4y2+ 3) cos (2x+ 1 −ey) (3.14) En la siguiente figura (ver Figura 3.15), se ha representado una gr´afica tridimensional de la funci´on elegida para este experimento. Para ello, se ha utilizando el toolkit “mplot3d” de la biblioteca “Matplotlib” de Python. Figura 3.15: Representaci´on tridimensional de la funci´on de estudio Fuente: elaboraci´on propia a partir de una funci´on de ejemplo que se describe en el art´ıculo de “Gradient descent” de la Wikipedia [94]. Pese a que lo com´un es determinar el punto de partida de forma aleatoria, en este caso es necesario que sea invariante para poder observar c´omo afectan los resultados del algoritmo partiendo de un mismo punto, ´unicamente alterando la tasa de aprendizaje. El punto de partida elegido manualmente es el (0,0). Para el experimento se van a plantear los cuatro escenarios t´ıpicos que se dan en la elecci´on del learning rate. Los dos primeros van a representar malas elecciones, comenzando por una tasa peque˜na de valor 0,001 y siguiendo con una tasa grande de 0,3. Los dos casos restantes ser´an buenas elecciones, con un learning rate de 0,01 y uno algo m´as ´optimo de 0,05. En la siguiente figura (ver Figura 3.16) se muestran los valores que se han ido actualizando con el algoritmo del descenso de gradiente en 10000 iteraciones para los cuatro distintos learning rates. Para una mejor interpretaci´on, se han diferenciado en cada imagen los distintos valores con un c´odigo de colores. El punto de partida est´a representado por un punto blanco, los valores intermedios por puntos rojos y el valor final est´a ilustrado con un punto superpuesto naranja. Junto a cada imagen se ha colocado una barra de colores, la cual des26 Jorge Barrio Conde
CAP´ ITULO 3. REDES NEURONALES cribe que los colores m´as claros hacen referencia a los valores de p´erdida m´as altos y, por el contrario, los colores m´as oscuros a los m´as bajos. (a) Learning rate peque˜no (b) Learning rate grande (c) Learning rate bueno (d) Learning rate ´optimo Figura 3.16: Evoluci´on de los par´ametros al aplicar el descenso de gradiente con cuatro learning rates distintos En el primer caso, la ilustraci´on (ver Figura 3.16a) muestra como los valores siguen perfectamente el algoritmo del descenso de gradiente en busca de un m´ınimo relativo. Al tratarse de un valor excesivamente peque˜no, el proceso finaliza a medio camino, siendo insuficientes el n´umero de iteraciones de algoritmo para alcanzar la convergencia en el m´ınimo. En segundo lugar estar´ıa el caso de un learning rate grande. Como se puede observar en la segunda imagen (ver Figura 3.16b), inicialmente los valores de los par´ametros se actualizan dirigi´endose hacia un m´ınimo relativo. Pese a que el learning rate es un valor relativamente alto, las actualizaciones en los primeros tramos son bastante peque˜nas. Esto se puede deber a la peque˜na inclinaci´on que experimenta la funci´on en dicha zona. A continuaci´on, los valores acaban alcanzando una zona pr´oxima a un m´ınimo local. En ese momento, los valores se actualizan buscando la convergencia. Sin embargo, la actualizaci´on aplicada es ligeramente m´as grande de lo debido, alcanzando los valores a un punto de la funci´on muy cercano pero con un alto coste. La gran pendiente que existe en este punto provocada por su alta proximidad al m´ınimo local, sumado al alto learning rate establecido, provoca que los valores Jorge Barrio Conde 27
3.4. APRENDIZAJE DE REDES NEURONALES de la funci´on den un salto muy grande en direcci´on al m´ınimo, lo que hace que se desv´ıen a una nueva zona ajena al m´ınimo relativo actual. En esta nueva zona, el optimizador sigue actualizando los valores en busca de otro m´ınimo pero, como puede verse, el punto final queda pr´oximo al nuevo m´ınimo pero sin llegar a converger en ´el, tal y como era de esperar. Por ´ultimo, las figuras inferior izquierda (ver Figura 3.16c) e inferior derecha (ver Figura 3.16d), muestran un recorrido aparentemente id´entico, donde ambas tasas de aprendizaje cumplen con su cometido, converger en un m´ınimo de la funci´on, acorde al n´umero de iteraciones establecidas. Figura 3.17: Costes de cada learning rate a lo largo de las iteraciones Analizando los valores de p´erdida que se van obteniendo a lo largo de todas las iteraciones para los diferentes casos (ver Figura 3.17), se puede observar claramente la diferencia ente los dos casos en los que algoritmo converge. Pese a que con un learning rate de 0,01 se consigue alcanzar el m´ınimo local sin problemas, una tasa m´as afinada como es 0,05 consigue la convergencia con mucha m´as rapidez, lo que supone un gran ahorro en el tiempo de computaci´on, haciendo de este ´ultimo caso, el m´as ´optimo. Figura 3.18: Efecto de la magnitud del learning rate sobre el descenso de gradiente [44] 28 Jorge Barrio Conde
CAP´ ITULO 3. REDES NEURONALES La Figura 3.18 refleja y explica a la perfecci´on lo ocurrido en cada caso de prueba, especialmente la divergencia experimentada en el caso del learning rate alto. Concluyendo este breve experimento, todo lo expuesto demuestra cu´an importante es la elecci´on de un buen learning rate que se adapte a la funci´on de coste utilizada y al n´umero de ´epocas establecidas en el entrenamiento, sobre el ´exito y la eficiencia del aprendizaje de un modelo. Sin embargo, determinar un buen learning rate no lo es todo. Si el descenso de gradiente parte del punto (−2,−0,8) y con un learning rate de 0,05 (valor descrito como ´optimo en los casos anteriores), el proceso del descenso de gradiente deriva los valores de los par´ametros a un m´ınimo relativo donde la funci´on adopta valores peque˜nos de p´erdida, de forma que optimiza bien la funci´on (ver Figura 3.19a). Por el contrario, si se parte de un punto ligeramente m´as pr´oximo al eje de abscisas, como es el punto (−2,−0,9), el punto final que alcanza el descenso de gradiente es un m´ınimo tambi´en pero, en este caso, mucho m´as superficial y, por ello, bastante menos ´optimo que el anterior (ver Figura 3.19b). (a) M´ınimo relativo profundo (b) M´ınimo relativo superficial Figura 3.19: Evoluci´on de los par´ametros al aplicar el descenso de gradiente partiendo de distintos puntos Figura 3.20: Costes obtenidos por los correspondientes puntos de partida Jorge Barrio Conde 29
3.4. APRENDIZAJE DE REDES NEURONALES Lo que se intenta explicar con este ´ultimo ejemplo es que pese a que la elecci´on de learning rate es aparentemente buena, el punto de partida, a su vez, determina el resultado final seg´un los m´ınimos locales que le rodean. Por tanto, este factor influye en el grado de optimizaci´on de la funci´on conseguido por el algoritmo. Es por esta raz´on por la que se parte de valores aleatorios. 3.4.3. Algoritmo de Backpropagation Una vez entendido el algoritmo del Descenso del Gradiente, se presenta el algoritmo de diferenciaci´on conocido como Backpropagation (propagaci´on hacia atr´as de errores o retropropagaci´on en espa˜nol). Pese a que el algoritmo de backpropagation ya se introdujo en los a˜nos 70, no fue hasta 1986 que se public´o el art´ıculo “Learning representations by backpropagating errors” [79] de David Rumelhart, Geoffrey Hinton y Ronald Williams donde se populariz´o dicho algoritmo. En este art´ıculo se compara la eficiencia del aprendizaje utilizando este nuevo enfoque frente a las t´ecnicas anteriores sobre distintas redes neuronales. Esta comparativa reflej´o el gran potencial y relevancia de este algoritmo para abordar problemas que hasta el momento eran inalcanzables [64, Cap. 2]. El algoritmo del Backpropagation trabaja junto al del descenso del gradiente. Como ya se ha explicado en la secci´on anterior, el descenso del gradiente se encarga de optimizar el coste de una funci´on en base al vector gradiente. Por ello, el objetivo del algoritmo de Backpropagation es calcular el conjunto de derivadas parciales correspondientes a cada par´ametro de la red con respecto al coste o p´erdida la misma, es decir, se busca la responsabilidad o repercusi´on que ha tenido cada neurona sobre el coste final de la red. De esta forma, dicho algoritmo consigue construir el vector gradiente que ser´a utilizado por el descenso del gradiente para optimizar dicho coste de la red. Este algoritmo se divide en dos etapas: Feedforward o pasada hacia delante y Backward o pasada hacia atr´as. La primera de ellas consiste en calcular los distintos resultados de cada neurona a partir de una entrada, a medida que se avanza por la red. Una vez se calcule la activaci´on final de la red y se calcule el error de esta, se lleva a cabo la propagaci´on del error hacia atr´as. Pese a la complejidad matem´atica que pueda suponer este algoritmo, se va a intentar explicar dichos c´alculos de la forma m´as simple posible sobre una red neuronal tradicional. Tal y como se ha explicado antes, tras calcular todas sumas ponderadas y las activaciones de cada neurona, se procede al c´alculo de las derivadas parciales de cada capa. Para obtener las derivadas parciales del coste con respecto a los pesos ( ∂C ∂wL) y los sesgos ( ∂C ∂bL) de la ´ultima capa (L), se va a partir del coste de esta ´ultima capa. C(a(zL)) = C(a(wL·aL−1+bL)) (3.15) La expresi´on anterior (ver Ecuaci´on 3.15) describe el coste de la ´ultima capa, donde “C” representa la funci´on de coste, “a” la funci´on de activaci´on y “zL” la suma ponderada de 30 Jorge Barrio Conde
CAP´ ITULO 3. REDES NEURONALES cada neurona de la ´ultima capa. Esta suma ponderada es el resultado de multiplicar los pesos (wL) por cada una de sus entradas, las cuales equivalen a las activaciones de la capa anterior (aL−1), m´as sus sesgos (bL). Para calcular estas derivadas parciales a partir de dicha composici´on de funciones, se ha de utilizar la Chain rule o regla de la cadena en espa˜nol, de forma que estas derivadas parciales quedan de la siguiente forma: ∂C ∂wL=∂C ∂aL·∂aL ∂zL·∂zL ∂wL=δL·∂zL ∂wL=δL·aL−1(3.16) ∂C ∂bL=∂C ∂aL·∂aL ∂zL·∂zL ∂bL=δL·∂zL ∂bL=δL·1 (3.17) El s´ımbolo delta (δL) que aparece en las dos ecuaciones anteriores (Ecuaci´on 3.16 y 3.17), representa lo que se denomina como error imputado a la neurona ( ∂C ∂zL), es decir, el impacto que tiene cada neurona sobre el resultado final. Este error de la ´ultima capa se calcula como la multiplicaci´on de la derivada de la funci´on de coste multiplicado por la derivada de la funci´on de activaci´on que se est´e aplicando en las neuronas de esa capa, tal y como se describe en la Ecuaci´on 3.18. Un valor alto representar´a que una variaci´on en el resultado de la neurona (suma ponderada) provoca un efectos sobre la salida de la red. δL=∂C ∂zL=∂C ∂aL·∂aL ∂zL(3.18) Por ´ultimo en la Ecuaci´on 3.17, la derivada parcial de zLrespecto de bLresulta 1 ya que se trata de un t´ermino independiente. Sin embargo, en la Ecuaci´on 3.16, la derivada parcial de zLrespecto de wLes igual a las entradas de las neuronas de dicha capa o, en otras palabras, a las activaciones de la capa anterior (aL−1). Una vez calculadas las derivadas parciales de los par´ametros de la capa final, se retrocede a la capa anterior (L−1). Esta vez habr´a que aplicar la regla de la cadena a la siguiente expresi´on: C(aL(wLaL−1(wL−1aL−2+bL−1) + bL)) (3.19) Para dicha expresi´on (ver Ecuaci´on 3.19), las derivadas parciales de los par´ametros de esta capa quedan de la siguiente forma: ∂C ∂wL−1= ( ∂C ∂aL·∂aL ∂zL)·∂zL ∂aL−1·(∂aL−1 ∂zL−1)·(∂zL−1 ∂wL−1) (3.20) ∂C ∂bL−1= ( ∂C ∂aL·∂aL ∂zL)·∂zL ∂aL−1·(∂aL−1 ∂zL−1)·(∂zL−1 ∂bL−1) (3.21) Jorge Barrio Conde 31
3.4. APRENDIZAJE DE REDES NEURONALES Teniendo en cuenta que la expresi´on “ ∂C ∂aL·∂aL ∂zL” es el error de la ´ultima capa (δL), que “∂zL−1 ∂bL−1” equivale a 1 y “∂zL−1 ∂bL−1” es igual a las activaciones de la capa anterior (aL−2), al igual que en la capa anterior, y que “∂aL−1 ∂zL−1” representa la derivada de la funci´on de activaci´on, tan solo queda una derivada parcial sin calcular. Esta ´ultima derivada parcial de zLrespecto de aL−1, representa c´omo afecta a las sumas ponderadas de las neuronas de la ´ultima capa la variaci´on de las activaciones de la capa actual. El resultado de esta derivada parcial equivale al conjunto de pesos de la ´ultima capa (wL). De esta forma se est´a retropropagando el error hacia la capa anterior en funci´on de los pesos o ponderaciones de cada entrada. Teniendo esto en cuenta, las expresiones anteriores se pueden reducir a las siguientes: ∂C ∂wL−1=δL·wL·∂aL−1 ∂zL−1·aL−2=δL−1·aL−2(3.22) ∂C ∂bL−1=δL·wL·∂aL−1 ∂zL−1·1 = δL−1·1 (3.23) Como se puede observar en ambas expresiones (ver Ecuaci´on 3.22 y 3.23), la expresi´on final incluye el error imputado a las neuronas de esta capa (δL−1). Esto se debe a que la expresi´on “δL−1·wL·∂aL−1 ∂zL−1” equivale a la derivada parcial del coste con respecto a las sumas ponderadas de la capa actual ( ∂C ∂zL−1). A partir de este punto, para calcular las derivadas parciales de los par´ametros de una capa intermedia i(numerando estas capas en orden ascendente de 1 a L), tan solo se requiere calcular el error imputado a cada neurona de la capa actual (δi), retropropagando el error de la capa anterior (δi+1), de la siguiente forma (ver Ecuaci´on 3.24): δi=wi+1 ·δi+1 ·∂ai ∂zi(3.24) Finalmente, con dicho error se pueden calculan las correspondientes derivadas parciales de los par´ametros de la capa actual (ver Ecuaci´on 3.25 y 3.26) [26, Cap. 6][93]. ∂C ∂wi=δi·ai−1(3.25) ∂C ∂bi=δi(3.26) 32 Jorge Barrio Conde
CAP´ ITULO 3. REDES NEURONALES 3.4.4. Descenso de Gradiente Estoc´astico (SGD) Como se ha visto en la experimentaci´on del algoritmo del gradiente descendente (ver Secci´on 3.4.2), si se aplica dicho algoritmo sobre una funci´on no convexa, es muy probable que no se alcance un m´ınimo absoluto, estanc´andose en un m´ınimo local. Figura 3.21: Descenso de gradiente sobre una funci´on no convexa [3] Tal y como se puede observar en la Figura 3.21, ante un ejemplo de funci´on no convexa de una variable, el algoritmo del descenso del gradiente converge en un m´ınimo local sin alcanzar el m´ınimo global que se encuentra a su lado y as´ı poder optimizar al m´aximo la funci´on de coste. Para solventar estos inconvenientes, se cre´o el Stochastic Gradient Descent (SGD) o descenso de gradiente estoc´astico. El algoritmo del gradiente descendente es un proceso iterativo el cual actualiza los par´ametros una vez se hallan procesado todas las entradas. A este conjunto de entradas que se procesan para hallar el gradiente se denomina batch o lote en espa˜nol. Este proceso se detiene cuando la funci´on converge en un m´ınimo. Por el contrario, el SGD ofrece un nuevo enfoque que se basa en establecer un tama˜no de batch de uno, es decir, calcula la p´erdida obtenida para una ´unica entrada evaluando una determinada funci´on de coste sobre la salida de la red con respecto al valor esperado y, en base al vector gradiente, actualiza los par´ametros de la red. Esto da lugar a iteraciones del algoritmo mucho m´as r´apidas y que requieran mucha menos ocupaci´on de la memoria. El adjetivo estoc´astico procede de la elecci´on aleatoria de cada entrada que se procesa por la red en cada iteraci´on [13]. Este comportamiento, implicar´a una mayor fluctuaci´on en la actualizaci´on de los valores de los par´ametros de la red, ya que al iterar el descenso del gradiente sobre cada entrada, los valores que estas entradas provocar´an sobre las salidas de la red, ser´an muy poco uniformes entre ellas, lo que derivar´a en p´erdidas muy distintas. Esta fluctuaci´on en la actualizaci´on de los par´ametros, hace que sea m´as probable alcanzar m´ınimos m´as ´optimos. En contraposici´on, esto hace que el entrenamiento sea muy inconsistente. Para suplir esta inconsistencia surge una versi´on intermedia entre el gradiente descendente y SGD, en la que en lugar de aplicar el descenso del gradiente sobre cada entrada o el conjunto completo de datos, se aplica sobre un subconjunto de este, denominado mini-batches o miniJorge Barrio Conde 33
3.4. APRENDIZAJE DE REDES NEURONALES lotes en espa˜nol. A esta t´ecnica se la denomina Descenso de gradiente estoc´astico en mini-lotes [39, p. 471]. Un mayor tama˜no del batch, har´a que el entrenamiento sea m´as estable ya que al contar con m´as datos, el gradiente posee una mayor precisi´on. Sin embargo, esto tambi´en implica un menor n´umero de batches por cada ´epoca, lo que se refleja en menos actualizaciones o ajustes de pesos de la red [39, Cap. 13]. Figura 3.22: Comparativa de Gradient Descent, SGD y SGD con mini-batches Fuente: edici´on propia a partir de una imagen del curso “Improving deepneural networks: Hyperparameter tuning, regularization and optimization” [63]. La Figura 3.22 compara el algoritmo del descenso del gradiente con su versi´on estoc´astica y la versi´on de mini-batches, pudiendo observar las distintas fructuraciones. Sin embargo, el Descenso de Gradiente Estoc´astico de mini-batches no es la ´unica variaci´on de SGD que existe . Entre las distintas versiones de SGD destacan algunas de las siguientes: Momentum [87]: esta t´ecnica nace para solventar el problema de oscilaci´on que puede verse implicado en algunos casos en los que se aplica SGD. Lo que busca es aplicar un momentum o impulso a la direcci´on de la actualizaci´on de par´ametros. Para ello, en lugar de actualizar los par´ametros usando el gradiente, se utiliza una media m´ovil, calculada a partir de las medias de los par´ametros y del gradiente. En esta interviene un par´ametro que intensifica dicho momentum. Esta t´ecnica puede llegar a acelerar el entrenamiento y alcanzar mejores precisiones [39, p. 474]. RMSProp: esta variante de SGD fue creada por Geoff Hinton como parte del contenido de su curso “Neural Networks for Machine Learning” de Coursera. Lo que propone esta versi´on es utilizar un learning rate adaptativo, es decir, otorgar un learning rate a cada par´ametro que es controlado por el learning rate global. El objetivo de esta modificaci´on es acelerar el aprendizaje de la red estableciendo learning rates m´as altos en par´ametros que necesiten mucho ajuste y tasas m´as bajas para aquellos par´ametros que son buenos [39, p. 477]. Adam (Adaptive Moment Estimation) [48]: esta versi´on se basa en una mezcla de SGD con momentum y RMSProp[39, p. 479]. 34 Jorge Barrio Conde
CAP´ ITULO 3. REDES NEURONALES 3.4.5. Overfitting y Underfitting El overfitting o sobreajuste en espa˜nol es un problema que afecta al aprendizaje de modelos de machine learning y hace menci´on a la incapacidad de generalizar el aprendizaje, es decir, las redes neuronales ajustan sus par´ametros para predecir exitosamente un conjunto de datos que ya conoce (conjunto de entrenamiento) pero son incapaces de generalizar este conocimiento a datos ajenos a este conjunto, obteniendo p´erdidas o costes mayores. Este problema ser´ıa an´alogo a un estudiante que memoriza un modelo de examen en lugar de aprender y adquirir los conocimientos de una materia. Figura 3.23: Comparativa de un modelo con underfitting, ajuste apropiado y overfitting sobre un problema de clasificaci´on [24] La Figura 3.23 modela de una forma gr´afica el problema del ajuste de un modelo. En dicho problema, el modelo ha de aprender a clasificar en dos categor´ıas las distintas entradas que se le suministran. La gr´afica de la izquierda muestra un modelo con underfitting o infrajuste en espa˜nol. Su frontera de decisi´on es lineal y pese a que quiz´as las predicciones no sean del todo malas, esta no se ajusta en absoluto al problema, por lo que obtendr´a precisiones bajas. Por el contrario, la gr´afica de la derecha muestra un modelo sobreajustado, el cual ofrece una frontera de decisi´on muy flexible y extremadamente adaptada al conjunto de datos que se le muestra. Por ello, el modelo predecir´a exitosamente todos estos casos. Sin embargo, si se suministran datos nuevos al modelo, la precisi´on del mismo caer´a debido a que dicha frontera de decisi´on no es generalizable y tan solo vale para ese conjunto de datos espec´ıfico. Por ´ultimo, la gr´afica central refleja un modelo bien ajustado, cuya soluci´on es capaz de modelar la clasificaci´on del problema, aprendiendo a clasificar los diversos datos en ambas categor´ıas pero sin ajustarse en exceso a los datos que se le muestran, de forma que, ante nuevas muestras, este modelo seguir´a devolviendo buenas predicciones. Pese a que el ejemplo expuesto se trata de un problema de clasificaci´on log´ıstica, el overfitting puede darse en multitud de modelos, siendo este, un problema muy com´un en muchos de los campos del machine learning, especialmente en el deep learning, ya que este conlleva modelos con una gran cantidad de par´ametros, lo que los hace tener m´as riesgo de overfitting. Jorge Barrio Conde 35
4.1. TELESCOPIO ESPACIAL HUBBLE Figura 4.1: Combinaci´on de im´agenes de Marte de los filtros azul, verde y rojo [61] La Figura 4.1 representa la combinaci´on de las im´agenes captadas por tres filtros correspondientes a los colores rojo (R), verde (G) y azul (B) para obtener una imagen en color de Marte. Figura 4.2: Filtros del Telescopio Espacial Hubble Fuente: Imagen editada a partir de “The Cluster Lensing and Supernova Survey with Hubble: An Overview” de ResearchGate [54]. La Figura 4.2 representa los diversos filtros sobre los que trabaja el Telescopio Espacial Hubble. El eje horizontal representa las diversas longitudes de onda (λ). La notaci´on que viene sobre cada filtro representa el ancho de banda (o Full Width Half Maximum, FWHM) y representa el rango de longitudes de onda que permite pasar el filtro. El eje vertical representa el throughput o rendimiento en espa˜nol. Este valor representa el porcentaje de luz que atraviesa el filtro respecto al total de luz incidente. Lo id´oneo ser´ıa un rendimiento del 100 % [61]. 42 Jorge Barrio Conde
CAP´ ITULO 4. ASTRONOM´ IA Las siglas ACS y WFC3 que aparecen sobre los filtros, en la parte superior de la imagen anterior (ver Figura 4.2), hacen referencia al sistema de c´amaras del Telescopio Espacial Hubble que abarca las diferentes longitudes de ondas. Este cuenta dos sistemas de c´amaras principales destinados a la captura de im´agenes del espacio. Por un lado, se encuentra el “Advanced Camera for Surveys” (ACS), instalado en el telescopio en 2002 y cuya funci´on es la de capturar im´agenes en el rango de longitudes de onda correspondientes a la luz visibles, aunque es capaz de alcanzar la luz infrarroja y ultravioleta cercana. El ACS posee tres c´amaras denominadas canales, cuyo fin es capturar diferentes tipos de im´agenes. Actualmente solo dos de los canales est´an operativos, despu´es de que en enero de 2007 se produjese un fallo electromagn´etico, dejando da˜nados los dos canales m´as utilizados, uno de los cueles fue reparado posteriormente en 2009. Por otro lado, se encuentra el “Wide Field Camera 3” (WFC3). Este sistema, instalado en 2009 a fin de complementar el sistema ACS, es capaz de capturar im´agenes, no solo en el espectro visible, sino tambi´en en el rango del espectro electromagn´etico correspondiente a la luz ultravioleta e infrarroja, donde desempe˜na mayormente su funci´on [60]. Figura 4.3: Instrumentos de captaci´on fotogr´afica del Telescopio Espacial Hubble [60] La Figura 4.3 muestra c´omo est´an distribuidas las dos c´amaras descritas, junto al resto de instrumentos del Hubble. Los dos paneles solares laterales permiten al Hubble cargar seis bater´ıas que posibilitan su auto-abastecimiento. Tiene unas dimensiones de 13,2 metros de largo y un di´ametro de 4,2 metros, dentro del cual contiene un espejo de 2,4 metros [18]. A trav´es de cinco misiones, se ha ido mejorando el telescopio Hubble gracias a nuevo instrumental y recambio de piezas, lo que ha hecho que el telescopio siga operativo en la actualidad tras m´as de 30 a˜nos desde su lanzamiento. Durante toda su historia, el Hubble ha llevado a cabo en torno a un mill´on y medio de observaciones, estimadas en m´as de 150 TB de informaci´on. Dichas observaciones han derivado en m´as de 18 mil papers con descubrimientos. Jorge Barrio Conde 43
4.2. CARTOGRAFIADO CANDELS Por todo ello, es innegable que el Telescopio Espacial Hubble ha supuesto un punto clave en el campo de la astrof´ısica, convirti´endose en uno de los proyectos m´as importantes y productivos de toda la ciencia [18][59]. Figura 4.4: Nebulosa del ´ Aguila captada por el HST en luz visible e infrarroja [59] 4.2. Cartografiado CANDELS CANDELS es el proyecto m´as grande del Telescopio Espacial Hubble. Sus siglas provienen de “Cosmic Assembly Near-infrared Deep Extragalactic Legacy Survey” [49] o Estudio del Legado Extragal´actico Profundo del Infrarrojo Cercano de la Asamblea C´osmica en espa˜nol. Dicho proyecto consisti´o en la observaci´on del universo temprano con el fin de analizar la evoluci´on de los agujeros negros y las galaxias. Para ello se utilizaron las dos c´amaras descritas anteriormente (ACS y WFC3) para captar las galaxias de cinco regiones del cielo: GOOD-N, GOOD-S, EGS, COSMOS y UDS. Dichas observaciones tardaron un total aproximado de 1450 horas [91]. La Figura 4.5 representa el campo ultraprofundo obtenido por el cartografiado CANDELS. Pese a que pueda parecer no tan impresionante como la fotograf´ıa de los Pilares de la Creaci´on de la Figura 4.4, realmente lo que representa si lo es. Este cartografiado contiene aproximadamente 30 mil galaxias, de las cuales, las m´as lejanas se encuentran a 13Gyr (gigayear), aproximadamente, siendo equivalente 1Gyr a 1000 millones de a˜nos. Teniendo en cuenta que la luz emitida por las galaxias ha tardado todos esos a˜nos en llegar hasta el Hubble y que la edad del universo se estima en unos 13,8Gyr, este cartografiado representa c´omo ha evolucionado el universo a lo largo de gran parte de su historia, permitiendo analizar las alteraciones aspectuales y estructurales que han experimentado las galaxias desde los tiempos m´as tempranos del universo [19]. 44 Jorge Barrio Conde
CAP´ ITULO 4. ASTRONOM´ IA Figura 4.5: Observaciones del cartografiado CANDELS [91] Las galaxias con colores m´as rojizos son las m´as antiguas y lejanas, puesto que seg´un se expande el universo, la longitud de onda de la luz que emitieron tambi´en lo hace, experimentando un estiramiento mediante el efecto llamado desplazamiento al rojo. A su vez, en dicho cartografiado se pueden encontrar puntos cuya luz se capta con forma de cruz. Estos puntos brillantes son estrellas de nuestra propia galaxia que se posicionan entre las galaxias lejanas y el Telescopio Espacial Hubble. En la Figura 4.5 se puede ver un ejemplo de estrella en la esquina superior izquierda [91]. La NASA public´o un v´ıdeo en el que hac´ıa un recorrido tridimensional por el campo UDS (Ultra Deep Survey) del cartografiado CANDELS [62]. La Figura 4.6 recoge una serie de galaxias pertenecientes al cartografiado CANDELS, entre las que se encuentra una galaxia muy lejana (ver Figura 4.6c) y una galaxia en la que una estrella interfiere y no deja captar toda su luz (ver Figura 4.6f). Ser´a este cartografiado el que se utilizar´a durante el desarrollo del proyecto. 4.3. Almacenamiento de datos T´ıpicamente, el almacenamiento, procesamiento e intercambio de datos astron´omicos como espectros electromagn´eticos o im´agenes (como es este caso), se realiza mediante ficheros con un formato est´andar abierto, denominado FITS. Dichas siglas provienen de Flexible Image Transport System o sistema flexible de transporte de im´agenes en espa˜nol. Los ficheros .fits est´an compuesto de una serie de HDU (Header Data Units), formados a su vez por una cabecera ASCII, legible para las personas, y un cuerpo de datos en binario [28]. Jorge Barrio Conde 45
4.3. ALMACENAMIENTO DE DATOS (a) Galaxia 4600 del campo GOOD-S (b) Galaxia 13677 del campo EGS (c) Galaxia 8396 del campo GOODS-S (d) Galaxia 23475 del campo GOODS-N (e) Galaxia 4064 del campo GOODS-N (f) Galaxia 16401 del campo UDS Figura 4.6: Ejemplos de galaxias del cartografiado CANDELS Fuente: elaboraci´on propia. 46 Jorge Barrio Conde
CAP´ ITULO 5. CONTEXTO TECNOL ´ OGICO Cap´ıtulo 5 Contexto tecnol´ogico 5.1. Redes Neuronales 5.1.1. Lenguaje de programaci´on Existen multitud de lenguajes de programaci´on utilizados en el campo del machine learning como R o Julia. Sin embargo, Python es sin lugar a duda el lenguaje m´as com´unmente utilizado y extendido en el campo del deep learning. Python es un lenguaje open source interpretado de alto nivel y multiparadigma. En 1991, Guido van Rossum, lanz´o su primera versi´on como un sucesor del lenguaje ABC. Se caracteriza principalmente por su sencillez y facilidad de aprendizaje. Gracias a la gran cantidad de m´odulos y bibliotecas con las que cuenta, el uso de Python se extiende a multitud de disciplinas y ´areas de desarrollo. Todas estas caracter´ısticas hacen de python un lenguaje muy presente en una infinidad de sistemas, desde los m´as peque˜nos hasta los m´as grandes como Youtube o Google [72]. Python cuenta con m´ultiples bibliotecas de diversas ´ındoles. Para este proyecto se van a utilizar principalmente scipy, astropy, numpy, Pandas y Matplotlib, entre otras. Tan solo con el lenguaje de programaci´on, es posible crear redes neuronales y entrenarlas, tal y como se hac´ıa con los primeros modelos. Esto supone tener que implementar los diversos algoritmos de aprendizaje y optimizaci´on, las propias redes neuronales, las funciones de activaci´on y coste, sus derivadas, etc., lo que lo convierte en un proceso muy lento y tedioso. Sin embargo, trabajar bajo este enfoque puede resultar interesante para comprender el funcionamiento de una red neuronal y los algoritmos que intervienen en su aprendizaje. A lo largo de los ´ultimos a˜nos, a fin de agilizar este proceso, surgieron las bibliotecas de diferenciaci´on autom´atica. Estas bibliotecas a˜naden un nivel de abstracci´on que hace m´as manejable y sencillo el desarrollo y entrenamiento de redes neuronales. Estas bibliotecas consisten b´asicamente en automatizar los algoritmos de entrenamiento y optimizaci´on, realiJorge Barrio Conde 47
5.1. REDES NEURONALES zando los c´alculos necesarios para entrenar cualquier modelo con el que se est´e trabajando en base a su grafo computacional. Entre las bibliotecas de diferenciaci´on autom´atica de python destacan PyTorch y TensorFlow [93]. 5.1.2. PyTorch PyTorch es una biblioteca open source de diferenciaci´on autom´atica desarrollada por el Facebook’s AI Research lab (FAIR) que est´a dedicada al aprendizaje autom´atico. PyTorch destaca por su accesibilidad y facilidad de uso a trav´es de la sencillez, tanto de su sintaxis como de su depuraci´on. A su vez, cuenta con una API optimizada. PyTorch trabaja con tensores, un tipo de datos que consiste en una matriz multidimensionales que alberga n´umeros, vectores o matrices, semejantes a las matrices de la biblioteca NumPy. A diferencia de NumPy, sus tensores cuentan con operaciones matem´aticas optimizadas y aceleradas a trav´es de las unidades de procesamiento gr´afico o GPU. Esta aceleraci´on, produce aumentos de velocidades de procesamiento en un rango de 50 veces superiores que utilizando la unidad central de procesamiento o CPU [86]. Todo ello hace de esta biblioteca de Python, una gran opci´on para introducirse en el aprendizaje autom´atico, as´ı como desarrollar proyectos profesionales de alto nivel. Sin embargo, PyTorch cuenta con multitud de alternativas. Su claro rival es Tensorflow, biblioteca desarrollada por Google. Figura 5.1: B´usquedas en Google de TensorFlow frente a PyTorch en todo el mundo desde el 25/05/2019 2019 hasta el 25/05/2021 Fuente: elaboraci´on propia a partir los datos de Google Trends [27]. 48 Jorge Barrio Conde
CAP´ ITULO 5. CONTEXTO TECNOL ´ OGICO Analizando la popularidad en todo el mundo de ambas tecnolog´ıas seg´un muestra Google Trends para los dos ´ultimos a˜nos (ver Figura 5.1), se puede ver c´omo la popularidad de TensorFlow era extremadamente alta pero ha ido aminorando con el tiempo. Sin embargo, PyTorch ha experimentado una tendencia positiva, ganando poco a poco m´as popularidad. El eje vertical de dicho gr´afico representa la popularidad, donde un valor 100, refleja la m´axima popularidad [27]. 5.1.3. fastai La raz´on principal y de mayor peso por la que se decidi´o desarrollar este proyecto con PyTorch, adem´as de por la ventajas vistas anteriormente, es por fastai, una biblioteca de deep learning que aplica un nivel de abstracci´on sobre PyTorch. Esta biblioteca fue lanzada en 2018 por el grupo de investigaci´on fast.ai, fundado sin ´animo de lucro en 2016 por Jeremy Howard (ex presidente de Kaggle) y la doctora en matem´aticas Raquel Thomas [22]. Esta biblioteca ofrece componentes de distintos niveles de abstracci´on, permitiendo obtener resultados de una forma muy r´apida y sencilla gracias a los componentes de m´as alto nivel o desarrollar opciones m´as personalizadas a trav´es de la combinaci´on de los componentes de menor nivel [20]. El objetivo principal de esta biblioteca es la accesibilidad, es decir, permitir la realizaci´on de proyectos de deep learning sin la necesidad de unos conocimientos muy amplios sobre dicha disciplina. Por ello, esta biblioteca destaca principalmente por su sencillez, productividad, rendimiento y flexibilidad. El grupo fast.ai ofrece un curso masivo gratuito online (Massive Open Online Course, MOOC) llamado “Practical Deep Learning for Coders” (o aprendizaje profundo pr´actico para desarrolladores en espa˜nol) [38] que est´a impartido por Jeremy Howard y Sylvain Gugger y cuyo ´unico requisito previo es conocer Python [20]. Este curso, dividido en dos partes de siete lecciones, se basa en el contenido del libro de fastai o “fastbook” [37]. Este libro es un libro interactivo que est´a dividido en jupyter notebooks en el que el lector puede ejecutar las diversas celdas de c´odigo seg´un va aprendiendo. Este libro se encuentra en github y es de acceso gratuito. Los autores tambi´en ofrecen una versi´on del libro con formato de documento. El eslogan del curso es “AI Applications Without a PhD”, lo que se traduce como la posibilidad que ofrece fastai para crear aplicaciones de inteligencia artificial sin la necesidad de tener un nivel de doctorado. Adem´as de esto, fastai cuenta con una extensa documentaci´on y una comunidad activa muy grande. Para el desarrollo del proyecto se va a utilizar la versi´on 2 del software, una versi´on donde se reescribe por completo su versi´on antecesora, haci´endola una tecnolog´ıa m´as r´apida, f´acil y flexible [22]. Jorge Barrio Conde 49
5.2. ASTROINFORM ´ ATICA 5.2. Astroinform´atica Para la visualizaci´on, manipulaci´on y procesamiento de los datos astron´omicos del Hubble, se ha requerido el uso de software especializado. A lo largo de esta secci´on se describir´an los programas astroinform´aticos que se han utilizado durante el desarrollo del proyecto. 5.2.1. SAOImage DS9 SAOImage DS9 es un software destinado a la Visualizaci´on de im´agenes astron´omicas, permitiendo el soporte de im´agenes con formato FITS y tablas binarias, mapas de color, manipulaci´on de regiones, etc. Las primeras versiones de este, datan del a˜no 1999 y ha ido ganando popularidad con los a˜nos. DS9 posee un GUI (Graphical User Interface o interfaz gr´afica de usuario) con una amplia variedad de funcionalidades disponibles [9]. 5.2.2. SExtractor Source-Extractor, com´unmente conocido como SExtractor, es un software astron´omico encargado de generar un cat´alogo con los objetos detectados en una imagen astron´omica. Est´a dise˜nado principalmente para reducir el volumen de datos a estudiar de galaxias sobre im´agenes a gran escala, sin embargo, tambi´en puede trabajar bien sobre campos de estrellas no especialmente densos. Estos cat´alogos de salida son flexibles y se puede especificar que par´ametros se desean obtener de cada objeto. SExtractor soporta FITS de m´ultiples extensiones, permitiendo trabajar con im´agenes muy grandes. Todo ello optimizado para trabajar a velocidades altas [81]. 5.2.3. Topcat Topcat es un software astron´omico dedicado a la visualizaci´on y procesamiento de datos tabulares de una forma gr´afica e interactiva. Pese a que est´a especialmente dise˜nado para datos astron´omicos, su uso se puede extender a datos normales, siendo especialmente ´util y r´apido para hacer gr´aficas de tablas de grandes dimensiones. Entre los formatos de ficheros astron´omicos soportados est´a FITS, VOTable (Virtual Observatory Table) y CDF, aunque permite incluir m´as. Al seguir los est´andares del Virtual Observatory (VO) o Observatorio Virtual en espa˜nol, tiene una gran compatibilidad con cualquier servicio, herramientas y datos que pertenezcan o sigan los est´andares del Observatorio virtual [88]. 5.2.4. Aladin Aladin es un software semejante a SAOImage DS9, ya que est´a dise˜nado para la visualizaci´on de im´agenes astron´omicas. Este software se define como un atlas de cielo interactivo. 50 Jorge Barrio Conde
CAP´ ITULO 5. CONTEXTO TECNOL ´ OGICO Este software tambi´en sigue los est´andares del Virtual Observatory, lo que le otorga una gran compatibilidad con otras herramientas, pudiendo conectarse con Topcat. Cuenta una versi´on de navegador llamada Aladin Lite la cual permite una visualizaci´on simple de las regiones del cielo. A su vez, cuenta con una versi´on de escritorio mucho m´as completa, llamada Aladin Desktop, que fue creada por el Centre de Donn´ees astronomiques de Strasbourg en 1999 utilizando el lenguaje de programaci´on Java. Esta versi´on permite al usuario acceder e interactuar tanto con datos que este posea en local como datos recogidos en gran parte de los servidores astron´omicos de todo el mundo. [11]. 5.3. Otras tecnolog´ıas 5.3.1. Sistema operativo En cuanto al sistema operativo, hay diversas opciones a elegir. Para el desarrollo del proyecto se ha escogido Linux como sistema operativo. Linux es una sistema operativo open source creado por Linus Torvalds en 1991 como una alternativa gratuita de sistema operativo. En la actualidad, linux se ha convertido en el sistema operativo m´as utilizado en servidores y supercomputadoras, que cuenta con una gran comunidad [30]. Por su gratuidad, rendimiento, seguridad y filosof´ıa open source, se ha convertido en mi sistema operativo de trabajo principal y, por consiguiente, el sistema m´as indicado para desarrollar el proyecto. Para ser m´as exactos, se va a utilizar la distribuci´on de Ubuntu en su versi´on n´umero 20. 5.3.2. Jupyter Notebook Jupyter Notebook est´a desarrollado por el Jupyter Project, una organizaci´on sin ´animo de lucro creada en 2014 que desarrolla software de c´odigo abierto, est´andares y servicios. Este software consiste en una aplicaci´on web cliente-servidor basada en un documento interactivo, el cual permite incluir c´odigo, texto formateado a trav´es de Markdown, ecuaciones en notaci´on de LaTex, ficheros multimedia como im´agenes o v´ıdeos, entre otros. Estos cuadernos permiten multitud de lenguajes entre los que se encuentran Python y R. Estos pueden ser una forma muy buena de compartir c´odigo entre varias personas debido a su gran facilidad de compartici´on. Las ejecuciones de los distintos fragmentos de c´odigo pueden generar salidas interactivas [71]. Los cuadernos Jupyter pueden servir como un registro del c´omputo completo de una sesi´on, que contienen el desarrollo, la documentaci´on, ejecuci´on de c´odigo y los resultados de las ejecuciones. Estos cuadernos se guardan en ficheros con extensi´on .ipdb y cuyo contenido tiene un formato JSON. El entorno de Jupyter, por lo general, se despliega en la m´aquina local, pudiendo acceder al servicio en un navegador a trav´es de la direcci´on y puerto local en el que se haya desplegado el servidor (normalmente est´a en Jorge Barrio Conde 51
6.4. DESCRIPCI ´ ON DE LOS EXPERIMENTOS El resultado final de todo este preprocesamiento da lugar a 3460 im´agenes RGB del mismo tama˜no que los ficheros .fits originales (200x200 p´ıxeles), que est´an almacenadas como ficheros .png. En el nombre de estos ficheros .png viene codificada la informaci´on principal de cada muestra, de forma que se puedan auto identificar. Dichos nombres siguen la siguiente estructura: <morfolog´ıa> <identificador de galaxia> <campo candels>.png. Por ello, de la figura anterior (ver Figura 6.3), se puede saber tan solo con su nombre, que se trata de la galaxia 649 del campo GOODS-N y su clase morfol´ogica seg´un la interpretaci´on del paper de Huertas-Company et al. (2015) es DISK. 6.4. Descripci´on de los experimentos Para ambos enfoques se van a realizar una serie de experimentos en los que, a partir de un primer sistema base de partida, se ir´an haciendo diferentes pruebas analizando distintas modificaciones sobre la construcci´on del modelo y su entrenamiento, a fin de ir mejorando la precisi´on de este. Durante cada experimento, solo se modificar´a lo que se quiera estudiar, manteniendo est´aticas todas las posible variaci´on que afecten al modelo. De esta forma todos los casos de cada experimento trabajar´an sobre el mismo escenario. Adem´as, para realizar los experimentos y poder obtener resultados replicables, se ha buscado que todo factor externo a la experimentaci´on sea lo m´as invariante posible. Para ello, se aplica una semilla aleatoria que, como se explicar´a m´as adelante, proveer´a la misma secuencia aleatoria para los distintos casos de prueba, de forma que estos trabajen sobre los mismos conjuntos de entrenamiento y validaci´on. Al final de cada experimento, una vez obtenidas las conclusiones y evaluadas las mejoras, se explicar´a qu´e cambios se mantendr´an para el sistema del siguiente experimento, con el objetivo de finalizar con la mayor precisi´on posible. 6.5. Enfoque de regresi´on 6.5.1. Implementaci´on de la soluci´on Puesto que el desarrollo del proyecto se va a realizar utilizando Google Colab, lo primero que ser´a necesario hacer es instalar las dependencias correspondientes. Pese a que Google Colab cuenta con fastai, ser´a necesario actualizar la biblioteca de su versi´on 1 (1.0.61) a su versi´on 2 (2.3.1) e instalar la biblioteca fastbook. Para ello, se ha ejecuta la siguiente celda de c´odigo (ver Fragmento de c´odigo 6.2). !pip install -Uqq fastbook import fastbook fastbook . setup_book () Listing 6.2: Instalaci´on de fastai y fastbook en Google Colab [37] 58 Jorge Barrio Conde
CAP´ ITULO 6. CLASIFICACI ´ ON MORFOL ´ OGICA DE GALAXIAS El signo de exclamaci´on del c´odigo anterior (ver Fragmento de c´odigo 6.2) sirve para ejecutar funciones del sistema. Es muy probable que la ejecuci´on de dicha celda requiera al usuario introducir un c´odigo de autorizaci´on que se obtiene a partir de un enlace que se muestra en el propio resultado de la celda. Una vez instaladas las dependencias, se importan los m´odulos necesarios de las mismas. Tal y como se puede ver en el siguiente c´odigo (ver Fragmento de c´odigo 6.3), para este proyecto se han necesitados todos los m´odulos de fastbook y los relativos a la visi´on por ordenador de fastai. Las versiones que se han utilizado de estas bibliotecas son: fastai 2.3.1 yfastbook 0.0.16. from fastai.vision.all import * from fastbook import * Listing 6.3: Importaci´on de m´odulos de fastbook y fastai [37] Seguidamente, se han declarado los paths o rutas con las que se van a trabajar a lo largo del notebook. En este caso se han declarado tres paths. El primero de ellos indica la ubicaci´on del fichero .cat que posee toda la informaci´on referente a cada galaxia (cat file path). El segundo especifica la ruta del directorio que contiene las im´agenes del dataset (png files path). Por ´ultimo, se especifica d´onde se quiere localizar el fichero .csv con los resultados de cada ´epoca del entrenamiento (csv results path). De esta forma, se consigue un c´odigo m´as legible y f´acil de reubicar, ya que tan solo hay un punto en todo el c´odigo en el que habr´ıa que modificar las rutas. A continuaci´on, se lee y procesa el fichero .cat que contiene toda la informaci´on de las galaxias. A partir de estos datos se crea un diccionario bautizado como galaxies fs, cuyas claves son los nombres de los ficheros de las im´agenes y sus valores son arrays compuestos por los 5 n´umeros de la regresi´on en punto flotante, tal y como se describe en el Fragmento de c´odigo 6.4. Un diccionario es una estructura de datos de Python compuesta por un conjunto de claves-valor en el que cada clave tiene tan solo un ´unico valor. A diferencia de otras estructuras de datos que se indexan por un n´umero asociado a su posici´on, esta se indexa por las claves [72]. { morph_id_field .png : [f_sph , f_disk , f_irr , f_ps , f_unc ] } Listing 6.4: Estructura del diccionario que posee la informaci´on necesaria para la regresi´on Posteriormente, se crea el objeto DataBlock y se definen todas las funciones necesarias para su instanciaci´on. Un DataBlock busca encapsular, a modo de bloque o contenedor, la informaci´on necesaria para construir objetos Datasets oDataLoaders de una forma r´apida. La informaci´on que recoge el objeto DataBlock va referida a la forma de obtener los datos de entrada, su naturaleza, c´omo est´an etiquetados, c´omo van a ser divididos entre el conjunto de entrenamiento y el de validaci´on o qu´e transformaciones se van a aplicar, bien a cada elemento o cada batch, entre otras configuraciones [20]. Jorge Barrio Conde 59
6.5. ENFOQUE DE REGRESI ´ ON blocks = DataBlock ( blocks =( ImageBlock , RegressionBlock ) , get_items = get_image_files , get_y = get_y , splitter = RandomSplitter ( valid_pct =0.2 , seed =42) , batch_tfms = tfms ) Listing 6.5: DataBlock creado para los experimentos de regresi´on Tal y como se puede observar en el c´odigo anterior (ver Fragmento de c´odigo 6.5), lo primero que se especifica en el DataBlock es el argumento blocks, una tupla que contiene el tipo de lo que llaman variables independientes y dependientes. Las variables independientes, tambi´en conocidas con la letra “x”, son aquellas que se van a usar para llevar a cabo las predicciones, sin embargo, las dependientes, denominadas tambi´en por la letra “y”, son el objetivo de dichas predicciones. Para definir estos tipos de variables se utilizan objetos de tipo TransformBlock. A continuaci´on, se van a enumerar y explicar los tres tipos b´asicos de TransformBlock, seguidos de otros cinco tipos con los que cuenta la aplicaci´on de visi´on por ordenador de fastai [20]: CategoryBlock: bloque que representa las categor´ıas de una clasificaci´on de una ´unica etiqueta por input de datos. MultiCategoryBlock: bloque para las categor´ıas de las clasificaciones multicategor´ıa, es decir, m´as de una etiquetas por input. RegressionBlock: bloque dise˜nado para los n´umeros en punto flotante de una regresi´on. ImageBlock: tipo de bloque creado para representar im´agenes. MaskBlock: bloque ideado para m´ascaras de segmentaci´on. Un problema de segmentaci´on es aquel cuyo fin es predecir la clase correspondiente de cada p´ıxel de una imagen de entrada. PointBlock: tipo de TransformBlock para problemas de predicci´on de puntos situados en una imagen. Transforman los puntos en valores entre −1 y 1 que representan coordenadas sobre la imagen. BBoxBlock: bloque que representa cuadros delimitadores en una imagen. Un ejemplo de aplicaci´on es una tarea de detecci´on de objetos a partir de una imagen. BBoxLblBlock: lo ´unico que lo diferencia de un BBoxBlock es que en este caso los cuadros est´an etiquetados. Teniendo esto en cuenta y puesto que las variables independientes representan im´agenes, se definir´an como ImageBlock. Por otro lado, las variables dependientes al tratarse de n´umeros en punto flotante sobre los que se desea hacer una regresi´on, se definir´an como RegressionBlock. 60 Jorge Barrio Conde
CAP´ ITULO 6. CLASIFICACI ´ ON MORFOL ´ OGICA DE GALAXIAS Seguido a esto, se define la forma en la que se obtienen tanto las variables independientes como las dependientes. Para ello es necesario especificar unos getters que trabajar´an sobre una lista de elementos. Para especificar la forma de obtenci´on de esta lista, existe el argumento get items. Para este problema se ha utilizado la funci´on de fastai “get image files”, encargada de retornar una lista con el path de cada una de las im´agenes existentes en directorio que se le especifique. Una vez obtenida la lista de elementos con los que se va a trabajar, se pueden definir los getters que determinar´an c´omo obtener ambas variables de la lista. Para obtener las variables independientes, existe el argumento get x. En este caso, como la lista contiene la ruta de cada imagen, no es necesario especificar una funci´on para get x. En cuanto a las variables dependientes, el DataBlock posee un argumento get y para ello. En este caso, se ha definido una funci´on get y(source), encargada de procesar la ruta de cada imagen y consultar los valores de la regresi´on en el diccionario galaxies fs, creado anteriormente [20][21]. Lo siguiente que se especifica es la forma en la que se va a dividir el conjunto total de datos en los datasets de entrenamiento y validaci´on. Para ello se ha indicado en el argumento “splitter” el uso de la funci´on RandomSplitter, encargada de separar aleatoriamente todos los elementos en los dos datasets, en base al porcentaje de datos que se le diga que se desea destinar al conjunto de validaci´on (un 20 % en este caso). A su vez, se ha especificado un segundo argumento denominado seed. Este permite establecer a la generaci´on aleatoria, una semilla o “seed” en ingl´es, de forma que la secuencia aleatoria que se genere durante la ejecuci´on del notebook sea siempre la misma. Gracias a esto, se consigue esa invariabilidad que se comentaba anteriormente. Algo que se detect´o durante el desarrollo de la soluci´on es la necesidad de importar la biblioteca fastbook para que los resultados puedan ser replicables, es decir, que se obtengan los mismos valores aunque se reinicie el entorno de ejecuci´on. Finalmente se introduce en el argumento batch tfms, las transformaciones que se desean aplicar a cada batch. Alternativamente a batch tfms, existe item tfms para aplicar transformaciones sobre cada entrada. La diferencia entre ambos argumentos es que item tfms realiza las transformaciones necesarias previas a crear los batches. Al aplicar estas transformaciones antes de cargar las im´agenes, estas se realizar´an en la CPU. Por el contrario, batch tfms realiza las transformaciones sobre cada batch completo tras ser cargado. Por tanto, estas transformaciones se realizan en la GPU, aprovechando la aceleraci´on que supone su poder de c´omputo. L´ogicamente, ser´a m´as conveniente aplicar las transformaciones sobre la GPU. Si se ejecuta DataBlock.item tfms, se puede observar que pese a que no se ha incluido ninguna transformaci´on en item tfms, devuelve una transformaci´on llamada ToTensor. Esta transformaci´on es necesaria para transformar los datos de entrada (im´agenes y listas de valores de regresi´on en este caso) a tensores. Igualmente, si se ejecuta DataBlock.batch tfms, devolver´a una transformaci´on llamada IntToFloatTensor, precediendo a las transformaciones que se a˜nadan en dicho argumento del DataBlock. La transformaci´on IntToFloatTensor se encarga de transformar los los valores tipo int de los tensores a tipo float puesto que las transformaciones de datos en fastai requieren tensores punto flotantes en la GPU [20]. A partir del DataBlock instanciado, se genera un objeto DataLoaders, encargado de preparar los datos para entrenar la red. Este objeto no es m´as que un contenedor de dos objetos DataLoader, uno para el conjunto de entrenamiento y otro para el conjunto de validaci´on. Estos objetos de tipo DataLoader, se encargan de iterar sobre un Dataset concreto, Jorge Barrio Conde 61
6.5. ENFOQUE DE REGRESI ´ ON suministrando mini-batches en forma de tuplas, formadas por un conjunto de variables independientes y dependientes [39, p. 222]. Para instanciarlo hay que especificar un campo source o fuente. En este caso, se ha indicado la ruta en la que se encuentran las im´agenes y, gracias a este campo, el argumento get items del DataBlock que se explic´o anteriormente, podr´a obtener la lista de im´agenes de dicho directorio. Por ´ultimo, se crea el Learner, un objeto encargado de agrupar el modelo, los DataLoaders y la funci´on de p´erdida para llevar a cabo el entrenamiento. En este caso se va a usar cnn learner, un m´etodo definido en el m´odulo de visi´on de fastai y que est´a enfocado al transfer learning. learn = cnn_learner ( dls, resnetXX , metrics = rmse , loss_func = loss_func , cbs = [ ShowGraphCallback(), CSVLogger ( fname = csv_results_path , append = true ) ] ) Listing 6.6: Creaci´on del Learner con la funci´on cnn learner En el fragmento de c´odigo 6.6 se ve como para crear el objeto Learner, se le pasa a la funci´on cnn learner el objeto DataLoaders y el modelo preentrenado que se quiere utilizar. Entre otras muchas configuraciones, este m´etodo permite seleccionar el optimizador que se desee aplicar al entrenamiento. Si no se especifica ninguno, se establecer´a por defecto “Adam” [20]. Para obtener una gr´afica de las p´erdidas durante el entrenamiento, se ha utilizado un callback de fastai llamado ShowGraphCallback(). Esta funci´on muestra una gr´afica cuyo eje vertical representa el valor del coste y su eje horizontal, simboliza el n´umero de batches que pasaron por el learner. Puesto que hablar de n´umero de batches es algo complejo y poco intuitivo, se ha decidido a˜nadir un nuevo callback al argumento cbs, conocido como CSVLogger. Este permite exportar los datos del entrenamiento a un fichero .csv que, utilizando una hoja de c´alculo como Excel, permite obtener gr´aficas con mayor flexibilidad. Estas gr´aficas ser´an las que se expondr´an a lo largo del documento [20]. En cuanto al funcionamiento de cnn learner(), al ejecutar dicha funci´on con un modelo preentrenado, fastai realiza la descarga de los pesos preentrenados. Una vez descargados, como ya se explic´o en la secci´on te´orica de transfer learning (ver Secci´on 3.4.8), para aplicar esta t´ecnica, hay que remplazar la ´ultima capa de la red puesto que est´a preparada para categorizar ImageNet. Para determinar el punto en el que realizar dicho corte para remplazar las sucesivas capas, existe una funci´on llamada model meta que indica d´onde finaliza el cuerpo de la red y d´onde comienza la cabeza. Se denomina cabeza de la red a la parte que es espec´ıfica de una tarea en concreto y, por lo general, no se puede generalizar a otros problemas. El retorno de esta funci´on ser´a un json con tres claves: “cut”, “split” y “stats”, siendo el primero el que indica el punto de corte. En este caso, para el modelo preentrenado ResNet34, el punto de corte se encuentra en “−2”. A partir de este punto, se crea la nueva 62 Jorge Barrio Conde
CAP´ ITULO 6. CLASIFICACI ´ ON MORFOL ´ OGICA DE GALAXIAS cabeza utilizando la funci´on create head. En dicha funci´on se puede especificar el n´umero de capas lineales que se quieren a˜nadir al final, cuanto dropout usar despu´es de cada una de ellas y que tipo de pooling usar. Sin embargo, fastai, por defecto, aplica tanto average pooling como max pooling, agrupadas en una capa conocida como AdaptiveConcatPool2d. La raz´on por la que fastai combina estos dos tipos de pooling, se debe a una peque˜na mejora que se obtiene sobre utilizar solo average pooling. En cuanto al n´umero de capas lineales adicionales, fastai opta por introducir dos capas en lugar de una (enfoque t´ıpico) debido a que descubrieron que dos capas lineales adicionales hac´ıan que el transfer learning fuese m´as sencillo y r´apido. Otra funci´on que se usa en visi´on por ordenador es unet learner, destinada a tareas de segmentaci´on, donde la salida es una nueva imagen que posee una etiqueta predicha para cada p´ıxel. No solo se usa para tareas de segmentaci´on, sino para cualquier tarea cuyo resultado sea una nueva imagen, como por ejemplo convertir una imagen de blanco y negro a color o mejorar la resoluci´on de una imagen [39, Cap. 15]. En cuanto al entrenamiento, fastai cuenta con diversas funciones para entrenar. De entre todas ellas, se ha decidido utilizar la funci´on fine tune. Esta funci´on, a diferencia de otras como fit, est´a dise˜nada de tal forma que si se aplica sobre un modelo preentrando, mantendr´a y mejorar´a estos par´ametros previamente entrenados. Para ello, entrena una primera ´epoca congelando las capas ya entrenadas, de forma que solo se ajusten los par´ametros aleatorios de las nuevas capas creadas por el cnn learner al conjunto de datos del problema. Una vez finalizada esta primera ´epoca, descongela por completo la red y comienza a entrenar toda la red con el n´umero de ´epocas seleccionado. Pese a que este es el comportamiento por defecto, posee cierta flexibilidad que permite personalizarlo. Si se quisiera entrenar una red neuronal desde cero, lo m´as com´un es utilizar la funci´on de fastai fit one cycle. Sin embargo, fine tune tambi´en se puede utilizar en dichos casos, pudiendo llegar a obtener mejores resultados en funci´on del conjunto de datos con el que se est´e trabajando [39, p. 46-47]. En fine tune se puede fijar el learning rate base, entre otros par´ametros. Respecto a este learning rate, hay que saber que fine tune implementa una pol´ıtica de un ciclo. En 2018, Leslie Smith, public´o “Super-Convergence: Very Fast Training of Neural Networks Using Large Learning Rates” [84]. En dicho art´ıculo plante´o un entrenamiento en dos fases conocido como entrenamiento de un ciclo. En la primera fase, a modo de calentamiento, el learning rate se va incrementando gradualmente desde un valor m´ınimo a uno m´aximo. Por el contrario, la segunda fase es la acci´on inversa, se reduce el learning rate desde el valor m´aximo hasta devolverlo a su valor inicial, a modo de enfriamiento. La raz´on en la que se sustenta esta teor´ıa es que en las primeras ´epocas del entrenamiento, la red posee unos pesos que, muy probablemente, no se ajusten muy bien al problema que se est´a resolviendo. Por ello, entrenar estas primeras ´epocas con un learning rate alto, podr´ıa provocar una divergencia instant´anea. Por otro lado, tampoco es conveniente procesar las ´ultimas ´epocas del entrenamiento con un learning rate alto, ya que se podr´ıa estar saltando un m´ınimo de la funci´on de coste. Sin embargo, durante el resto del entrenamiento, el learning rate puede ser mayor. Esto provocar´ıa que el entrenamiento se agilizase y que se saltasen los m´ınimos locales menos profundo, de forma que la red se sobreajustase menos. Esta pol´ıtica consigue entrenar con learning rates m´as altos que cualquier otra metodolog´ıa, permitiendo Jorge Barrio Conde 63
6.5. ENFOQUE DE REGRESI ´ ON conseguir modelos m´as precisos en menores tiempos. Leslie denomina a esta caracter´ıstica como “superconvergencia” [39, p. 430-431]. 6.5.2. M´etrica y funci´on de coste En cuanto a la elecci´on de la funci´on de coste, esta ha de hacerse teniendo en cuenta el problema que se est´e abordando. Una vez m´as, fastai cuenta con una funcionalidad que automatizar´a esta elecci´on, determinando la mejor opci´on seg´un la especificaci´on del DataBlock. Sin embargo, es posible escoger manualmente cu´al es la funci´on de coste que se desea utilizar. En este caso, al tratarse de una regresi´on, fastai determina que la mejor opci´on es el error cuadr´atico medio. M´as concretamente, fastai usar´a por defecto la funci´on MSELossFlat, una versi´on de nn.MSELoss que aplana tanto la entrada como el objetivo [20]. Para comprobar la elecci´on tomada por fastai, una vez que se crean los DataLoaders a partir del DataBlock, se ejecuta la funci´on DataLoaders.loss func [20]. La respuesta que devuelve en esta ocasi´on es “FlattenedLoss of MSELoss()”. Siguiendo estas indicaciones, inicialmente se va a utilizar la funci´on MSELossFlat como funci´on de coste. Al igual que existe una funci´on de coste para que el ordenador pueda evaluar el rendimiento del modelo, buscando optimizar dicha funci´on, existen las m´etricas, una medida para la interpretaci´on humana con la que se puede evaluar la precisi´on que tiene el modelo entrenado. En problemas de regresi´on es muy t´ıpico encontrar m´etricas como la ra´ız del error cuadr´atico medio (RMSE, Root Mean Squared Error) o el error absoluto medio porcentual (MAPE, Mean Absolute Percentage Error) [80]. Finalmente, la m´etrica escogida para este problema ha sido RMSE. Adem´as de su popularidad, la raz´on principal de dicha elecci´on es que tanto el paper de Huertas-Company et al. (2015) como el de Dieleman et al. (2015) trabajan y expresan los resultados con dicha m´etrica. La Ecuaci´on 6.1 describe la expresi´on matem´atica de esta m´etrica. RMSE =v u u t 1 n n X i=1 (ˆyi−yi)2(6.1) 6.5.3. Sistema base A fin de experimentar y probar todo el potencial del transfer learning, se ha decidido optar por un modelo preentrenado de ResNet como sistema base de partida. Pese a que existan otras opciones de modelos preentrenados como los modelos DenseNet, los modelos de ResNet son los que mejores precisiones obtienen. Estas redes han sido entrenadas previamente con ImageNet, una base de datos con multitud de im´agenes cuyo acceso es libre bajo uso no comercial. ImageNet ha resultado clave en muchos de los avances de la investigaci´on del deep learning en el campo de la visi´on por ordenador.[50]. Existen cinco variantes de ResNet: 18, 34, 50, 101 y 152. Estos n´umeros hacen referencia al n´umero de capas de cada variante [39, p. 30]. Teniendo en cuenta que a medida que se 64 Jorge Barrio Conde
CAP´ ITULO 6. CLASIFICACI ´ ON MORFOL ´ OGICA DE GALAXIAS incrementa la profundidad de la red, el coste computacional requerido a la GPU tambi´en incrementar´a debido al aumento de par´ametros a entrenar, se ha escogido la versi´on 34 de ResNet, una versi´on intermedia que ofrece buenos resultados y sin suponer una gran carga computacional. A modo de breve explicaci´on, la arquitectura ResNet consiste en una arquitectura de redes neuronales convolucionales que fue introducida en 2015 a trav´es del art´ıculo “Deep Residual Learning for Image Recognition” [33] cuya autor´ıa pertenece a Kaiming He, Xiangyu Zhang, Shaoqing Ren y Jian Sun, cuatro investigadores de la compa˜n´ıa Microsoft. Su nombre procede de “Residual Network” o red residual en espa˜nol. En la actualidad, la arquitectura ResNet se ha convertido en la m´as utilizada para problemas de visi´on por ordenador [39, Cap. 14]. Realizando algunas pruebas previas, se ha determinado un n´umero de 30 ´epocas para los entrenamiento. La raz´on principal es que a partir de la decimoquinta ´epoca, las p´erdidas y la m´etrica se reduce de forma casi inapreciable. Figura 6.4: Costes del conjunto de entrenamiento y validaci´on del sistema base La imagen anterior (ver Figura 6.4), muestra las p´erdidas obtenidas con la funci´on MSELossFlat para el conjunto de entrenamiento y el de validaci´on durante las 30 ´epocas del entrenamiento del sistema base. Esta gr´afica muestra c´omo en la primera mitad del entrenamiento, los pesos mejoran a buen ritmo. Al sobrepasar la ´epoca n´umero 15, los pesos contin´uan descendiendo pero con de forma casi imperceptible. La m´etrica final obtenida con este modelo es de un RMSE de 0,149. 6.5.4. Funci´on de coste RMSE con Label Smoothing Para observar c´omo afecta la elecci´on de la funci´on de coste sobre el entrenamiento del modelo, se va a entrenar de igual forma el sistema base de antes con la funci´on RMSE como funci´on de coste. Jorge Barrio Conde 65
6.5. ENFOQUE DE REGRESI ´ ON Figura 6.5: Precisi´on RMSE del modelo seg´un la funci´on de coste escogida Seg´un se puede ver en la imagen anterior (ver Figura 6.5), la diferencia entre las m´etricas obtenidas por ambas funciones de coste es m´ınima. Sin embargo, RMSELoss obtiene resultados ligeramente superiores, reduciendo la m´etrica de un RMSE final de 0,149 a 0,142. Figura 6.6: P´erdidas del conjunto de entrenamiento y validaci´on con RMSELoss Algo que s´ı se puede distinguir entre ambos casos, es una ligera superposici´on de la p´erdida del conjunto de validaci´on sobre el de entrenamiento, que surge en la ´epoca n´umero 19 al utilizar como funci´on de coste RMSE (ver Figura 6.6). Sin embargo, pese a que esto podr´ıa reflejar un potencial overfitting, como se ha visto en la m´etrica, esto no afecta en absoluto a la precisi´on final del modelo. Debido a que que no hay una diferencia notoria, se continuar´a utilizando RMSELoss. Sin embargo, no se va a utilizar la funci´on tal cual se encuentra, sino una modificaci´on de esta. Como ya se coment´o en la presentaci´on del problema (ver Secci´on 6.1), los valores que se busca 66 Jorge Barrio Conde
CAP´ ITULO 6. CLASIFICACI ´ ON MORFOL ´ OGICA DE GALAXIAS que el modelo prediga, proceden de decisiones y evaluaciones subjetivas. Por esta raz´on y a fin de evitar que el modelo se sobreajuste a dichos valores, se va a aplicar un ruido aleatorio de un 10 %, es decir, una variaci´on de ±0,05 a los valores objetivo. Para ello se ha creado la funci´on rmse label smoothing(preds, targs), encargada de aplicar dicha variaci´on sobre los valores “targets” u objetivos en espa˜nol (ver Fragmento de c´odigo 6.7). def rmse_label_smoothing(preds, targs): targs += ( torch . rand ( targs . size (1) , device = ’cuda ’) -0.5) *0.1 return (( preds - targs ) **2) . mean () .sqrt () # rmse Listing 6.7: Funci´on de coste RMSE con label smoothing Se ha ejecutado nuevamente el entrenamiento con esta nueva funci´on. Puesto que los resultados obtenidos son extremadamente semejantes a los obtenidos con RMSELoss, se ha decidido no incluir ning´un gr´afico de los resultados de esta configuraci´on. 6.5.5. Indicar el rango de las predicciones al modelo Investigando en la documentaci´on y en el libro de fastai, se encontr´o una forma para indicar al modelo cu´al va a ser el rango de valores de las predicciones. El cnn learner posee un argumento llamado y range destinado a esto. Para ello, a˜nade a la ´ultima capa un SigmoidRange, un m´odulo sigmoide que contiene el rango especificado. Para comprobar esto, se puede ejecutar sobre el Learner la funci´on summary() y observar la ´ultima capa de la red [20]. Puesto que los valores sobre los que se est´a realizando la regresi´on son fracciones comprendidas entre el 0 y el 1, se ha entrenado con y range=(0,1). Figura 6.7: RMSE obtenido en funci´on de la especificaci´on de y range Como se puede observar en la Figura 6.7, esta t´ecnica ayuda a conseguir r´apidamente una buena precisi´on. Sin embargo, hacia la ´epoca n´umero 9, ambas m´etricas comienzan a Jorge Barrio Conde 67
6.6. ENFOQUE DE CLASIFICACI ´ ON DE CATEGOR´ IA MORFOL ´ OGICA La Figura 6.13 representa las m´etricas obtenidas con el mismo modelo de ResNet50 variando el tama˜no de las im´agenes de entrada. Adicionalmente se ha a˜nadido la precisi´on de la ResNet18 sobre im´agenes de 200x200 p´ıxeles. La m´etrica es inferior con la reducci´on, obteniendo un RMSE de 0,132 frente al 0,126 de su rival. Sin embargo, esta precisi´on supera en 0,002 a la obtenida con la ResNet18 sobre im´agenes de 200x200 p´ıxeles (RMSE de 0,134). En cuanto a los tiempos requeridos para el entrenamiento, la versi´on de 100x100 p´ıxeles ha sido mucho m´as eficiente, tardando un total de 6 minutos y 2 segundos en completar el entrenamiento. Esta marca, supera incluso a la ResNet18 con im´agenes de 200x200 (6 minutos y 31 segundos). 6.6. Enfoque de clasificaci´on de categor´ıa morfol´ogica Como se describi´o en la introducci´on del problema, el paper ofrece una interpretaci´on de las fracciones de expertos que determinaron una caracter´ıstica espec´ıfica (fspheroid,fdisk, firr,fP S yfUnc) para separar las galaxias en seis categor´ıas morfol´ogicas distintas (SPH, DISK,DISKSPH,DISKIRR,IRR yNONE). Al trabajar con im´agenes enmascaradas en las que tan solo se desea obtener la clasificaci´on morfol´ogicamente de la galaxia central de la imagen, este enfoque se va a abordar como un problema de clasificaci´on de ´unica etiqueta. 6.6.1. Implementaci´on de la soluci´on La implementaci´on de esta soluci´on ha sido muy semejante a la de regresi´on. A diferencia del enfoque anterior, en este caso no se requiere leer ning´un fichero con informaci´on externa acerca de las galaxias. La ´unica informaci´on que se necesita conocer es la categor´ıa morfol´ogica de cada galaxia. Como ya se explic´o en la secci´on del conjunto de datos (ver Secci´on 6.2), en el propio nombre de la imagen viene codificada la morfolog´ıa, el identificador de galaxia y el campo CANDELS al que pertenece. Realizando las modificaciones convenientes, se han redefinido el DataBlock para la tarea de clasificaci´on (ver Fragmento de c´odigo 6.10). blocks = DataBlock ( blocks = ( ImageBlock , CategoryBlock ) , get_items = get_image_files , splitter = RandomSplitter ( valid_pct =0.2 , seed =42) , get_y = Pipeline ([ attrgetter (" name "), RegexLabeller (pat = r’^(.*) _\d+_ .*. png ’) ]) , batch_tfms = tfms ) Listing 6.10: DataBlock para la clasificaci´on morfol´ogica de galaxias 74 Jorge Barrio Conde
CAP´ ITULO 6. CLASIFICACI ´ ON MORFOL ´ OGICA DE GALAXIAS Lo primero que se indica, igual que en la regresi´on, es la naturaleza de las variables independientes y dependientes. Las variables independientes contin´uan siendo im´agenes, por lo que se le asigna la clase “ImageBlock”. Sin embargo, las variables dependientes han cambiado a etiquetas ´unicas, representadas por la clase “CategoryBlock”. Teniendo en cuenta que los nombres de los ficheros .png siguen la siguiente estructura: “<morfolog´ıa><identificador galaxia><campo candels>.png”, el primer campo del nombre codifica la categor´ıa de la clasificaci´on. Por ello, se ha especificado en el argumento get y del DataBlock, que se obtengan las categor´ıas a parir de los nombres de la im´agenes, utilizando la expresi´on regular “^(.*) \d+ .*.png”. Una expresi´on regular es un patr´on que busca hacer coincidencias con combinaciones de caracteres [17][58]. El s´ımbolo ‘^’ indica el inicio de la l´ınea. El punto coincide con cualquier car´acter excepto el car´acter ‘\n’ equivalente al salto de l´ınea. El asterisco hace que la expresi´on regular resultante corresponda con 0 o m´as repeticiones de la anterior. El ‘\d’ hace referencia a cualquier n´umero comprendido entre el 0 y el 9. El s´ımbolo de suma es similar al asterisco pero en este caso se exige al menos una repetici´on, es decir, una multiplicidad de 1 a muchos. Por ´ultimo, tanto el car´acter “ ” como la cadena “.png” hacen referencia a sus propios valores ascii. La parte de la expresi´on regular que se encuentra entre par´entesis es la que corresponder´a con la categor´ıa de la clasificaci´on [72]. Existen otras muchas alternativas para proporcionar la variable “y” al modelo. Un ejemplo ser´ıa la funci´on “parent label” que determinar´ıa la categor´ıa a partir del nombre del directorio en el que se encuentren las distintas im´agenes, por lo que ser´ıa necesario separar las im´agenes en subdirectorios diferentes en funci´on de su morfolog´ıa [20]. El resto del DataBlock es exactamente igual que el descrito en regresi´on (ver Secci´on 6.5.1), por lo que se va a omitir su descripci´on. Para asegurar que la distribuci´on de las im´agenes en los dos datasets (entrenamiento y validaci´on) sea homog´enea y no haya ninguna descompensaci´on, se ha implementado una funci´on llamada datasets info(dls), cuyo fin es mostrar la informaci´on de estos conjuntos de datos por separado. Categor´ıa Train Valid Suma DISK 731 (26,4 %) 170 (24,6 %) 901 DISKIRR 287 (10,4 %) 62 (9,0 %) 349 DISKSPH 795 (28,7 %) 181 (26,2 %) 976 IRR 70 (2,5 %) 30 (4,3 %) 100 NONE 131 (4,7 %) 32 (4,6 %) 163 SPH 754 (27,2 %) 217 (31,4 %) 971 Total 2768 (100 %) 692 (100 %) 3460 Tabla 6.1: Distribuci´on de los conjuntos de datos de entrenamiento y validaci´on seg´un las 6 diferentes categor´ıas Como puede observarse en la Tabla 6.1, la divisi´on de los dos datasets por cada categor´ıas es muy homog´enea. Ambos conjuntos de datos toman aproximadamente la misma proporci´on de im´agenes por cada morfolog´ıa. Jorge Barrio Conde 75
6.6. ENFOQUE DE CLASIFICACI ´ ON DE CATEGOR´ IA MORFOL ´ OGICA 6.6.2. Funci´on de coste y m´etrica Tal y como se coment´o en la secci´on de regresi´on, fastai determinar´a la mejor funci´on de coste acorde al problema que se est´e resolviendo. En el caso de las clasificaciones, depender´a de si se trata de una clasificaci´on de etiqueta ´unica o m´ultiples etiquetas. Para el primer tipo, lo recomendado es utilizar la funci´on de PyTorch nn.CrossEntropyLoss (funci´on de p´erdida de entrop´ıa cruzada). Por el contrario, para una clasificaci´on de m´ultiples etiquetas convendr´ıa optar por nn.BCEWithLogitsLoss (funci´on de p´erdida de entrop´ıa cruzada binaria con activaci´on sigmoide [73]) [39, p. 237]. Para analizar la precisi´on del modelo, se ha decidido escoger una m´etrica sumamente intuitiva como es la de accuracy o precisi´on en espa˜nol. Esta m´etrica representa del 0 al 1 el n´umero de aciertos sobre el n´umero total de casos, es decir, representa el porcentaje de galaxias del conjunto de validaci´on que el modelo ha acertado su morfolog´ıa. En este caso, al tratarse de 6 categor´ıas, una predicci´on totalmente aleatoria equivaldr´ıa a un accuracy de 1/6, es decir, 0,167. Una vez sobrepasado dicho umbral, el modelo estar´ıa aprendiendo. 6.6.3. Sistema base El sistema base del que se va a partir es el mismo que en el caso de regresi´on. El modelo que se va a utilizar va a ser una ResNet en su versi´on 34 y se va a comenzar sin aplicar ninguna transformaci´on sobre el batch. En cuanto al n´umero de ´epocas, en este caso, tras realizar diversas pruebas, se ha escogido 20 ´epocas para realizar el entrenamiento, manteniendo el learning rate base que fine tune tiene establecido por defecto. Figura 6.14: P´erdidas del conjunto de entrenamiento y validaci´on obtenidas con el sistema base 76 Jorge Barrio Conde
CAP´ ITULO 6. CLASIFICACI ´ ON MORFOL ´ OGICA DE GALAXIAS La gr´afica anterior (ver Figura 6.14) muestra las p´erdidas obtenidas con sistema base, donde se puede observar c´omo el coste del conjunto de entrenamiento desciende durante todo el entrenamiento, mientras que el de validaci´on, tras comenzar descendiendo muy lentamente durante las tres primeras ´epocas, empieza a ascender, es decir, empieza a empeorar. En ese mismo instante, el modelo comienza a sobreajustarse. Figura 6.15: Precisi´on obtenida con el modelo base de clasificaci´on Sin embargo, seg´un revela la l´ınea de tendencia de la gr´afica de la Figura 6.15, la precisi´on del modelo sigue mejorando durante todo el entrenamiento, pese a que lo haga muy lentamente. Este caso refleja un modelo que se est´a confiando, es decir, cada vez est´a m´as seguro de las predicciones que hace. Esto no es alarmante puesto que lo que importa realmente es la precisi´on del mismo. Seguido a esto, es com´un que la m´etrica pueda empeorar, por lo que incrementar en exceso el n´umero de ´epocas del entrenamiento podr´ıa provocar un deterioro de la precisi´on del modelo. En ese caso, la red estar´ıa memorizando el conjunto de entrenamiento, lo que hace perder al modelo su capacidad de generalizar el conocimiento [39, p. 212]. 6.6.4. Transformaciones de datos Para solventar el sobreajuste que se produce en el sistema base, se van a aplicar las mismas transformaciones que fueron descritas en el apartado de regresi´on (ver Secci´on 6.5.6). Para comprobar que estas transformaciones se est´an realizando con ´exito, se ha ejecutado la funci´on show batch() antes y despu´es de aplicar las transformaciones. Como el DataBlock posee una semilla aleatoria espec´ıfica, la imagen que devolver´a dicha funci´on, corresponde a la misma muestra. De esta forma se puede observar si realmente se han ejecutado las transformaciones. Jorge Barrio Conde 77
6.6. ENFOQUE DE CLASIFICACI ´ ON DE CATEGOR´ IA MORFOL ´ OGICA (a) Sin transformaciones (b) Con transformaciones Figura 6.16: Resultado de show batch(), antes y despu´es de aplicar las transformaciones Tal y como se puede ver en la Figura 6.16, se ha aplicado una rotaci´on de 90◦en sentido horario sobre la imagen. Como ya se coment´o y se puede comprobar, el ruido Gaussiano no es perceptible a simple vista. Figura 6.17: P´erdidas del conjunto de entrenamiento y validaci´on obtenidas al aplicar las transformaciones descritas en cada batch En esta ocasi´on, como se puede observar en la Figura 6.17, al aplicar las transformaciones, el overfitting se ha reducido considerablemente, apareciendo en la s´eptima ´epoca y sin experimentar apenas crecimiento en la p´erdida obtenida con el conjunto de validaci´on, pasando de 1,16 en la s´eptima ´epoca a 1,28 en la ´ultima. 78 Jorge Barrio Conde
CAP´ ITULO 6. CLASIFICACI ´ ON MORFOL ´ OGICA DE GALAXIAS Figura 6.18: Precisi´on obtenida al aplicar transformaciones frente a la del sistema base Poniendo atenci´on a las m´etricas, siendo esto lo de mayor inter´es (ver Figura 6.18), se puede observar una peque˜na mejora de un 2 % aproximadamente, en la precisi´on del modelo tras aplicar las transformaciones, pasando de un 57,9 % de acierto a un 61 %. Pese a que la mejora no es muy grande, es lo suficiente para decidir mantener estas transformaciones a lo largo de los siguientes experimentos. 6.6.5. An´alisis de distintas arquitecturas ResNet La existencia constante del overfitting hace cuestionar c´omo afectar´a la variaci´on de la profundidad de la arquitectura sobre la precisi´on del modelo. En esta ocasi´on, se va a probar tanto la ResNet18 como la ResNet50 y se van a comparar con la ResNet34 del apartado anterior. Es de suponer que el overfitting sea mayor seg´un se incremente el n´umero de capas. Figura 6.19: Diferencias entre las p´erdidas de entrenamiento y validaci´on en la ´ultima ´epoca seg´un la arquitectura ResNet Jorge Barrio Conde 79
6.6. ENFOQUE DE CLASIFICACI ´ ON DE CATEGOR´ IA MORFOL ´ OGICA Analizando la diferencia entre las p´erdida obtenidas por el conjunto de entrenamiento y el de validaci´on en la ´ultima capa para cada modelo ResNet (ver Figura 6.19), a medida que se ampl´ıa el n´umero de capas de la red, la diferencia entre ambas p´erdidas aumenta. La ResNet18 ha obtenido una p´erdida final en el conjunto de entrenamiento de 0,37 y 1,28 en el de validaci´on. La versi´on 34 ha obtenido 0,346 de p´erdida en el conjunto de entrenamiento y 1,28 en el de validaci´on. Por ´ultimo, la versi´on 50, ha obtenido una p´erdida de 0,15 en el conjunto de entrenamiento y 1,35 en el de validaci´on. Como se puede observar, el incremento de la profundidad de la red ha supuesto una disminuci´on progresiva de los costes del conjunto de entrenamiento y un aumento de las p´erdidas del conjunto de validaci´on. Figura 6.20: Accuracy obtenido por las diferentes arquitecturas de ResNet Observando la gr´afica de las distintas precisiones (ver Figura 6.20), estas mejoran acorde al incremento de profundidad de la red. Pese a que finalmente la precisi´on de la ResNet18 (60,55 %) sea muy pr´oxima a la ResNet34 (60,98 %), durante todo el entrenamiento, se observa una peque˜na pero clara superioridad de la ResNet34. Finalmente, la mejor precisi´on obtenida es de un 65,75 %, correspondiente a la ResNet50. 6.6.6. Modificaci´on del learning rate y el n´umero de ´epocas Los casos de este ´ultimo experimento partir´an del mejor caso obtenido hasta el momento, una red ResNet50 que aplica las transformaciones descritas anteriormente. Uno de los factores m´as importantes a tener en cuenta durante la fase de entrenamiento del modelo es el de elegir un learning rate ´optimo. En 2015, Leslie Smith ide´o un buscador de learning rates que consist´ıa en simular un entrenamiento, comenzando con un learning rate muy peque˜no aplicado al primer mini-batch. Tras observar las p´erdidas obtenidas, este hiperpar´ametro se incrementa en cierto porcentaje y se aplica sobre un nuevo mini-batch. Este proceso se itera hasta que las p´erdidas dejan de mejorar y comienzan a empeorar. En ese momento es donde se ha de elegir una tasa de aprendizaje anterior a dicho punto [83]. 80 Jorge Barrio Conde
CAP´ ITULO 6. CLASIFICACI ´ ON MORFOL ´ OGICA DE GALAXIAS Existen ciertas teor´ıas o reglas para determinar una buena tasa de aprendizaje. Una de ellas consiste en tomar la tasa de aprendizaje correspondiente a la m´ınima p´erdida obtenida pero con un orden de magnitud inferior, es decir, escoger la divisi´on de aquella tasa que obtiene la m´ınima p´erdida entre 10. La otra opci´on que se plantea es escoger el learning rate en el que la p´erdida se reduce con mayor rapidez, es decir, aquella tasa en la que la gr´afica de las p´erdidas obtenga su mayor inclinaci´on [39, Cap. 5]. En fastai existe una funci´on denominada lr find() que realiza la b´usqueda del learning rate para una configuraci´on de Learner espec´ıfica. Esta funci´on es bastante flexible, permitiendo configurar el learning rate de partida (start lr) y el de finalizaci´on (end lr), as´ı como detener la b´usqueda si diverge. La ejecuci´on de dicha funci´on mostrar´a una gr´afico en escala logar´ıtmica que representa el incremento del learning rate frente al correspondiente valor de p´erdida obtenido. A su vez, si el argumento suggestions est´a activado (por defecto toma el valor de True), tambi´en devolver´a dos n´umeros correspondientes a las dos reglas explicadas anteriormente. La primera de ellas tomar´a el seud´onimo de lr min y la segunda el de lr steep [20]. Figura 6.21: Gr´afica obtenida de la funci´on lr find() Observando la gr´afica obtenida (ver Figura 6.21), se puede ver que desde un learning rate algo inferior a 10−6hasta el valor 10−4, aproximadamente, las p´erdidas no experimentan ninguna tendencia a descender. Esto demuestra que las tasas comprendidas entre esos dos valores son tan peque˜nas que el modelo no llega a aprender. A partir de ese punto, las p´erdidas obtenidas comienzan a descender hasta un valor aproximado de 10−1, donde se alcanza el m´ınimo de la funci´on y comienzan a ascender. Teniendo todo esto en cuenta, se van a probar los dos valores recomendados por el lr find, es decir, se va a experimentar la precisi´on del modelo tras un entrenamiento de 20 ´epocas con un learning rate de 6,92e-03 (lr min) frente al mismo entrenamiento con una tasa de aprendizaje de 6,92e-04 (lr steep). Jorge Barrio Conde 81
6.6. ENFOQUE DE CLASIFICACI ´ ON DE CATEGOR´ IA MORFOL ´ OGICA Figura 6.22: Accuracy obtenido con lr min ylr steep Comparando la evoluci´on de ambas precisiones a lo largo de todo el entrenamiento (ver Figura 6.22), se puede ver c´omo la precisi´on de los dos modelos se mantiene bastante est´atica en las 10 ´ultimas ´epocas, con una tendencia muy aplanada. Durante todo el entrenamiento se puede observar c´omo la precisi´on obtenida con el learning rate m´as alto, es decir, el lr min es siempre superior a la de su rival, alcanzando un ´exito de 65,61 % frente al 59,97 del lr steep. Figura 6.23: Precisiones obtenidas al utilizar lr min,lr steep y el learning rate por defecto de fine tune Si se comparan ambas precisiones con la obtenida sin especificar un valor base de learning rate, es decir, manteniendo el que fine tune establece por defecto (ver Figura 6.23), pese a que las elecciones de learning rates hayan sido buenas, la precisi´on del modelo en el que no se especifica un learning rate concreto es algo superior. Sin embargo, la diferencia entre la precisi´on obtenida con el lr min y el learning rate por defecto es casi inapreciable. Esto se debe a que el learning rate que fine tune establece por defecto es de 0,002, un valor sumamente pr´oximo al de lr min [20]. Teniendo en cuenta que los dos learning rates m´as altos obtienen las mejores precisiones, se puede deducir una relaci´on entre el incremento del learning rate y la mejora de la precisi´on. Como ya se explic´o en el Cap´ıtulo 3, un learning rate muy grande, provocar´a que el 82 Jorge Barrio Conde
CAP´ ITULO 6. CLASIFICACI ´ ON MORFOL ´ OGICA DE GALAXIAS aprendizaje no converja y, por tanto, la precisi´on se desplome. Por ello, se ha optado por probar un nuevo valor ligeramente superior a los anteriores, para comprobar si mejora la precisi´on del modelo. El learning rate escogido es 0,01. Figura 6.24: Accuracy obtenido usando los distintos learning rates Volviendo a comparar todos los learning rates probados (ver Figura 6.24), se puede observar c´omo la precisi´on asociada a este nuevo learning rate de 0,001 ha superado todas las anteriores. Con este nuevo learning rate se ha alcanzado el 69,08 % de precisi´on, casi un 10 % m´as de la precisi´on obtenida con el lr steep. Analizando la progresi´on que sigue la precisi´on a lo largo del entrenamiento, se puede ver que en la ´epoca decimoquinta se obtiene una precisi´on de 70,38 %, valor ligeramente superior al de la ´ultima ´epoca. Para buscar mejorar todav´ıa m´as esa precisi´on, se va a probar a modificar el n´umero de ´epocas a entrenar. Reduciendo el entrenamiento a 15 ´epocas, se obtuvo una precisi´on algo superior, sin embargo, a´un hab´ıa ´epocas con mejor precisi´on que la final, como por ejemplo la d´ecima ´epoca, con una precisi´on del 70,95 %. De la misma forma que antes, se redujo de nuevo el entrenamiento a 10 ´epocas [39, p. 212-213]. Figura 6.25: Precisi´on obtenida seg´un el learning rate utilizado Jorge Barrio Conde 83
7.3. PREPROCESAMIENTO DE DATOS est´a dividido en seis columnas, de las cuales, la primera est´a etiquetada como gal id y contiene los nombres de los ficheros de las im´agenes. Estos nombres siguen una estructura de “<morfologia> <id galaxia> <campo candels>”. La segunda columna, etiquetada como q, contiene la relaci´on entre los semiejes de la galaxia, es decir, la divisi´on del semieje menor entre el semieje mayor. La tercera columna, nombrada como pa, corresponde al ´angulo entre el eje de ordenadas (“y”) y el semieje mayor de la galaxia. El rango de este ´angulo oscila entre −90◦ y 90◦. La cuarta columna, r edge, corresponde a la longitud en p´ıxeles del semieje mayor, por lo que, a partir de este valor y de su qcorrespondiente, se puede determinar la longitud del semieje menor. Las dos ´ultimas columnas, etiquetadas como xcH eycH, corresponden a la posici´on del centro de la galaxia, tanto en el eje “x” como en el “y”, respectivamente. Al igual que antes, por cada galaxia se cuenta con cuatro ficheros fits correspondientes a los filtros “V” (F606W), “I” (F814W), “J” (F125W) y “H” (F160W) que, a su vez, poseen un fichero de m´ascara correspondiente. Todos ellos poseen una dimensi´on de 200x200 p´ıxeles. 7.3. Preprocesamiento de datos El tratamiento que se le ha aplicado a las im´agenes es el mismo que el aplicado en el cap´ıtulo anterior (ver Secci´on 6.3). Los ficheros fits correspondientes a los filtros “H”, “J” e “I”, han sido combinados para formar im´agenes RGB. Al tratarse de una regresi´on sobre cada galaxia individual, las im´agenes se han enmascarado a fin de descartar la mayor cantidad de informaci´on posible que sea ajena a la galaxia central (la que se desea analizar), para que la red se focalice en el objeto central y su aprendizaje no se vea entorpecido por informaci´on irrelevante. Tan solo hizo falta adaptar los ficheros utilizados para el preprocesamiento del cap´ıtulo anterior, especificando el directorio en el que se encontraban dichas im´agenes y sus m´ascaras. Por todo ello, las im´agenes utilizadas para este problema tienen el mismo aspecto que las im´agenes utilizadas en el cap´ıtulo anterior (ver Figura 6.3), trat´andose de im´agenes RGB de tama˜no 200x200 p´ıxeles con galaxias enmascaradas. 7.4. Implementaci´on de la soluci´on En cuanto a la estructura del notebook de la soluci´on, se ha dividido en siete puntos y un primer punto inicial de instalaci´on de fastbook y fastai, tal y como se explic´o en el cap´ıtulo anterior (ver Fragmento de c´odigo 6.2). En el siguiente punto se establece el entorno, importando los m´odulos necesarios de fastai y fastook (ver Fragmento de c´odigo 6.3) y declarando los paths de los inputs (im´agenes y csv) y los outputs (csv con los resultados del entrenamiento). A continuaci´on, en el punto n´umero dos, utilizando pandas, una biblioteca de python dedicada al an´alisis y procesamiento de datos [68], se lee el csv con la informaci´on antes mencionada, necesaria para realizar la regresi´on. Estos valores del csv se han procesado para obtener los cinco valores sobre los que se ha decidido hacer la regresi´on: pa (´angulo de la galaxia), xcH (centro respecto al eje “x”), ycH (centro respecto al eje “y”), majorAxis 90 Jorge Barrio Conde
CAP´ ITULO 7. DETECCI ´ ON DE BORDES DE GALAXIAS (longitud del semieje mayor) y minorAxis (longitud del semieje menor). Se ha optado por utilizar el semieje menor en lugar de la relaci´on entre ejes (q) por la escala de dicha relaci´on ya que sus valores est´an comprendidos entre el 0 y el 1, escala muy diferente al resto de valores. Esto podr´ıa entorpecer el rendimiento de la funci´on de coste al detectar una muy baja diferencia entre los valores esperados de qy los predichos, aunque se tratase de su diferencia m´axima (MAE = 1). En el tercer punto se han definido las funciones propias, entre las que se encuentran los getters que se usar´an en el DataBlock (get x yget y), la funci´on de p´erdida MAE con label smoothing y una funci´on para obtener las m´etricas MAE para todo el conjunto de validaci´on divididas por cada valor de la regresi´on, a fin de poder observar cu´ales son los valores que peor se estiman. A esta ´ultima funci´on se la ha denominado show results stats(). Adem´as de estas funciones, se han creado algunas m´as para la visualizaci´on de los bordes de las galaxias. Una tarea sumamente importante es la de visualizar los datos para comprobar que estos son correctos y que su interpretaci´on, as´ı como su comprensi´on, es adecuada. Para poder visualizar estos datos, se ha definido una funci´on bautizada como show edge(x, y), donde, a partir de una imagen y sus cinco valores de regresi´on (´angulo, centro de la galaxia en el eje “x” e “y”, semieje mayor y semieje menor, en dicho orden), se representa, utilizando la biblioteca Matplotlib, dicha imagen junto a una elipse en color rojo superpuesta sobre ella, representando el borde que se desea aprender a predecir. Bajo la imagen se ha colocado un texto que incluye estos 5 valores etiquetados. Una vez definida esta funci´on, se pens´o que podr´ıa ser una buena idea definir una funci´on alternativa a la funci´on de fastai show results(), donde, a partir de un objeto Learner instanciado y un DataLoaders, se pudiera mostrar tantas predicciones de las im´agenes del conjunto de validaci´on como se desease. Para ello se pens´o en algo semejante a la funci´on anterior, pero en este caso con dos subfiguras, una con el borde real y otra con el borde predicho por la red. Bajo esta segunda subfigura, junto a los valores etiquetados se incluye cu´al ha sido el error MAE de cada valor en concreto. Sobre las dos subfiguras, y a modo de t´ıtulo, se ha representado cu´al es el MAE total obtenido con la predicci´on de dicha galaxia. Esta funci´on se ha definido como “show edge results(learn, dls, n samples=5, random=True)”. Como se puede ver en el ´ultimo argumento, se permite elegir si las predicci´on que se muestran son de im´agenes escogidas aleatoriamente o son las primeras del conjunto de validaci´on. Esto podr´ıa ser ´util para visualizar c´omo mejora la precisi´on de la red sobre unos casos concretos. Por ´ultimo, se han definido dos variantes de la funci´on anterior, una para obtener las mejores predicciones y otra para las peores, de forma que se puedan identificar correlaciones entre ambos grupos y as´ı obtener conclusiones relativas a la precisi´on del modelo. Para ello, se obtienen los valores de las m´etricas por cada imagen del conjunto de validaci´on, se ordenan en sentido ascendente o descendente seg´un se desee y se representan las primeras predicciones de la lista (tantas como se quiera). En el punto n´umero cuatro, se construye el DataBlock y se muestra informaci´on relevante de este. Para su definici´on, se tuvo que decidir sobre que acompa˜nar´ıa al ImageBlock en el campo blocks. Para realizar esta regresi´on se valoraron m´ultiples opciones como separar los valores en RegressionBlock distintos para poder definir un rango de “y” personalizado para Jorge Barrio Conde 91
7.5. FUNCI ´ ON DE COSTE Y M´ ETRICA cada uno. Tambi´en se pens´o en establecer cinco PointBlock con los que se pudiera trazar la elipse correspondiente al borde de la galaxia. Finalmente, tras investigar sobre el tema y realizar varias pruebas, se opt´o por un ´unico RegressionBlock para los cinco valores de la regresi´on. Adem´as de los blocks, se especific´o el campo splitter,batch tfms yget y de igual forma que se hizo en la regresi´on del cap´ıtulo anterior (ver Fragmento de c´odigo 6.5). Algo que ha cambiado respecto al DataBlock del cap´ıtulo anterior, es la forma en la que se obtienen las im´agenes. En este caso no se va a utilizar el argumento get items puesto que la lista de todos los elementos procede del contenido del fichero csv mencionado anteriormente. Para obtener las im´agenes a partir de los elementos de dicha lista, se ha especificado en el atributo get x una funci´on encargada de concatenar la ruta del directorio que contiene todas las im´agenes con el nombre del fichero de la imagen de cada galaxia, m´as su extensi´on (“.png”). En el quinto punto se instancia el objeto DataLoaders y muestra informaci´on relativa a este. A su vez, se ejecuta un show batch para comprobar que las entradas de datos son correctas. Para instanciar el DataLoaders se introduce como argumento la lista con toda la informaci´on que ha sido obtenida a partir del csv. Esta lista ser´a utilizada por los getters del DataBlock para obtener tanto las im´agenes como los valores de la regresi´on. En el pen´ultimo punto, es donde se escoge la red que se va a utilizar para el entrenamiento, se declara el Learner y se pone a entrenar. Tras el entrenamiento se muestran los resultados para su posterior an´alisis. Por ´ultimo, al final de cada notebook hay una secci´on dedicada a tests, cuyo fin es comprobar que todas las mejoras y funciones que se vayan a˜nadiendo funcionan tal y como deben hacerlo. 7.5. Funci´on de coste y m´etrica En este caso, la m´etrica que se ha escogido para medir la precisi´on del modelo es el Mean Absolute Error (MAE) o error absoluto medio en espa˜nol (ver Ecuaci´on 3.10). La raz´on principal por la que se ha escogido esta m´etrica ha sido su alta facilidad de interpretaci´on, ya que al tratarse de la media de todas las diferencias entre los objetivos y las predicciones, resulta mucho m´as visual que otras m´etricas donde dicha diferencia experimenta otras operaciones, como por ejemplo RMSE. Por otro lado, y al contrario que en cap´ıtulo anterior, esta vez no se ha tomado ning´un modelo existente como referencia que trabaje sobre la misma tarea, por lo que no hace falta estar sujeto a ninguna m´etrica en concreto ya que no se va a realizar ninguna comparaci´on con otro modelo. En cuanto a la funci´on de coste, teniendo en cuenta las diversas opciones de funciones de coste aplicables a un problema de regresi´on que se explicaron en la Secci´on 3.4.1, se ha optado por una funci´on MAE con label smoothing (aplicar peque˜nas variaciones aleatorias sobre los valores objetivos). La raz´on de esta elecci´on est´a basada en la distinta naturaleza y escala de los diversos valores de la regresi´on puesto que se ha preferido no penalizar a´un m´as las diferencias m´as grandes entre los objetivos y las predicciones. El label smoothing se aplica sobre la funci´on de p´erdida porque los valores sobre los que se est´a haciendo la regresi´on no 92 Jorge Barrio Conde
CAP´ ITULO 7. DETECCI ´ ON DE BORDES DE GALAXIAS son valores inmutables y fijos. Como ya se coment´o anteriormente, estos valores proceden de una interpretaci´on subjetiva de expertos de la materia, por lo que no poseen la verdad absoluta y pueden estar sujetos a variaciones. 7.6. Sistema base Para establecer un sistema base del que partir, se ha seguido un enfoque muy parecido al del cap´ıtulo anterior. Se ha optado por un modelo preentrenado de ResNet, m´as concretamente la versi´on 34. Inicialmente, no se ha incluido ninguna transformaci´on en el campo batch tfms del DataBlock. Figura 7.1: Resultado de show batch sobre el sistema base La Figura 7.1 muestra la salida de la funci´on show batch() a fin de verificar que tanto las im´agenes como los valores de la regresi´on sobre las que va a trabajar la red son los correctos. En cuanto al entrenamiento, se ha determinado un n´umero de 50 ´epocas para su ejecuci´on, ya que pruebas anteriores reflejaron la capacidad del modelo para seguir aprendiendo durante m´as ´epocas y que cada ´epoca tan solo requer´ıa una media de 6 segundo para computarse. Figura 7.2: P´erdidas del conjunto de entrenamiento y validaci´on del sistema base Jorge Barrio Conde 93
7.6. SISTEMA BASE Analizando las curvas de p´erdida, tanto del conjunto de entrenamiento como del conjunto de validaci´on (ver Figura 7.2), se puede observar c´omo arranca con valores de MAE relativamente altos, en torno a 60. Al alcanzar la ´epoca n´umero 15, ambas pendientes se pronuncian, de forma que se acelera el entrenamiento. Hacia la ´epoca 40, la curva vuelve a aplanarse hasta el final del entrenamiento. Esta baja inclinaci´on de las curvas, hace que el entrenamiento sea muy lento y que la red no aprenda lo suficiente. En cuanto a la precisi´on, el modelo ha obtenido un MAE final de 17,12, aproximadamente. Se trata de una precisi´on ciertamente alta que tiene mucho que mejorar. Gracias a la funci´on show results stats() que se defini´o anteriormente, se puede conocer el error medio para los cinco distintos valores de la regresi´on. Error medio por cada valor PA 12,85 xcH 17,71 ycH 20,41 majorAxis 16,78 minorAxis 13,52 Tabla 7.1: MAE de cada valor de las regresi´on del sistema base Para este caso base (ver Tabla 7.1), el peor valor que la red predice es el del centro de la galaxia en el eje “y”, con un error medio de 20,41, seguido del valor del centro de la galaxia en el eje “x”. Sin embargo, las mejores predicciones se atribuyen al ´angulo, con un MAE medio de 12,85. Figura 7.3: Resultado de show edge results() para el sistema base En la Figura 7.3, se puede observar y confirmar, gracias a la funci´on show edge results(), que realmente estima relativamente bien tanto el ´angulo como el tama˜no de los semiejes, sin embargo no consigue buenas predicciones en los valores relativos al centro de la galaxia, cuyos errores medios rondan valores de MAE de 28. 94 Jorge Barrio Conde
CAP´ ITULO 7. DETECCI ´ ON DE BORDES DE GALAXIAS 7.7. Modificaci´on del learning rate Para poder inclinar la curva del entrenamiento y as´ı agilizar el aprendizaje, de forma que disminuya sus p´erdidas y alcance mejores precisiones, se ha pensado en modificar el valor del hiperpar´ametro de learning rate que se le da a la funci´on fine tune() alearning rate base. Por defecto, el learning rate base est´a definido como 0,002 [20]. Para determinar el nuevo learning rate, se ha ejecutado la funci´on lr find() sobre el Learner del sistema base. Figura 7.4: Resultado de la funci´on lr find() sobre el sistema base La Figura 7.4 representa la gr´afica que muestra la funci´on lr find(). Como se puede ver, hasta valores de learning rate de 10−2la p´erdida se encuentra estancada y no experimenta ninguna disminuci´on. A partir de este valor, los valores de p´erdida comienzan a descender hasta el learning rate de 100o 1. La funci´on indica que el lr min o valor de un orden inferior al valor de p´erdida m´ınima, se encuentra en 1,10e-01 y el lr steep o punto de mayor inclinaci´on se ubica en 8,32e-02. A partir de estos valores, se ha optado por un learning rate de 1e-01 (0,1), un valor comprendido entre los dos valores que se recomiendan como learning rates. Figura 7.5: P´erdidas de entrenamiento y validaci´on con el learning rate de 1e-01 Jorge Barrio Conde 95
7.7. MODIFICACI ´ ON DEL LEARNING RATE Como se puede observar en la Figura 7.5, pese a que la primera ´epoca obtenga una p´erdida para el conjunto de validaci´on mucho m´as alta que el caso anterior, inmediatamente despu´es, el entrenamiento se dirige hacia p´erdidas mucho m´as bajas que el caso anterior. En tan solo 3 ´epocas se obtiene una precisi´on mejor que la obtenida en la ´ultima ´epoca del caso anterior, obteniendo un MAE de 15,18 frente al 17,12 del caso anterior. A partir de esta ´epoca, la precisi´on se posiciona en torno a 9, llegando alcanzar un MAE final aproximado de 4,82. Es necesario comentar que un learning rate tan alto tambi´en hace que las p´erdidas obtenidas fluct´uen m´as durante el entrenamiento que lo que se puede ver en el caso anterior. Figura 7.6: M´etrica MAE del sistema base en funci´on el learning rate La Figura 7.6 hace una comparativa entre la precisi´on del modelo actual con un learning rate elegido a mano frente al caso anterior donde se ha dejado el learning rate por defecto. Como puede observarse, la diferencia es extremadamente grande. Figura 7.7: Resultado de show edge results() al aplicar un learning rate de 0,1 La imagen anterior (ver Figura 7.7) demuestra c´omo ha mejorado la precisi´on de una forma visual, pudiendo comparar sobre una misma galaxia las predicci´on del modelo actual con respecto al del caso anterior (ver Figura 7.3). En esta ocasi´on puede verse una gran mejora en la predicci´on del centro de la galaxia. 96 Jorge Barrio Conde
CAP´ ITULO 7. DETECCI ´ ON DE BORDES DE GALAXIAS Error medio por cada valor PA 1,31 xcH 0,91 ycH 1,49 majorAxis 2,31 minorAxis 2,29 Tabla 7.2: MAE de cada valor de la regresi´on al aplicar un learning rate de 0,1 Observando los errores relativos a cada valor (ver Tabla 7.2), se puede corroborar que los valores de la posici´on central de la galaxia han mejorado mucho, pasando de valores de MAE aproximados de 28 a valores en torno a 1. Viendo la gran mejora que ha experimentado el modelo al utilizar dicho learning rate, se va a mantener dicho hiperpar´ametro para el resto de los experimentos, a fin de buscar la mejor precisi´on posible. 7.8. Transformaciones de datos En cuanto al data augmentation, para este problema no se puede utilizar la transformaci´on de la rotaci´on tal y como se utiliz´o en el problema de clasificaci´on morfol´ogica ya que uno de los valores de la regresi´on representa el ´angulo entre el eje “y” y el semieje mayor de la galaxia. Por tanto, rotar las im´agenes har´ıa que este ´angulo se vea alterado y no coincida con el ´angulo que se le ha suministrado a la red neuronal como objetivo de la regresi´on. Una de las tareas que automatiza fastai es alterar los valores de las variables dependientes (variable “y”) acorde a las transformaciones que se apliquen. Sin embargo, esto tan solo funciona en el caso de tratarse de TransformBlock de tipo PointBlock,BBoxBlock, BBoxLblBlock oMaskBlock [20]. En este caso, al tratarse de una regresi´on en la que fastai no posee informaci´on alguna sobre la naturaleza de cada valor del RegressionBlock, no puede determinar que al rotar la imagen debe alterar cierto valor de la regresi´on. Por ello, hay que abarcar este problema de forma manual [39, Cap. 6]. Sin embargo, la transformaci´on del ruido Gaussiano se puede utilizar tal y como se defini´o en el cap´ıtulo anterior (ver Fragmento de c´odigo 6.9) ya que no afecta a ning´un valor de la regresi´on. Esta transformaci´on solo aplica una cierta alteraci´on aleatoria sobre cada p´ıxel de la imagen, de forma que la red crea que es una imagen totalmente nueva y aprenda en lugar de memorizar la combinaci´on de los valores de los p´ıxeles. A su vez, tambi´en es posible aplicar la transformaci´on de la normalizaci´on de la entrada. En primer lugar se va a probar c´omo mejora el rendimiento del modelo aplicando estas dos transformaciones sobre cada batch. Para ello, se ha especificado en el argumento batch tfms una lista con la transformaci´on Normalize yGaussianNoise, en dicho orden. Con esta configuraci´on se han conseguido los siguientes resultados. Jorge Barrio Conde 97
7.8. TRANSFORMACIONES DE DATOS Figura 7.8: MAE en funci´on de si se aplica o no GaussianNoise yNormalize Tal y como se puede observar en el gr´afico anterior (ver Figura 7.8), al aplicar ambas transformaciones, la precisi´on mejora ligeramente, pasando de un MAE de 4,82 a 4,7. Adem´as de estas, se ha pensado en aplicar otras dos transformaciones que podr´ıan mejorar la capacidad de aprendizaje de la red. Una de ellas se encargar´a de aplicar un movimiento a la galaxia de forma que los valores correspondientes a su centro var´ıen en un cierto rango de p´ıxeles y no sean en la mayor´ıa de casos valores iguales a 100, ya que por lo general, las galaxias est´an ubicadas en el centro de la imagen 200x200. De esta forma se conseguir´ıa evitar que la red se sobreajuste a valores de 100 en los valores correspondientes a la posici´on central de la galaxia. La otra transformaci´on contemplada es la de aplicar a las im´agenes una rotaci´on en ´angulos m´ultiplos de 90◦, tal y como se hac´ıa en el cap´ıtulo anterior. En esta ocasi´on, hay que redefinir la forma en la que se aplica dicha transformaci´on para que modifique los valores objetivo de la regresi´on correspondientes a los ´angulos, acorde a la rotaci´on que se le aplique a cada galaxia. Para construir estas dos nuevas transformaciones, ha sido necesario implementar dos clases que heredan de la clase Transform de fastai que se explic´o en la Secci´on 6.5.6 del capitulo anterior. La clase que se ha implementado para la transformaci´on del movimiento aleatorio de la imagen se ha nombrado como MovementTfm. class MovementTfm ( Transform ): split_idx = 0 order = 102 # after normalize def __init__ (self , min:int,max:int): super () self.min =min self.max =max def encodes (self , x: Tensor ): if isinstance (x, TensorImage ): """ TensorImages """ 98 Jorge Barrio Conde
CAP´ ITULO 7. DETECCI ´ ON DE BORDES DE GALAXIAS self . movements = torch . randint ( low= self .min, high=self.max, size =(2 , x. shape [0]) , dtype = torch .int, device=’cuda ’ ) for img_idx in range (x. shape [0]) : for ch_idx in range (x. shape [1]) : y_movement = self . movements [0][ img_idx ] x_movement = self . movements [1][ img_idx ] x[ img_idx ][ ch_idx ] = torch . roll ( x[ img_idx ][ ch_idx ], shifts =( y_movement , x_movement ), dims =(0 ,1) ) # Remove pixels that fall out of the tensor if ( x_movement >= 0): x[ img_idx ][ ch_idx ][: ,0: x_movement ] = 0 else: x[ img_idx ][ ch_idx ][:, x_movement :] = 0 if ( y_movement >= 0): x[ img_idx ][ ch_idx ][0: y_movement ] = 0 else: x[ img_idx ][ ch_idx ][ y_movement :] = 0 else: """ Regression values """ for img_idx in range (x. shape [0]) : x[ img_idx ][1] += self . movements [0][ img_idx ] #X x[ img_idx ][2] += self . movements [1][ img_idx ] #Y return x Listing 7.1: Transformaci´on definida para aplicar movimiento aleatorio a las im´agenes En el Fragmento de c´odigo 7.1, se puede ver c´omo se ha realizado esta implementaci´on. A fin de conseguir una cierta flexibilidad de ajuste a la hora de instanciar la transformaci´on, se ha redefinido el constructor init con dos nuevos argumentos que permiten especificar el valor m´ınimo y m´aximo de p´ıxeles que se desea mover la imagen tanto en eje X como en el eje Y. La funci´on encodes se ha definido de tal forma que el tipo de los inputs sea de tipo Tensor. Para distinguir entre las variables independientes (ImageBlock) y las dependientes (RegressionBlock), se comprueba si el tensor es instancia de la clase TensorImage. En caso afirmativo, se tratar´ıa del conjunto de im´agenes correspondiente a un batch espec´ıfico. En Jorge Barrio Conde 99
7.9. EQUIVALENCIA DEL ´ ANGULO OPUESTO DE LA GALAXIA Prestando atenci´on a los nuevos peores resultados obtenidos con el modelo actual, se puede observar c´omo ya no se da ninguna anomal´ıa en torno al ´angulo de la galaxia. En base a estos casos, se puede llegar a la conclusi´on de que el modelo predice peor las galaxias con formas m´as circulares. Es l´ogico pensar que las galaxias con formas m´as redondeadas, es decir, aquellas cuya relaci´on entre ejes es pr´oxima a uno y por tanto la diferencia entre el semieje mayor y el menor es muy peque˜na, es muy complejo determinar sus ´angulos al no poseer una forma el´ıptica muy definida. Podr´ıa ser una buena opci´on, buscar c´omo penalizar las predicciones de los ´angulos en funci´on de la relaci´on entre los semiejes, es decir, penalizar en menor medida las predicciones de los ´angulos de galaxias cuyas formas sean m´as circulares. (a) Primera mejor predicci´on (b) Segunda mejor predicci´on (c) Tercera mejor predicci´on (d) Cuarta mejor predicci´on Figura 7.16: Cuatro mejores predicciones del modelo Por el contrario, observando los mejores resultados (ver Figura 7.16) se puede corroborar que con galaxias con formas el´ıpticas bien definidas, la red predice realmente bien sus bordes, consiguiendo en estas los valores de MAE m´as bajos. 106 Jorge Barrio Conde
CAP´ ITULO 7. DETECCI ´ ON DE BORDES DE GALAXIAS 7.10. Redes neuronales convolucionales propias En el cap´ıtulo anterior se hicieron pruebas con las distintas versiones de arquitecturas de redes ResNet. En este caso se ha querido implementar una red neuronal convolucional propia, a fin de aprender c´omo se define una arquitectura de este tipo y as´ı asimilar de una forma pr´actica y visual el funcionamiento de este tipo de redes. Partiendo de todos los conocimientos explicados en la secci´on de redes neuronales convolucionales (ver Secci´on 3.3.3), al crear una red de este tipo, hay que tener en cuenta que al aplicar convoluciones stride-2, es muy com´un aumentar la cantidad de caracter´ısticas para no reducir la capacidad de la capa, ya que se estar´ıa reduciendo la cantidad de activaciones del mapa de caracter´ısticas. Si se mantuviese constante el n´umero de canales de salida en todas las capas convolucionales, el n´umero de c´alculos que ha de realizar la red se ir´ıa reduciendo seg´un se avance en profundidad por la misma, ya que el n´umero de mapas de caracter´ısticas ser´ıa siempre el mismo pero sus dimensiones se ir´ıan reduciendo. Teniendo esto en cuenta y que a medida que se avanza hacia las capas m´as profundas, las caracter´ısticas y patrones que se obtienen son de mayor valor sem´antico, es muy importante incrementar el n´umero de canales de salida seg´un se profundice en la red. Para entender esto, existe el receptive field o campo receptivo en espa˜nol. Este t´ermino hace referencia al ´area de p´ıxeles de una imagen que participa en la activaci´on de una capa. Podr´ıa entenderse como el n´umero de p´ıxeles de la imagen de entrada que representa cada p´ıxel de la capa actual. Figura 7.17: Campo receptivo de una CNN [77] En la imagen anterior (ver Figura 7.17), entendiendo que las matrices equivalen a la salida de cada capa que se indica bajo ellas y que la capa uno muestra la imagen original de entrada, la capa n´umero dos, tendr´ıa un campo receptivo de 3x3, ya que para obtener cada p´ıxel del mapa de caracter´ısticas de dicha capa, intervienen bloques de 3x3 p´ıxeles de la imagen de entrada. En la capa n´umero tres, su ´unico p´ıxel se calcula a partir del bloque 3x3 de la capa anterior, que se obtiene a partir de todos los p´ıxeles de la imagen de entrada. Por esta raz´on, la ´ultima capa tendr´a un campo receptivo de 5x5. Por tanto, a mayor campo receptivo, mayor n´umero de p´ıxeles de la imagen de entrada entran en juego a la hora de calcular un solo p´ıxel de la capa actual. Por ello, es sumamente Jorge Barrio Conde 107
7.10. REDES NEURONALES CONVOLUCIONALES PROPIAS importante corresponder a tal nivel de complejidad que representa cada p´ıxel con m´as c´alculos. Podr´ıa verse como versiones o patrones distintos que se deben obtener del mismo grupo de p´ıxeles de la imagen original para obtener m´as informaci´on [39, Cap. 13]. Siguiendo las explicaciones del cap´ıtulo dedicado a las Redes Neuronales Convolucionales del libro de fastai [39, Cap. 13], se va a estudiar el comportamiento de cuatro arquitecturas distintas de redes neuronales convolucionales. Todas ellas van a utilizar el mismo bloque de convoluci´on, aquello que se aplicar´a en cada convoluci´on. Dicho bloque est´a definido en la funci´on “conv(ni,nf,ks=3,act=True)”, tal y como puede verse en el Fragmento de c´odigo 7.3. El par´ametro ni hace referencia al n´umero de canales de entrada, nf al n´umero de mapas de caracter´ısticas de salida, ks al tama˜no del kernel que se va a aplicar en la convoluci´on y act representa un booleano que determinar´a si se aplica una activaci´on ReLU a la salida de la convoluci´on o no. def conv(ni , nf , ks=3, act= True ): layers = [nn. Conv2d (ni , nf , stride =2, kernel_size =ks , padding =ks //2) ] if act : layers . append ( nn .ReLU () ) layers . append (nn. BatchNorm2d ( nf )) return nn . Sequential (* layers ) Listing 7.3: Funci´on conv que define lo que se usar´a en cada convoluci´on [39] Seg´un se describe en el Fragmento de c´odigo 7.3, el bloque convolucional definido est´a compuesto por una capa convolucional Conv2d con stride-2 y padding de ks//2, siendo ks el tama˜no del kernel, sucedida por una funci´on de activaci´on ReLU (salvo que se indique lo contrario) y una normalizaci´on de batch. La primera arquitectura de red que se va a probar, est´a formada por la concatenaci´on de ocho bloques de convoluci´on, de forma que los mapas de caracter´ısticas se vean reducidos a una dimensi´on de 1x1 para las entradas de 200x200 p´ıxeles. Si se ajusta esta ´ultima capa para que su tensor de salida tenga dimensiones de BSx5x1x1 (siendo BS el tama˜no del batch), utilizando el m´odulo Flatten(), se redimensiona ese tensor, de forma que la red emita un tensor de salida de tama˜no BSx5. Figura 7.18: Red neuronal convolucional solo con capas convolucionales Fuente: elaboraci´on propia a trav´es de http://alexlenail.me/NN-SVG. 108 Jorge Barrio Conde
CAP´ ITULO 7. DETECCI ´ ON DE BORDES DE GALAXIAS La segunda arquitectura que se va a probar est´a basada en la red del paper de HuertasCompany et al. (2015), que fue descrita en la Secci´on 6.1 del cap´ıtulo anterior. Esta red utiliza seis bloques de convoluci´on que reducen el tama˜no de los mapas de caracter´ısticas hasta un tama˜no 4x4. Entonces, aplanando el tensor con Flatten(), lo introducen a una red fully-connected compuesta por dos capas de 2048 neuronas que finalmente desembocan en una tercera capa de salida con cinco neuronas, tal y como se muestra en la Figura 7.19. Figura 7.19: Red neuronal convolucional estilo Huertas-Company et al. (2015) [41] Fuente: elaboraci´on propia a trav´es de http://alexlenail.me/NN-SVG. La tercera red consistir´a en una combinaci´on de las dos primera, es decir, se va a reducir los mapas de caracter´ısticas hasta un tama˜no de 1x1 y, entonces, tras aplicar Flatten(), se introducir´a el tensor a una red fully-connected, compuesta por dos capas de 128 neuronas que desembocar´an en una ´ultima capa de salida con cinco neuronas, tal y como se ha representado en la Figura 7.19. Reducir los mapas de caracter´ısticas hasta una dimensi´on de 1x1 implica el incremento en dos nuevas capas de convoluci´on con respecto a la arquitectura anterior. Resumiendo, esta arquitectura est´a compuesta por 8 bloques convolucionales y 3 capas fullyconnected. De esta forma, se experimentar´a sobre c´omo afecta la profundidad de la parte convolucional de la red sobre su rendimiento. Figura 7.20: CNN con ocho capas convolucionales y tres fully-connected Fuente: elaboraci´on propia a trav´es de http://alexlenail.me/NN-SVG. Por ´ultimo, para probar c´omo afecta la profundidad de la parte fully-connected, se ha creado una nueva arquitectura que incrementa la parte fully-connected de la red anterior con una capa de 128 neuronas adicional. El siguiente c´odigo (ver Fragmento de c´odigo 7.4) muestra c´omo se ha definido dicha arquitectura utilizando el bloque convolucional descrito anteriormente. Se puede observar c´omo el c´odigo incluye unos comentarios despu´es de a˜nadir Jorge Barrio Conde 109
7.10. REDES NEURONALES CONVOLUCIONALES PROPIAS cada bloque convolucional. Estos comentarios reflejan el tama˜no de los mapas de caracter´ısticas que se obtendr´an como resultado de aplicar dicha capa, partiendo de im´agenes de tama˜no 200x200 (tama˜no de las im´agenes con las que se est´a trabajando en este proyecto). Para determinar estos tama˜nos, tan solo ha sido necesario aplicar la f´ormula descrita en la secci´on de redes convolucionales del marco te´orico de redes neuronales (ver Ecuaci´on 3.7). def simple_cnn (): return sequential ( # <- 200 x200 conv (3 ,4), #100 x100 conv (4 ,8), #50 x50 conv (8 ,16) , #25 x25 conv (16 ,32) , #13 x13 conv (32 ,64) , #7x7 conv(64,128), #4x4 conv (128 ,128) , #2x2 conv (128 ,128) , #1x1 Flatten () , nn . Linear (128 ,128) , nn . Linear (128 ,128) , nn . Linear (128 ,128) , nn . Linear (128 , 5) ) Listing 7.4: CNN con ocho capas convolucionales y cuatro fully-connected Para comparar estas arquitecturas, se ha partido del sistema anterior, en el que se aplicaban las transformaciones descritas y se permit´ıa el ´angulo opuesto como ´angulo v´alido. Bajo este escenario, se ha realizado sobre cada arquitectura un entrenamiento de 50 ´epocas con un learning rate de 0,1, como se lleva haciendo hasta el momento. Complementariamente, para comparar los resultados con un modelo ResNet, se ha realizado este entrenamiento sobre una resnet18. La Figura 7.21 representa los valores de MAE obtenidos con las diversas arquitecturas de redes convolucionales, entrenadas bajo las mismas condiciones. La disposici´on de las redes sigue un orden de izquierda a derecha, siendo la arquitectura m´as a la izquierda la primera red que fue descrita anteriormente. Como puede observarse, la primera red, la cual no pose´ıa una parte fully-connected, ha obtenido los peores resultados con diferencia. El MAE obtenido por esta red ha sido de 43,58. La segunda arquitectura, la cual estaba inspirada en la red descrita en el paper de Huertas-Company et al. (2015), ha obtenido un MAE de 8,56. Esto demuestra la mejora que experimenta la red al incluir una una parte fully-connected. La tercera arquitectura, que en comparaci´on con la anterior, se incrementa en dos el n´umero de bloques convolucionales, ha mejorado la precisi´on, obteniendo un MAE de 5,08. Por ´ultimo, la arquitectura que incrementa en una capa la parte fully-connected de la red anterior, mejora a´un m´as la precisi´on, consiguiendo un MAE de tan solo 4,95. La precisi´on de esta ´ultima arquitectura est´a pr´oxima a la del modelo preentrenado resnet18, cuyo MAE es de 4,21. 110 Jorge Barrio Conde
CAP´ ITULO 7. DETECCI ´ ON DE BORDES DE GALAXIAS Figura 7.21: M´etricas MAE de las distintas arquitecturas CNN La conclusi´on a la que se puede llegar con esta experiencia es que una mayor profundidad de la red, por lo general, suele conseguir mejores precisiones. Jorge Barrio Conde 111
7.10. REDES NEURONALES CONVOLUCIONALES PROPIAS 112 Jorge Barrio Conde
CAP´ ITULO 8. CONCLUSIONES Cap´ıtulo 8 Conclusiones El desarrollo de este Trabajo de Fin de Grado ha supuesto un arduo camino de aprendizaje e investigaci´on acerca del campo del deep learning. Sin embargo, este ha aportado mucho a mi conocimiento, siendo la primera experiencia en esta disciplina. Gracias al desarrollo del mismo, he podido comprender el gran alcance, potencial y utilidad del deep learning sobre muchas disciplinas y, especialmente, en la rama de visi´on por ordenador. Desde un punto de vista tecnol´ogico, la elecci´on de usar fastai junto a PyTorch ha resultado una muy buena decisi´on debido principalmente a su accesibilidad y productividad, permitiendo a usuarios de toda clase, desde aquellos ajenos al mundo de las redes neuronales hasta los m´as experimentados, construir y entrenar modelos de deep learning, con muy pocas l´ıneas de c´odigo, para resolver tareas espec´ıficas, consiguiendo muy buenos resultados. El servicio de Google Colab ha resultado imprescindible para poder llevar a cabo este proyecto, consiguiendo un poder de c´omputo alojado relativamente elevado de forma gratuita, que un hardware cotidiano no puede alcanzar. Desde un punto de vista m´as t´ecnico, los distintos errores derivados de la inexperiencia, han demostrado la gran importancia que tiene realizar un buen pre-procesamiento sobre las im´agenes y una buena distribuci´on de estas en los conjuntos de entrenamiento y validaci´on, para poder obtener resultados robustos de los que poder sacar conclusiones veraces y lo m´as fieles a la realidad. La t´ecnica de regularizaci´on de data augmentation ha resultado sumamente ´util para evitar que los modelos caigan en un overfitting y que su capacidad de aprendizaje aumente, alcanzando mejores precisiones. Tambi´en se ha apreciado c´omo al aplicar una pol´ıtica de entrenamiento de un ciclo, tal y como hace por defecto la funci´on fine tune de fastai, las precisiones que se consiguen son superiores y en un menor tiempo de entrenamiento. Adem´as, se ha observado la importancia de escoger unos hiperpar´ametros, como el learning rate y el n´umero de ´epocas, que sean adecuados. Jorge Barrio Conde 113
8.1. OTRAS APLICACIONES DEL DEEP LEARNING EN EL CAMPO DE LA ASTRONOM´ IA En cuanto a las redes neuronales utilizadas, se ha podido llegar a la conclusi´on de que usar t´ecnicas de transfer learning para aprovechar los modelos pre-entrenadas, son una gran opci´on para alcanzar mejores precisiones y en menores tiempos. Concretamente, los mejores resultados obtenidos a lo largo del proyecto han sido con la versi´on 50 de ResNet. Gracias a estos modelos pre-entrenados con el dataset ImageNet, es posible conseguir modelos de visi´on por ordenador muy preciso, a´un contando con un dataset muy escaso. Referido a las soluciones propuestas para los problemas, en la clasificaci´on morfol´ogica, utilizando el modelo de regresi´on, se obtuvo un mejor caso de RMSE 0,117. Por otro lado, el modelo de clasificaci´on obtuvo un mejor caso de un 70 % de aciertos, aproximadamente. En la detecci´on de bordes de galaxias, a partir de un modelo de regresi´on, se obtuvo un mejor caso de MAE 3,91. Teniendo en cuenta la baja resoluci´on de las im´agenes por la desmesurada distancia a la que se encuentran muchas de las galaxias y las distintas limitaciones encontradas en cada problema (por ejemplo la detenci´on del ´angulo de una galaxia redonda), los resultados revelan que las soluciones propuestas son bastante precisas y realizan suficientemente bien sus tareas. Finalmente, con este trabajo se ha conseguido abordar y cumplir con ´exito todos los objetivos propuestos y enumerados en la introducci´on del mismo. 8.1. Otras aplicaciones del Deep Learning en el campo de la astronom´ıa Existen multitud de problemas del campo de la astronom´ıa que pueden ser abordados con t´ecnicas de Deep Learning. Durante una de las reuniones, se describi´o un problema muy t´ıpico que consist´ıa en la clasificaci´on de los cuerpos celestes entre estrellas y galaxias. Hay dos caracter´ısticas claves que pueden ayudar a determinar si un elemento de una imagen es una estrella o una galaxia. Las estrellas de una imagen destacan por un brillo alto. En contraposici´on, las galaxias corresponden a elementos con altos valores en la longitud del semieje mayor. La Figura 8.1 contiene una gr´afica con todos los elementos del campo COSMOS del cartografiado CANDELS, cuyo eje horizontal representa la magnitud de apertura fija circular y el eje vertical la longitud del semieje mayor. Para obtener estos datos se ha utilizado SExtractor, en cuyo resultado viene descrita la apertura fija circular como MAG APER y la longitud del semieje mayor como A IMAGE [81]. Como puede analizarse en la gr´afica, salen dos colas de puntos, una horizontal y otra vertical. Teniendo en cuenta que una menor apertura fija circular representa un cuerpo muy brillante, los puntos de la cola horizontal muy probablemente correspondan a estrellas. Por el contrario, los puntos de la cola vertical corresponder´an a galaxias, tal y como se ha ilustrado sobre la imagen. Tras analizar estos dos factores, queda una nube de puntos indefinida. Esta nube corresponde a todos aquellos cuerpos que, debido a su distancia con respecto al Hubble, no pueden ser clasificados con tanta facilidad y es donde las t´ecnicas de aprendizaje autom´atico podr´ıan realizar la clasificaci´on que el sistema experto basado en estas normas no es capaz. 114 Jorge Barrio Conde
CAP´ ITULO 8. CONCLUSIONES Figura 8.1: Estrellas frente a galaxias de manera anal´ıtica Fuente: elaboraci´on propia utilizando Topcat con los datos obtenidos con SExtractor para un campo COSMOS del cartografiado CANDELS. 8.2. L´ıneas de trabajo futuro En cuanto a las l´ıneas sobre las que se puede continuar este trabajo, en el problema de detecci´on de bordes se podr´ıa modificar la funci´on de coste y la m´etrica, de forma que a mayor relaci´on entre los semiejes de la galaxia (semieje menor semieje mayor ), el coste del error de la predicci´on del ´angulo de la galaxia se aminore, sin que esto despiste el aprendizaje de la red para el resto de valores de la regresi´on. De esta forma se conseguir´ıa afinar la precisi´on a la hora de detectar los bordes de las galaxias cuya forma sea m´as circular, siendo estas los peores casos obtenidos por el modelo. A su vez, pueden probarse otros planteamientos para abordar este ´ultimo problema. Un ejemplo ser´ıa desarrollar un modelo que en lugar de predecir cinco valores, tenga que predecir cinco puntos en la imagen. Estas coordenadas de la imagen, representadas en fastai con la clase PointBlock, podr´ıan ser cuatro puntos para los extremos de los ejes de las galaxias y un quinto punto para el centro de las mismas. De esta forma, el error del ´angulo, no entorpecer´ıa el entrenamiento como si ocurre en el caso de la regresi´on. La Figura 8.2 representa con cruces blancas los cinco puntos de la imagen que podr´ıan determinar el borde de una galaxia. Tambi´en podr´ıa ser interesante probar este mismo problema, enfoc´andolo como una tarea de segmentaci´on, en la que, partiendo de un conjunto de im´agenes de galaxias sin enmascarar, se desarrollase un modelo capaz de generar un mapa de segmentaci´on que detectase la galaxia central y sus vecinas, pudiendo hacer una distinci´on entre ambas. Jorge Barrio Conde 115
BIBLIOGRAF´ IA [13] Google Developers. Reducci´on de la p´erdida: Descenso de gradiente estoc´astico. https: //developers.google.com/machine-learning/crash-course/reducing-loss/stoc hastic-gradient-descent. Accedido: 28/12/2020. [14] Google Developers. Reducci´on de la p´erdida: Descenso de gradientes. https://develo pers.google.com/machine-learning/crash-course/reducing-loss/gradient-des cent?hl=es-419. Accedido: 27/12/2020. [15] Sander Dieleman, Kyle W. Willett, and Joni Dambre. Rotation-invariant convolutional neural networks for galaxy morphology prediction. Monthly Notices of the Royal Astronomical Society, 450(2):1441–1459, Apr 2015. [16] Schuchen Du. Understanding deep self-attention mechanism in convolution neural networks, 2020. https://medium.com/ai-salon/understanding-deep-self-atte ntion-mechanism-in-convolution-neural-networks-e8f9c01cb251. Accedido: 13/12/2020. [17] Mar´ıa Luisa Gonz´alez D´ıaz. L´exico y sintaxis de los lenguajes de programaci´on. In Lenguajes de Programaci´on, Grado de Ingenier´ıa Inform´atica, chapter 2. 2020. [18] ESA. Esa/hubble. https://esahubble.org/. Accedido: 17/05/2021. [19] ESA. Hubble explores the origins of modern galaxies, 2013. https://esahubble.org/ news/heic1315/. Acceido: 18/05/2021. [20] Fastai. Fastai documentation.https://docs.fast.ai/. Accedido: 15/02/2021. [21] fast.ai. Forums for fast.ai deep learning courses. https://forums.fast.ai/. Accedido: 20/03/2021. [22] fast.ai website. fast.ai. https://www.fast.ai/. Accedido: 23/02/2021. [23] Python Software Foundation. Pypi. https://pypi.org/. Accedido: 01/06/2021. [24] GeeksforGeeks. Underfitting and overfitting in machine learning. 2020. https://ww w.geeksforgeeks.org/underfitting-and-overfitting-in-machine-learning/. Accedido: 14/11/2020. [25] Rick O. Gilmore. Psych 260 - neuroanatomy iii. https://psu-psychology.github.io /psych-260-2020-fall/lectures/260-2020-09-10-anatomy-III.html. Accedido: 28/11/2020. [26] Ian Goodfellow, Yoshua Bengio, and Aaron Courville. Deep Learning. MIT Press, 2016. http://www.deeplearningbook.org. Accedido: 23/11/2020. [27] Google. Google trends. https://trends.google.com/trends/. Accedido: 25/05/2021. [28] NASA / GSFC. The fits support office. https://fits.gsfc.nasa.gov/. Accedido: 10/03/2021. [29] Jason Gunthorpe. Gu´ıa de usuario de APT. Debian, 1998. https://www.debian.org /doc/manuals/apt-guide/. Accedido: 01/06/2021. 122 Jorge Barrio Conde
BIBLIOGRAF´ IA [30] Red Hat. El concepto de linux. https://www.redhat.com/es/topics/linux. Accedido: 25/05/2021. [31] Ryan Hausen and Brant Robertson. Morpheus — morpheus documentation. https: //morpheus-astro.readthedocs.io/en/latest/. Accedido: 04/04/2021. [32] Ryan Hausen and Brant E. Robertson. Morpheus: A deep learning framework for the pixel-level analysis of astronomical image data. The Astrophysical Journal Supplement Series, 248(1):20, May 2020. [33] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition, 2015. [34] Jose Martinez Heras. Gradiente descendiente para aprendizaje autom´atico, 2020. https: //www.iartificial.net/gradiente-descendiente-para-aprendizaje-automatico /#more-1191. Accedido: 16/12/2020. [35] Geoffrey E. Hinton, Nitish Srivastava, Alex Krizhevsky, Ilya Sutskever, and Ruslan R. Salakhutdinov. Improving neural networks by preventing co-adaptation of feature detectors, 2012. [36] Dr. Benne W. Holwerda. Source Extractor for Dummies. Space Telescope Science Institute, 5 edition, 12 2005. [37] Jeremy Howard and Sylvain Gugger. Fastbook.https://github.com/fastai/fastbo ok. Accedido: 25/02/2021. [38] Jeremy Howard and Sylvain Gugger. Practical deep learning for coders. https://cour se.fast.ai/. Accedido: 23/02/2021. [39] Jeremy Howard and Sylvain Gugger. Deep Learning for Coders with Fastai and Pytorch: AI Applications Without a PhD. O’Reilly Media, Incorporated, 1 edition, 2020. [40] Jeremy Howard and Sylvain Gugger. Fastai: A layered api for deep learning. Information, 11(2):108, Feb 2020. [41] M. Huertas-Company, R. Gravet, G. Cabrera-Vives, P. G. P´erez-Gonz´alez, J. S. Kartaltepe, G. Barro, M. Bernardi, S. Mei, F. Shankar, P. Dimauro, and et al. A catalog of visual-like morphologies in the 5 CANDELS fields using deep-learning. The Astrophysical Journal Supplement Series, 221(1):8, Oct 2015. [42] Bob Hughes and Mike Cotterell. Software Project Management. McGraw-Hill Education, 5th edition edition, 2009. [43] Sergey Ioffe and Christian Szegedy. Batch normalization: Accelerating deep network training by reducing internal covariate shift, 2015. [44] Jeremy Jordan. Setting the learning rate of your neural network, Mar 2018. https: //www.jeremyjordan.me/nn-learning-rate/. Accedido: 21/12/2020. [45] Kaggle. What’s kaggle? https://www.kaggle.com/. Accedido: 25/04/2021. Jorge Barrio Conde 123
BIBLIOGRAF´ IA [46] Nal Kalchbrenner, Edward Grefenstette, and Phil Blunsom. A convolutional neural network for modelling sentences, 2014. [47] Jeyhan S. Kartaltepe, Mark Mozena, Dale Kocevski, Daniel H. McIntosh, Jennifer Lotz, Eric F. Bell, Sandy Faber, Harry Ferguson, David Koo, Robert Bassett, and et al. CANDELS visual classifications: Scheme, data release, and first results. The Astrophysical Journal Supplement Series, 221(1):11, Oct 2015. [48] Diederik P. Kingma and Jimmy Ba. Adam: A method for stochastic optimization, 2017. [49] Anton M. Koekemoer, S. M. Faber, Henry C. Ferguson, Norman A. Grogin, Dale D. Kocevski, David C. Koo, Kamson Lai, Jennifer M. Lotz, Ray A. Lucas, Elizabeth J. McGrath, Sara Ogaz, Abhijith Rajan, Adam G. Riess, Steve A. Rodney, Louis Strolger, Stefano Casertano, Marco Castellano, Tomas Dahlen, Mark Dickinson, Timothy Dolch, Adriano Fontana, Mauro Giavalisco, Andrea Grazian, Yicheng Guo, Nimish P. Hathi, Kuang-Han Huang, Arjen van der Wel, Hao-Jing Yan, Viviana Acquaviva, David M. Alexander, Omar Almaini, Matthew L. N. Ashby, Marco Barden, Eric F. Bell, Fr´ed´eric Bournaud, Thomas M. Brown, Karina I. Caputi, Paolo Cassata, Peter J. Challis, Ranga-Ram Chary, Edmond Cheung, Michele Cirasuolo, Christopher J. Conselice, Asantha Roshan Cooray, Darren J. Croton, Emanuele Daddi, Romeel Dav´e, Duilia F. de Mello, Loic de Ravel, Avishai Dekel, Jennifer L. Donley, James S. Dunlop, Aaron A. Dutton, David Elbaz, Giovanni G. Fazio, Alexei V. Filippenko, Steven L. Finkelstein, Chris Frazer, Jonathan P. Gardner, Peter M. Garnavich, Eric Gawiser, Ruth Gruetzbauch, Will G. Hartley, Boris H¨aussler, Jessica Herrington, Philip F. Hopkins, Jia-Sheng Huang, Saurabh W. Jha, Andrew Johnson, Jeyhan S. Kartaltepe, Ali A. Khostovan, Robert P. Kirshner, Caterina Lani, Kyoung-Soo Lee, Weidong Li, Piero Madau, Patrick J. McCarthy, Daniel H. McIntosh, Ross J. McLure, Conor McPartland, Bahram Mobasher, Heidi Moreira, Alice Mortlock, Leonidas A. Moustakas, Mark Mozena, Kirpal Nandra, Jeffrey A. Newman, Jennifer L. Nielsen, Sami Niemi, Kai G. Noeske, Casey J. Papovich, Laura Pentericci, Alexandra Pope, Joel R. Primack, Swara Ravindranath, Naveen A. Reddy, Alvio Renzini, Hans-Walter Rix, Aday R. Robaina, David J. Rosario, Piero Rosati, Sara Salimbeni, Claudia Scarlata, Brian Siana, Luc Simard, Joseph Smidt, Diana Snyder, Rachel S. Somerville, Hyron Spinrad, Amber N. Straughn, Olivia Telford, Harry I. Teplitz, Jonathan R. Trump, Carlos Vargas, Carolin Villforth, Cory R. Wagner, Pat Wandro, Risa H. Wechsler, Benjamin J. Weiner, Tommy Wiklind, Vivienne Wild, Grant Wilson, Stijn Wuyts, and Min S. Yun. CANDELS: THE COSMIC ASSEMBLY NEAR-INFRARED DEEP EXTRAGALACTIC LEGACY SURVEY—THE HUBBLE SPACE TELESCOPE OBSERVATIONS, IMAGING DATA PRODUCTS, AND MOSAICS. The Astrophysical Journal Supplement Series, 197(2):36, dec 2011. [50] Stanford Vision Lab. ImageNet. Stanford University. https://www.image-net.org/. Accedido: 13/05/2021. [51] Sam Lau, Joey Gonzalez, and Deb Nolan. Principles and Techniques of Data Science. 2020. https://www.textbook.ds100.org/. Accedido: 28/11/2020. [52] Carlos Mariju´an L´opez. Fundamentos de Matem´aticas, Grado en Ingenier´ıa Inform´atica, Estad´ısta e INdat. 2017. 124 Jorge Barrio Conde
BIBLIOGRAF´ IA [53] Warren S. Mcculloch and Walter Pitts. A logical calculus of ideas immanent in nervous activity. Bulletin of Mathematical Biophysics, 5:115—-133, 1943. [54] Peter Melchior. The cluster lensing and supernova survey with hubble: An overview. https://www.researchgate.net/figure/Each-CLASH-cluster-is-observed-in16-HST-filters-spanning-2000-17000A-with-WFC3-UVIS-in fig1 231113522. Accedido: 19/05/2021. [55] Marvin Minsky and Seymour Papert. Perceptrons: An Introduction to Computational Geometry. MIT Press, Cambridge, MA, USA, 1969. [56] Anshu Mishra. Convolutional neural networks-artificial neural network for computer vision. Medium, 2019. https://medium.datadriveninvestor.com/convolutionalneural-networks-artificial-neural-network-for-computer-vision-7ee553df 5df9. Accedido: 12/04/2021. [57] Abdelmalik Moujahid, I˜naki Inza, and Pedro Larra˜naga. Redes neuronales. In M´etodos Matem´aticos en Ciencias de la Computaci´on, chapter 14. http://www.sc.ehu.es/cc wbayes/docencia/mmcc/docs/t14-neuronales. Accecido: 13/12/2020. [58] Mozilla. Regular expressions - JavaScript — MDN.https://developer.mozilla.or g/es/docs/Web/JavaScript/Guide/Regular Expressions. Accedido: 02/04/2021. [59] NASA. About the hubble space telescope. https://www.nasa.gov/mission pages/h ubble/about. Accedido: 16/05/2021. [60] NASA. Hubble Space Telescope, observatory - instruments. https://www.nasa.gov /content/goddard/hubble-space-telescope-science-instruments. Accedido: 15/03/2021. [61] NASA. Wfc3 - technology - filters. https://wfc3.gsfc.nasa.gov/tech/filters.ht ml. Accedido: 16/05/2021. [62] NASA. A flight through the candels ultra deep survey field, 2019. https://svs.gsfc .nasa.gov/31035. Accedido: 18/05/2021. [63] Andrew Yan-Tak Ng, Kian Katanforoosh, and Younes Bensouda Mourri. Improving deep neural networks: Hyperparameter tuning, regularization and optimization. Coursera. [64] Michael A. Nielsen. Neural Networks and Deep Learning. Determination Press, 2015. http://neuralnetworksanddeeplearning.com/. Accedido: 05/11/2020. [65] Koldo Pina Ortiz. Como entrenar a tu perceptr´on. Mar 2018. https://koldopina.co m/como-entrenar-a-tu-perceptron/. Accedido: 05/10/2020. [66] Keiron O’Shea and Ryan Nash. An introduction to convolutional neural networks, 2015. [67] Overleaf. Documentation.https://es.overleaf.com/learn. Accedido: 15/10/2020. [68] Pandas. pandas documentation.https://pandas.pydata.org/docs/. Accedido: 02/05/2021. Jorge Barrio Conde 125
BIBLIOGRAF´ IA [69] Alfonso Jes´us Poblaci´on. C´alculo diferencial en varias variables. In Ampliaci´on de Matem´aticas, Grado de Ingenier´ıa Inform´atica, chapter 5. 2018. [70] Jonathon Price, Alfred Wong, Tiancheng Yuan, Joshua Mathews, and Taiwo Olorunniwo. Stochastic gradient descent. Cornell University, 2020. https://optimizati on.cbe.cornell.edu/index.php?title=Stochastic gradient descent. Accedido: 11/04/2021. [71] Jupyter Project. Jupyter. https://jupyter.org/. Accedido: 20/03/2021. [72] Python Software Foundation. Python 3 documentation.https://docs.python.org/3/. [73] PyTorch. PyTorch documentation.https://pytorch.org/docs/. Accedido: 20/01/2020. [74] Quora. What is the difference between deep learning and usual machine learning? https://www.quora.com/What-is-the-difference-between-deep-learning-and -usual-machine-learning. Accedido: 10/06/2021. [75] Google Research. Colaboratory, Frequently asked questions. https://research.googl e.com/colaboratory/faq.html. Accedido: 25/05/2021. [76] ResearchGate. Application of transfer learning using convolutional neural network method for early detection of terry’s nail. https://www.researchgate.net/fig ure/Illustration-of-Max-Pooling-and-Average-Pooling-Figure-2-above-sho ws-an-example-of-max fig2 333593451. Accedido: 16/12/2020. [77] ResearchGate. Maritime semantic labeling of optical remote sensing images with multiscale fully convolutional network. https://www.researchgate.net/figure/The-rece ptive-field-of-each-convolution-layer-with-a-3-3-kernel-The-green-area -marks fig4 316950618. Accedido: 15/05/2021. [78] Mark Robins. The difference between artificial intelligence, machine learning and deep learning. Intel, May 2020. https://www.intel.es/content/www/es/es/artificialintelligence/posts/difference-between-ai-machine-learning-deep-learnin g.html. Accedido: 10/11/2020. [79] D. Rumelhart, Geoffrey E. Hinton, and R. J. Williams. Learning representations by back-propagating errors. Nature, 323:533–536, 1986. [80] Amazon Web Services. Regression - amazon machine learning. https://docs.aws .amazon.com/es es/machine-learning/latest/dg/regression.html. Accedido: 20/03/2021. [81] SExtractor. SExtractor User Manual — SExtractor 2.24.2 documentation, 2017. https: //sextractor.readthedocs.io/en/latest/index.html. Accedido: 31/05/2021. [82] Kousai Smeda. Understand the architecture of cnn, Oct 2019. https://towardsdat ascience.com/understand-the-architecture-of-cnn-90a25e244c7. Accedido: 15/12/2020. [83] Leslie N. Smith. A disciplined approach to neural network hyper-parameters: Part 1 – learning rate, batch size, momentum, and weight decay, 2018. 126 Jorge Barrio Conde
BIBLIOGRAF´ IA [84] Leslie N. Smith and Nicholay Topin. Super-convergence: Very fast training of neural networks using large learning rates, 2018. [85] BarD Software s.r.o. Ganttproject. https://www.ganttproject.biz/. Accedido: 20/11/2020. [86] Eli Stevens, Luca Antiga, and Thomas Viehmann. Deep Learning with PyTorch. Manning, 2020. https://pytorch.org/assets/deep-learning/Deep-Learning-with-Py Torch.pdf. Accedido: 20/01/2021. [87] Ilya Sutskever, James Martens, George Dahl, and Geoffrey Hinton. On the importance of initialization and momentum in deep learning. In Sanjoy Dasgupta and David McAllester, editors, Proceedings of the 30th International Conference on Machine Learning, volume 28 of Proceedings of Machine Learning Research, pages 1139–1147, Atlanta, Georgia, USA, 17–19 Jun 2013. PMLR. [88] Mark Taylor. Topcat. http://www.star.bristol.ac.uk/~mbt/topcat/. Accedido: 16/03/2021. [89] Jupyter Team. Jupyter Notebook Documentation, 2015. https://jupyter-notebook .readthedocs.io/. Accedido: 20/03/2021. [90] Andrew Trask. A neural network in 13 lines of python (part 2 - gradient descent), 7 2015. https://iamtrask.github.io/2015/07/27/python-network-part2/. Accedido: 17/05/2021. [91] CANDELS UDF. Nasa, 2019. https://svs.gsfc.nasa.gov/31020. Accedido: 18/05/2021. [92] Guido van Rossum, Barry Warsaw, and Nick Coghlan. Style Guide for Python Code. Python Software Foundation, Jul 2001. https://www.python.org/dev/peps/pep-00 08/. Accedido: 16/01/2021. [93] Carlos Santana Vega. Dot CSV. https://www.youtube.com/DotCSV. Accedido: 19/03/2021. [94] Wikipedia. Gradient descent. https://en.wikipedia.org/wiki/Gradient descent. Accedido: 11/03/2021. [95] Wikipedia. Hubble sequence. https://en.wikipedia.org/wiki/Hubble sequence. Accedido: 19/05/2021. [96] Wikipedia. Perceptr´on multicapa. https://es.wikipedia.org/wiki/Perceptr%C3% B3n multicapa. Accedido: 04/10/2020. Jorge Barrio Conde 127