El Linux en la Ciencia � C�mo se ha desarrollado una aplicaci�n de Redes Neuronales

ArticleCategory:[Categor�a del art�culo]

Applications

AuthorImage:

[Photo of the Author]

TranslationInfo:

original in de Ralf Wieland

de to en J�rgen Pohl

en to es Alberto Pardo

AboutTheAuthor:[Peque�a biograf�a del autor]

Mi inter�s se centra en la programaci�n entornos de simulaci�n,redes neuronales y sistemas difusos. El programa m�s reciente lo he desarrollado bajo Linux (desde 0.99pl12). Adem�s, estoy interesado en la electr�nica , en el hardware y la manera de relacionarlos relacionarlos con Linux.

Abstract:[Sumario del art�culo]

En este art�culo demuestra la idoneidad para la ciencia del software desarrollado bajo Linux . Se presentar� el desarrollo de herramientas para la simulaci�n de paisajes. Como ejemplo, se explicar� un simulador de redes neuronales que se ha desarrollado con GPL.

ArticleIllustration:[Ilustraci�n para la cabecera del art�culo]

[Illustration]

ArticleBody:[El contenido del art�culo]

�Cu�l es el objetivo?

Trabajo en un instituto de investigaci�n , el cual se centra en investigaciones sobre la tierra. Investigamos preguntas como las siguientes:


Cada una de estas preguntas encierra una gran trabajo de investigaci�n desarrollado por muchos cient�ficos. Mi ocupaci�n se centra en c�mo linux puede utilizarse para contestar estas preguntas. Para aclarar todo esto, tenemos que examinar la manera con la que se realizan las investigaciones y los an�lisis. Este tipo de retos tan desmoralizadores, como los mencionados anteriormente, consisten analizar muchos subproblemas. Si uno quiere clarificar si el agua permanece potable, se necesita obtener los datos del agua. Las fuentes de los datos son diversas. Sirva como ejemplo que la agricultura constribuye considerablemente en la poluci�n del agua.�Pero con que grado lo hace actualmente? y �Con qu� intervalo de tiempo se contamina el agua?
Para contestar este tipo de preguntas, se ha de considerar cada dato aportado. Es un proceso elaborado y por desgracia, acompa�ado de errores serios. Qui�n sabe a ciencia cierta la contaminaci�n que aporta el aire, atrav�s de los desechos industriales o de la agricultura. Los datos est�n asociados con las precipitaciones, su transporte y la evaporaci�n. Adem�s , estos factores est�n influenciados por los cambios clim�ticos. Para poder investigar este proceso, la simulaci�n por ordenador es un requisito indispensable . Como paso previo a la simulaci�n, se han de determinar un n�mero de restricciones, par�metros y funciones. Las funciones y los par�metros se extraen de los test de laboratorio, test de campo y observaciones reales. Nos indican la absorci�n del fertilizante por las plantas, el proceso de degradaci�n del suelo, etc.
La simulaci�n se basa en dar por supuesto un escenario base y se ejecuta mediante Simulaci�n Monte Carlo. Para hacer esto se var�a estocasticamente los datos y se repite la simulaci�n con diferentes condiciones iniciales. El resultado es una colecci�n de datos posibles, pero con diferentes probabilidades. Este conjunto de datos han de ser analizados y editados para servir como base para la toma de decisiones. El logro del modelo regional es la preparaci�n para cambios potenciales y desarrollar hoy t�cnicas para un uso sostenible de la tierra.
No podemos predecir el futuro, pero estamos preparandonos para �l.
Para ser m�s precisos, tenemos que reconocer que el trabajo de modelaci�n consiste en dos partes.En la primera, los modelos se han de adaptar, se necesita un conjunto de datos para analizar y se deben escribir art�culos. La segunda parte consiste en el desarrollo de un software optimizado para hacer la investigaci�n.

El trabajo detallado diario con Linux

La misi�n diaria, consiste en el an�lisis de datos,quejandonos de los datos de medidas incorrectos, transformando los datos a los diversos formatos, escribir informes,etc..., beneficiandonos de Linux. Si a�n alguien cree que con Excel puede puede hacer todo, es que no ha probado la combinaci�n de Perl, Emacs,octave [www.octave.org], R [www.r-project.org] etc. Juntos han demostrando ser un duro adversario en la batalla con los datos.Perl es muy versatil,no esta limitado por la conversi�n de datos y requiere basesde datos (MySQL), ejecuta c�lculos, etc., todo esto de manera r�pida y repetidamente. Especificamente, esto �ltimo es muy portante, ya que el trabajo manual lleva a manejar los datos de manera erronea. Esto es raro si se utlizan scripts ya comprobados. Escribir art�culos con LaTeX, permite obtener un resultado convincente y de gran c�lidad gr�fica. Linux posee herramientas con las que hacen actractivo el trabajo a los cient�ficos. No queremos ocultar una desventaja: el proceso de aprendizaje de estas herramientas es largo. No todo se puede hacer intuitivamente y no todo el mundo es un "FREAK" de la programaci�n.

El Siguiente Paso - El Desarrollo de las Herraminetas

�Por qu� se ha de desarrollar uno mismo las herramientas?, �No esta todo disponible? Existen herramientas de alto rendiemiento para la simulaci�n, como Matlab [www.mathworks.com]. Existen herramientas para procesar datos geogr�ficos del Sistema de Informaci�n Geografica (GIS) como ARCGIS [www.esri.com/software/arcgis] o sotware libre Grass [grass.itc.it] . Y tambi�n hay programas para estad�stica . As�, �Por qu� continuar desarrollando?
El problema no est� en la c�lidad de los componentes, sino en su interacci�n en el sistema. En la simulaci�n, las subtareas las realizan diferentes programas que se comunican de una manera , que se le podr�a llamar pesada, atraves de interfaces creados por el propio usuario. Este hecho queda agravado por el hecho que los datos disponibles en grandes cantidades (datos espaciales) contienen un gran porcentaje de errores. Las simulaciones b�sicas se han de ajustar para esta car�cteristica. Un algoritmo ha de conseguir resultados validos, y si los datos entrados no est�n totalmente emparejados, ha de indicarlo mediante un mensaje de aviso . En el procesado de grandes cantidades de datos ,es normal tener matrices con m�s de un millon de elementos y por lo tanto, se requieren algoritmos r�pidos. S�lo se obtienen algoritmos robustos y r�pidos, si se los desarrolla uno mismo.
La principal desventaja de los sistemas comerciales es que su c�digo fuente es secreto . �Cuantos cient�ficos desarrollan e intercambian modelos si las fuentes no son libres? Con esta conclusi�n decid� desarrollar una Herramienta de an�lisis espacial y de modelaci�n ("Spatial Analysis and Modeling Tool" (SAMT)) como software de c�digo abierto.
. Es una herramienta de simulaci�n que incorpora un gestor para datos espaciales, interfaces con la base de datos MySQL y a GIS. Contiene las funciones elementales para gestionar datos basados en "raster" y tiene capacidad para manipularlos (homogeneizar, distancias, interpolar, etc. ) y capaz de generar presentaciones de los datos en dos o tres dimensiones.
Nota: Los datos del tipo "raster" se basan en dividir un mapa en una rejilla de cuadrados peque�os. La informaci�n se almacena en varias capas de datos raster.Un modelo accede a la informaci� de las capas.Adem�s de accededer a la informaci�n cada vez m�s profunda, tambi�n es fundamental la informaci�n envolvente del mismo nivel. Esto es la base para el m�delado de flujos laterales, como ocure en la erosi�n del suelo, causado por el aire y el viento.
SAMT genera la estructura en la cual las herraminetas - como interpretador difuso (muy r�pida) y la herramiente de red neuronal (nnqt) - pueden adaptarse. Los modelos difusos sirven para integrar sistemas expertos en la simulaci�n. Un sistema experto con frecuencia describe un proceso o lo controla, principalmente si no hay m�delo matem�tico. Las redes neuronales tienen procesos los cuales nos permiten derivar correlaciones funcionales de los datos de medida. A continuaci�n introduciremos el desarrollo de una herramienta de redes neuronales.

�Qu� es una red neuronal?

Una red neuronal consiste en varios estratos o capas. El primer estrato se cargar� con los datos iniciales a probar,en n�meros de punto flotante. La capa entre la entrada y la salida no es visible desde fuera, por lo que se le llama 'estrato oculto'. En algunos casos se pueden tener varios estrato ocultos. El estrato de salida, por ejemplo, �nicamente tiene un elemento. Este tipo de arquitectura se usa para construir funciones con varias entradas y una salida. Los estratos ocultos son necesarios para analizar el comportamiento no lineal, por ejemplo el de la funci�n x^2-y^2. �C�mo sabe la red neuronal cual es la funci�n buscada? Inicialmente,la red no conoce la funci�n. Los conectores (pesos) entre los elementos (nodos) son atribuidos con valores estocasticos. Durante el proceso de entrenamiento, el algoritmo que esta aprendiendo trata de cambiar los pesos de manera que el error cuadr�tico medio entre el ordenador y el valor predeterminado de salida sea m�nimo. Hay una variedad de algoritmos que ya se encargan de ello y no ser� necesario elaborar ninguno en este art�culo. Tres algoritmos fuer�n implementados en nnqt. El proceso de 'Ense�anza supervisada consiste en dise�ar la salida dependiendo de la entrada.

Daten Input Illustration

La red est� entrenda para detectar si ha alcanzado un error m�nimo con los datos de aprendizaje tanto como con los datos de control (es aconsejable separar los datos previos del entrenamiento de los usados como datos para verificar la funci�n de aprendizaje). Los pesos determinan la conducta de la red y son almacenados para este proposito. �Qu� se espera conseguir con esta red? Aparte de las aplicaciones para la ciencia, tamb�en hay aplicaciones m�s o menos serias. Hay intentos de predecir las tendencias de los mercados financieros. No he conseguido nada en este campo, pero quizas alguien lo haga.
Otra aplicaci�n interesante podr�a se la aplicaci�n de las redes neuronales para la predicci�n del tiempo a corto plazo. Las estaciones meteorol�gicas electr�nicas pueden usarse para instruir a la red neuronal. La utilidad podr�a ser analizar la presi�n atmosf�rica y sus cambios,as� como las precipitaciones. Las estaciones meteorologicas ya siguen estos patrones. �Puede una red neuronal mejorarlo?. Para dar soporte a la propia experimentaci�n esta disponible el software nnqt esta disponible como software GPL.

La Herramienta de Red Neuronal nnqt

Los cient�ficos reclamaban el desarrollo de herramientas de redes neuronales , as� que analic� sus requerimientos. Querian una herramienta lo m�s simple posible, la cual pueda ser utilizada para aplicaciones espaciales,es decir, deseaban ver como se relacionaban los datos con su situaci�n espacial. De acuerdo, existen excelentes herramientas comercializadas de redes neuronales. Por suerte, se encuentran disponibles herramientas libres como SNNS [www-ra.informatik.uni-tuebingen.de/SNNS/] o librerias como fann [fann.sourceforge.net]. SNNS es estupenda , pero no es f�cil de utilizar por alguien que no sepa programar, ya que entrega los resultados de salida en c�digo C. En su campo puede resultar apabullante para un usuario ocasional.nnqt necesita conocer algunos requerimientos:

El desarrollo de nnqt

El desarrollo consta de los siguientes pasos:

  1. Desarrollo y test del algoritmo
  2. Implementacion como aplicaci�n qt
  3. Integraci�n con SAMT

Desarrollo y test del algoritmo

Existe una buena y abundante literatura sobre redes neuronales. Como representaci�n citaremos el siguiente libro. Sin embargo, algunas veces hay agujeros que tiene que ser cerrados mediante la propia experiencia o por intercambios con otros.Me gustaba el trabajo r�pido con Matlab aplicando el algoritmo Levenberg-Marquardt-algorithm. S�lo despu�s de una intensiva busqueda en Internet encontr� articel [www.eng.auburn.edu/~wilambm/pap/2001/FastConv_IJCNN01.PDF][local copy, 105533 bytes] la cual describe el uso de este algoritmo con redes neuronales."Lo �nico" que hice fue integrar mis funciones favoritas tanh (tangens hyperbolicus) en el algoritmo. Tambi�n, use el software de Linux: el sistema de algebra computacional Maxima [maxima.sourceforge.net]. Es posible con este tipo de sistema la manipulaci�n de ecuaciones complicadas, to diffentiate and so on, operaciones que no son simples de resolver con papel y l�piz. Maxima hiz� posible realizar las manipulaciones necesarias e implementar la primera versi�n del algoritmo en una semana. La implementaci�n en C utiliz� para probar los par�metros. Utilic� el sistema de simulaci�n de "open source" desire [members.aol.com/gatmkorn] (�Muchas gracias a su desarrollador el Prof. Korn!) como herramienta para la comparaci�n y poder ejecutar el primer modelo.La nueva versi�n del algoritmo no fue tan mal. El tiempo de entreno para el problema xor, se vi� favorecido con el ejemplo para redes neuronales, alcanzando una media de 70ms con un ordenador Pentium a 3GHz. ( La gran parte de este tiempo esta siendo usado por el proceso de lectura del disco duro. En un viejo Athlon a 750MHz, este tiempo es ligeramente superior) .
Como alternativa , se implement� y analiz� el conocido algoritmo "back propagation". Despues de estos preparativos, que er�n las bases para fomentar mejoras en el algoritmo, se continuo con la puesta en marcha de la "toolbox".

Puesta en marcha y resultados

Como entorno de desarrollo priviligi� a qt, esta bien documentada y puedo usarla con mi editor Emacs. El planificador de qt ayuda con el dise�o de la superficie. Por contra, no hay sufucientes opciones para el desarrollo de nnqt. Necesitaba cosas como diagramas, escalas , etc.  Con todo esto la comunidad de desarrolladores ganaban ayuda. Las librerias de qwt [qwt.sourceforge.net] y qwt3d [qwtplot3d.sourceforge.net] podr�an ser utuluzadas, esta ayuda reducuri� el tiempo de desarrollo dr�sticamente. Equipado con estas fuentes , en pocas semanas se creo nnqt. Cuando estuve los sufucientemente satisfecho con los resultados , lo dirig� a los usuarios. �Tuvo mucha demanda!. El conjunto de datos deb�a ser dividido automaticamente hacia el grupo de aprendizaje y el grupo de comprobaci�n,quer�an asignar nombres para mejorar la organizaci�n, m�s an�lisis como gr�ficos con curvas con parametros, etc. Bien, algunas cosas las pod�a integrar inmediatamente, otras caracter�sticas me llevar�n m�s tiempo. A continuaci�n se presentan algunas pantallas:

Daten Input Illustration

Aqu� el se puede ajustar el lector para adaptare al formato de los datos de entrada. Pueden usarse varios separadores,se pueden ocultar algunas lineas de cabecera o escoger libremente el objetivo del conjunto de datos . Nota: el formato de los datos debe ser bien conocido, puesto que nnqt depende de la entrada que le indique el usuario.

Daten Analyse Illustration

Despu�s de una correcta introducci�n de los datos, nos situamos en la p�gina de an�lisis de datos. Encontramos alguna informaci�n sobre los datos y se selecciona los datos , de entre todas las columnas,que serviran para el aprendizaje . Un '1' en la �ltima columna marca la entrada como un valor de ense�anza. (Se utilizar�n m�s de 29 valores)

Control Panel

La m�s importante es la p�gina de control. Aqu� se definen el n�mero de elementos ocultos, el n�mero de pasos de aprendizaje y el algoritmo de adiestramiento. El adiestramiento puede visualizarse en una escala vertical, ya sea como barra o valor. El adiestramiento se repite hasta queel resultado es una funci�n directa del par�metro inicial que fue estoc�sticamente escogido. Seleccionando la opci�n   "shuffle" genera una selecci�n aleatoria - en lugar de una selecci�n secuencial - de los datos de adiestramiento, lo cual a veces es una ventaja. Si hubieramos tenido suerte con un error cuadratico medio lo suficientemente bajo, podemos obtener el primer gr�fico seleccionando el bot�n "view_trained" :

Modell versus Daten Plot

Se muestra la comparaci�n entre los datos de adiestramiento con los datos generados por la red neuronal. Idealmente los datos deben esar en la diagonal. �Pero el ideal no se puede conseguir! No obstante, los resultados parecen bastante decentes. ( Los datos de control - son los datos que no se pueden ense�ar en el proceso de adiestramiento- est�n en rojo). El siguiente paso permite el an�lisis de la funci�n de progresi�n. Los valores por defecto han de ser n�meros significativos. Con esto, hemos de ser cuidadosos, puesto que el trabajo original de la red s�lo cuadra con los datos de adiestramiento.

Analyse Teil zum Funktionsplot

Se puede escoger la representaci�n en dos o tres dimensiones.

2D-View

3D-View

Usando la nnqt

nnqt es software "open source", fue publicado bajo GPL. Cualquiera puede usarlo libremente y mejorarlo. Esto �ltimo es lo mejor. S�lo hay que instalar las librerias qwt y qt. nnqt.tgz es sencillo de desempaquetar.(tar-zxvf nnqt.tgz). Se creear� un nievo directorio llamado nnqt. Continuando con cd nnqt, un qmake . Si todo se interpreta correctamentese activara una variable shell ejecutando :
export NN_HOME=/pfad_zu_nnqt
Si nnqt se abre en otro terminal, nnqt dever� detectar los daros y los modelos. Espero que te diviertas con todo esto. Se incluye un conjunto de datos con dos entradas para las pruebas. �Alguien reconoce la funci�n que ha aprendido? (se trata de x^2-y^2 en el rango de [-2..2].)

�Qu� podemos crear con todo esto? - Estoy ansioso por ver vuestras ideas.

Gracias a la comunidad

Se ha demostrado , que Linux posee un excelente entorno de desarrollo para resolver problemas cient�ficos. He podido hacer el desarrollo gracias a un excelente software, sin el que no hubiera sido posible crear una herramienta en un corto periodo de 6 semanas. Siempre es agradable usar softwre libre. Por ello, muchas gracias a todos los desarrolladores que con su trabajos hacen posible todas las cosas maravillosas que podemos hacer bajo Linux.

Referencias

James A. Freeman:
"Simulating Neural Networks with Mathematica", Addison-Wesley 1994

Download

El sotware nnqt y sus actualizaciones:descarga de nnqt