original in de Ralf Wieland
de to en J�rgen Pohl
en to es Alberto Pardo
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.
Trabajo en un instituto de investigaci�n
, el cual se centra en investigaciones sobre la tierra. Investigamos
preguntas como las siguientes:
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.
�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.
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.
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.
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 consta de los siguientes pasos:
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".
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:
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.
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)
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" :
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.
Se puede escoger la representaci�n en dos o tres dimensiones.
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.
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.
James A. Freeman:
"Simulating Neural
Networks with Mathematica", Addison-Wesley 1994