Framework para el Aprendizaje de Redes Neuronales Profundas - Anzola Avila, Alejandro; Moreno Silva, Juan Andres (Escuela Colombiana de Ingeniería Julio Garavito, 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.

Machine Learning is a field of artificial intelligence that has been developing exponentially in the last few years due to the immense amount of data, processing power, and technology innovations. Among the great strengths that this technology offers is the vast amount of problems from different domains and knowledge fields. It is even possible to reuse knowledge and models obtained after solving a problem from a similar field. One of the main actors in this revolution is the neural networks technology, which is part of the field of machine learning. This technology lets us solve an infinite amount of problems, from classifying written numbers to source code generation from natural language. However, this technology has a very steep learning curve. Our solution to this problem is to offer neural network learning resources to help students learn base concepts through experimentation and extension. The developed resources are (i) a learning framework and (ii) a set of problem-solution cases. The framework lets students build and test neural network models. This framework is designed to aid newcomers interested in the field to understand base concepts, following software engineering best practices. This framework is built to represent artificial intelligence base concepts, in a way general enough to be extensible to different neural network models. To achieve this, the framework has various extensible components that correspond to different main concepts of neural networks. Among these components are (i) neural network types (deep, recurrent, and convolutional); (ii) activation and loss functions; and (iii) regularization and optimization mechanisms. In the set of problem-solution cases, there are three classic problems and one specialized problem in the field of hydrology. The classic problems selected are handwritten digits with dense and convolutional networks, and positive-negative text classification with recurrent networks. The hydrology problem was the prediction of flow in the Magdalena river; in this work, we made two models to evaluate them: a multilayer perceptron (MLP for short) and a Long-short Term Memory (LSTM for short) for evaluation. The cases developed allowed us to test the versatility of our framework in addition to having learning resources. In three of the four cases, the performance of the framework was verified and deemed appropriate. The case that could not be implemented was the one that required recurrent neural networks due to encountered scope problems; however, recurrent neural networks are considered in the framework structure's design. In the implementation of the cases, it could be seen that the framework works aligned with the philosophy of good software development practices. In particular, in the implementation of the hydrology problem, it was shown that it is easy to extend. One of the performance metrics that were taken was training times to have a way of comparing them, although it is not part of our objectives. It was not unexpected to find that Keras' performance is considerably superior to the implementation made in our framework. Finally, one of our framework's key aspects is that it was designed with only supervised models in mind, which only allows it to be extended to supervised models other than neural networks. The addition of unsupervised learning or reinforced learning is future work.
Keywords: Inteligencia artificial; aprendizaje profundo; Modelos Hidrológicos; Framework; Programación Orientada a Objetos; Recursos de Aprendizaje; Artificial Intelligence; Deep Learning; Hidrology Model; Framework; Object Oriented Programming; Learning resources