ACTUALIZACIÓN POSTERIOR: Cuelgo la presentación que hice para la defensa del PFC. Igual queda más claro en qué consiste.


Bueno, como cada vez queda menos tiempo (el 12 de noviembre es la última fecha para entregar) y no sé si me dará tiempo de escribir el post sobre el Perceptrón Multicapa, me lo salto y voy a intentar explicar en qué consiste mi Proyecto Fin de Carrera; así los que me preguntan qué estoy haciendo, tienen aquí una clara (espero) explicación.

Esta semana he empezado con la documentación, y esto que pego más adelante es un primer intento de lo que será la Descripción (y Justificación) del Proyecto en la Memoria. No creo que cambie mucho la cosa.

Un posible nombre descriptivo del PFC en sí, podría ser:

Asistente para modelado de redes neuronales MLP mediante computación distribuída.

Las actividades esenciales en las que va a consistir el programa son:

  • Interfaz gráfica para facilitar el desarrollo de las redes MLP;
  • Generación automática de modelos distintos en base a los parámetros;
  • Computación distribuida de los diferentes modelos;
  • Selección automática de la red más eficiente;
  • Muestra por pantalla de los parámetros significativos de la mejor red.

Las redes neuronales (como expliqué en un anterior post) se definen por una amplia cantidad de caracteres que implican un enorme y complejo número de cálculos con ellos, lo cual significa que es muy difícil predecir exactamente el comportamiento que tomará la red con diferentes parámetros. Además, puesto que la elección de algunos es dejada al azar —como los pesos entre cada neurona— también es necesario entrenar varias veces un mismo modelo de red (con todos los parámetros igual salvo aquellos que se dejan al azar) para tratar de obtener mejores resultados.

Otro factor importante es que el cálculo del entrenamiento no se realiza inmediatamente sino que conlleva un tiempo de procesamiento nada despreciable, la elaboración de una buena red neuronal con una salida eficiente requiere unas elevadas dosis de ensayo/error; resultando una tarea harto tediosa, y que consume mucho tiempo.

Además la herramienta utilizada para el entrenamiento y ejecución de las redes —entorno/lenguaje estadístico R— funciona como lenguaje de scripting, y dado el creciente pánico y temor de la mayoría de usuarios ante la introducción de comandos en consola, y lo pesado de definir múltiples redes distintas mediante este sistema, se creará una interfaz gráfica que lo facilite.

Por todo ello, surge la necesidad de automatizar esta tarea, permitiendo la preselección de varios modelos —mediante una GUI/IGU (Graphical User Interface/Interfaz Gráfica de Usuario)— que se entrenen secuencialmente sin la constante intervención del usuario. Se permitirá la preselección de los diversos parámetros para formar las distintas redes que se desee testear, dejando que las máquinas lo calculen por sí mismas.

Dado que el total de redes puede ser bastante alto, lo que implicaría un altísimo tiempo de procesamiento, es necesario buscar una solución basada en la computación distribuida, en la que todos los modelos escogidos por el usuario se evaluen en varios servidores de cálculo repartidos en distintos ordenadores.

La solución presentada en este proyecto, va un paso más, y no sólo entrena todas las redes, sino que automatiza la selección de la red que obtiene un rendimiento más cercano al óptimo. El lenguaje R sólo realiza el entrenamiento y ejecución de las redes, devolviendo únicamente la información relevante de las mismas, sin aplicar ningún criterio de calidad. Puesto que se pretenden entrenar un elevado número de ellas, sería incómodo para el usuario compararlas una a una, de modo que se automatiza también este proceso: tanto en los servidores de cálculo para devolver su mejor red entre las diversas entrenadas, como en la máquina que solicita todos los modelos y que recibe los mejores entre ellos.

El criterio de calidad está basado en la curva ROCReceiver Operating Characteristic curve— y es el valor del área bajo la curva —Area Under Curve (AUC)—. Este criterio será explicado detalladamente más adelante.