Skip to main content

Investigación sobre el reconocimiento de objetos físicos mediante redes neuronales

Autor: Giancarlo Morales Muñoz
Centre: INST.JAUME VICENS VIVES
Document:
La manera en que nosotros procesamos los objetos de nuestro entorno parece única e irreproducible. Pero como se ha demostrado a lo largo del trabajo, esto no es así. La inteligencia artificial ha supuesto un cambio de paradigma, y así, han surgido diversas maneras de percibir la información presente en nuestro entorno. Durante el presente estudio, se ha indagado y encontrado qué procesos conforman esta percepción “lógica” o “robótica” de la información, para posteriormente ser puesta en práctica. Entonces, principalmente se busca responder a la ambigua pregunta: ¿Cómo aprende una máquina? Además, con una demostración práctica.
El cuerpo del proyecto está compuesto en dos partes: parte teórica y parte práctica. Cabe destacar que me he centrado en gran parte en intentar dejar claros los conceptos teóricos: los fundamentos para entender la esencia del funcionamiento de las redes neuronales, con una investigación presente aunque no muy desarrollada de las bases matemáticas. He hecho una extensa parte teórica porque personalmente tenía mucha intriga por profundizar en el área del aprendizaje en máquinas, ya que nunca la había logrado comprender. Más aún, en la actualidad, sobretodo en los medios de comunicación, se suele hablar mucho sobre “Inteligencia Artificial”, aunque nunca llega a darse una definición útil: siempre contemplamos las aplicaciones.

Durante esta parte teórica hago un recorrido sobre las primeras propuestas y formas que ha adquirido el pensamiento autónomo de una máquina. Comenzando por intentar limitar la definición de Inteligencia Artificial, trato los campos del Aprendizaje Automático (comúnmente conocido como Machine Learning) y el Aprendizaje Profundo (Deep Learning). Como a resultado de mi investigación, expongo cuáles son los métodos tradicionales (usualmente estadísticos) y modernos (con la ayuda de redes neuronales, las cuales explico en profundidad) que se usan para el procesamiento de información. Este procesamiento principalmente es una clasificación de información, o una construcción de relaciones entre variables. En general, estos métodos suelen contar con un grupo de datos de entrada, que al ser procesados, devuelven un resultado. Por ejemplo, en mi proyecto, los datos de entrada son número escritos a mano en un papel del 0 al 9 (fotos), y el resultado es su correspondiente dígito informático.

Por otro lado, la parte práctica ha consistido en construido mi propio modelo de reconocimiento de objetos físicos, que en mi caso serán imágenes con los números del 0 a 9, en base a los conceptos teóricos explicados. Como se ve durante el trabajo, hay distintos parámetros que condicionan el buen rendimiento de un modelo, y estas variables son mejores o peores dependiendo de la situación a la que se apliquen. Un modelo de reconocimiento de personas no tiene exactamente la misma estructura que uno que reconozca irregularidades en el ADN de una persona.
La metodología seguida para hacer la práctica consiste en utilizar una de las librerías de un lenguaje de programación para determinar los parámetros (los pesos de las redes neuronales) que mejor rendimiento le otorgan a mi modelo. Una máquina aprende a base de muchas repeticiones, así que se debe entrenar con abundantes datos para dar buenos resultados. Los datos de entrenamiento los consigo gracias a la base de datos MNIST. Así, luego de sucesivas pruebas, logro dar con una estructura sólida y que acaba dando buenos resultados a priori. Finalmente, pude utilizar el modelo para reconocer mis propios dígitos exitosamente. El resultado del proyecto es el modelo de la red neuronal, aunque en cuanto a su rendimiento, obtuve lo siguiente:
En sentido teórico, luego de haber realizado el entrenamiento del modelo con datos extraídos de una base de datos, obtuve un 98,58% de precisión. Este porcentaje es teórico, porque corresponde a pruebas hechas con datos de la base de datos: el hecho que el modelo sea bueno reconociendo los números de los otros no me garantiza que sea bueno reconociendo los míos. De las 12 imágenes de números escritos a mano que mi modelo tuvo que procesar, reconoció correctamente 10 (85% de éxito).
Considero que los resultados son bastante buenos, porque los errores de reconocimiento que ha tenido el modelo los he podido justificar bien.
En cuantoa los problemas que he tenido, a parte de errores informático del código, tengo que decir que en un principio quería reconocer objetos físicos tridimensionales. Sin embargo, dada la complejidad tanto para diseñar un modelo que los procese bien como para poder explicarlo todo adecuadamente en un solo trabajo, decidí hacerlo únicamente con números escritos a papel: las bases son las mismas.
A modo de conclusión, cabe destacar que he podido explorar a fondo mi objeto de estudio: las redes neuronales y el reconocimiento de objetos. Luego de obtener los resultados, he podido razonar las limitaciones de este proyecto, y las posibles ampliaciones que podría tener, si hubiese dispuesto de más recursos.