Framework para el Aprendizaje de Redes Neuronales Profundas (2020)
El aprendizaje automático es un campo de la inteligencia artificial que se ha desarrollado exponencialmente en los últimos años gracias a la inmensa cantidad de datos disponibles, al enorme poder de procesamiento con el que ahora se cuenta y a las innovaciones tecnológicas que se han logrado en este campo. Dentro de las grandes fortalezas que ofrece esta tecnología es la de poder resolver una amplia cantidad de problemas de diferentes dominios y áreas del conocimiento, e incluso es posible reusar el conocimiento y el modelo obtenido al resolver un problema en problemas de dominios similares. Uno de los principales actores en esta revolución son las redes neuronales, que pertenecen al campo del aprendizaje automático. Esta tecnología nos permite resolver una infinidad de problemas, desde clasificar números hasta generar código dado una instrucción en lenguaje natural. Sin embargo, esta tecnología tiene una curva de aprendizaje elevada. Nuestra solución a este problema es ofrecer recursos de aprendizaje de redes neuronales para que el estudiante pueda aprender conceptos bases a través de la experimentación y la extensión de los mismos. Los recursos desarrollados son (i) un framework de aprendizaje (marco de trabajo) y (ii) un conjunto de casos problema-solución. El framework (marco de trabajo) permite que los estudiantes puedan construir y probar modelos de redes neuronales. Este framework está diseñado con el fin de ser una ayuda para la comprensión de conceptos claves a novatos interesadas en el campo, siguiendo lineamientos de buenas practicas de ingeniería de software. El framework está pensado para representar los conceptos base de inteligencia artificial, de manera suficientemente general como para poder extenderlo para implementar diferentes modelos de redes neuronales. Para esto, el framework cuenta con distintos componentes extensibles que corresponden a los principales conceptos de redes neuronales. Dentro de estos componentes se encuentran: los tipos de redes neuronales (profundas, recurrentes y convolucionales); las funciones de activación y costo; los mecanismos de regularización y optimización, entre otros. En el conjunto de casos problema-solución se trabajaron tres problemas clásicos y un problema especializado en el área de hidrología. Los problemas clásicos seleccionados fueron la clasificación de dígitos escritos a mano con redes densas y convolucionales y la clasificación de textos (positivos ó negativos) con redes recurrentes. El problema en hidrología fue la predicción de un caudal en el río Magdalena, en este trabajo se realizaron dos modelos con el fin de evaluarlas: un perceptrón multicapas (MLP por sus siglas en inglés (MultiLayerPerceptron) y un modelo secuencial de capas con memoria (LSTM por sus siglas en inglés (LongShort Term Memory) ) con el fin de evaluarlas. Los casos desarrollados nos permitieron, además de generar recursos de aprendizaje, probar la versatilidad del framework. En tres de los cuatro casos se comprobó el desempeño adecuado del framework. El caso que no fue posible implementar fue el de redes neuronales recurrentes por problemas de alcance; sin embargo, están consideradas en el diseño de la estructura del framework. En la implementación de los casos se evidenció que el framework trabaja alineado con la filosofía de buenas practicas de desarrollo de software. En particular, en la implementación del problema en hidrología, se demostró que esta especialmente diseñado para tener fácil extensibilidad. Una de las métricas de desempeño que se tomaron fueron los tiempos de entrenamiento, aunque no es parte de los objetivos, de forma que se tuviera una forma de comparación en ese aspecto. No fue inesperado encontrar que el desempeño en Keras supero considerablemente a la implementación hecha en el framework. Finalmente, uno de los aspectos claves del framework es que fue diseñado con modelos supervisados en mente, lo cual permite extenderlo con modelos supervisados diferentes a las redes neuronales. Como trabajo futuro se desea incluir las lineas de aprendizaje no-supervisado ó aprendizaje reforzado.