lunes, 25 de mayo de 2009

Entrenando la ANN

Lo peor que podía suceder con el entrenamiento de la red neuronal artificial (ANN: Artificial Neural Network) ha pasado. Después de perder bastante tiempo en el laboratorio me he puesto seriamente con el proyecto. Y finalmente he terminado de crear el algoritmo (no excesivamente complicado) que debería entrenar a la red a partir de los cuestionarios obtenidos hace unos días. Este tipo de algoritmos, dentro del campo de la inteligencia artificial, van aprendiendo por si solos a partir de datos donde se conoce el resultado (de ahí las encuestas). Es decir, sabiendo lo que ocurre en una serie de casos, al final, debería ser capar de predecir el resultado en otros casos con una cierta fiabilidad.

Tras ir ayudándome de varias fuentes en Internet y terminar esta parte del programa me he dispuesto a comprobar los errores. Normalmente suelen aparecer decenas o centenas de ellos. La mayoría absurdos que se solucionan rápidamente. Por lo menos es lo que me pasa a mí cuando me pongo a programar. Pero esta vez no ha aparecido más que un error. Segundos después ya no había errores. Lo he ejecutado y ha finalizado sin entrar en bucles infinitos. Sin hacer cosas raras. Parecía que funcionaba... Por una parte estaba contento, pero por la otra no podía evitar sentirme receloso. Estas cosas no suelen salir tan fácilmente. Así que he empezado a curiosear los valores que manejaba el programa. En teoría, el entrenamiento termina cuando la suma de errores es menor que un valor establecido por el diseñador, en este caso: yo. ¿Cual era la suma de los errores? "-1#.0" Lo que me temía, ni siquiera empezaba el entrenamiento. Steven me ha echado una mano un momento y hemos solucionado unos problemas no detectados por el programa. Por fin ha empezado a mostrar valores para la suma de los errores. Números reales. Pero esta vez el problema era peor. En lugar de ir disminuyendo paulatinamente hasta acercarse a cero, los valores se mantenían en varios millones. Vamos: un desastre. Porque este tipo de problemas no son debidos a errores de confusión, son errores de base en el algoritmo. He leído algo respecto a este tipo de problemas. diciendo que probablemente el sistema encuentra una solución parcial, que no es la global. Por lo tanto, no válida. He encontrado ideas para solucionar el problema, pero todas filosóficas. Inútiles. Por lo menos hasta que encuentre la manera de traducir "sacudir el sistema" al lenguaje matemático...

Mañana, que parece que será un día largo, me pondré seriamente en el laboratorio. Aquí, en casa, no tengo todo lo necesario. La verdad es que estaba teniendo demasiados progresos últimamente, ya iba tocando un alto en el camino. No porque quiera, sino porque suele ocurrir.

Descargué hace días la discografía de Ray Charles. Últimamente lo estoy escuchando bastante. Esta canción en particular me da bastante energía. Sobretodo a medida que llega el final.



Un saludo!

Carlos

No hay comentarios:

Publicar un comentario