NOMBRE

sangers, recons - Implementación de red neuronal artificial de Sanger


SINOPSIS

sangers [-mv] [-a rat_inic] [-e int_log] [-i nmi] [-r cp_mse] [-s cp_var] [-t val_par] fich_rus

recons fich_in_ws fich_red n cp [cp_real]


DESCRIPCION

La red neuronal de Sanger, también llamada Algoritmo Hebbiano Generalizado (GHA) es una red monocapa de aprendizaje no supervisado que realiza de forma neuronal la el Análisis de Componentes Principales (PCA), y por tanto su matriz de pesos acaba convergiendo a los autovectores de mayores autovalores, ver [1]. Sus principales usos se centran en reducción de dimensionalidad, compresión y visualización de datos, así como en extractor de características como paso previo a otro tipo de procesos.

Para el trabajo con esta red se han generado dos utilidades diferentes: sangers es la encargada del el entrenamiento y ejecución de la red de Sanger. Por otro lado recons permite, a partir de las salidas de la red de Sanger y de su matriz de pesos, realizar la reconstrucción de los datos originales, emitiéndolos por la salida estandar.

Durante el proceso de entrenamiento y ejecución de la red de Sanger es posible el uso de entradas con valores perdidos (missing values) [2]. Además durante y al final de dichos procesos es posible emitir distinta información (logs) que permite hacer un mejor seguimiento de los mismos.


OPCIONES

Opciones de sangers

-m

No utilizar entradas con media por filas a 0.

-v

Utilizar entradas con media por columnas a 0.

-a rat_inic

Ratio inicial de aprendizaje de la red de Sanger (0.3), desciende linealmente a 0 en nmi.

-c cp_var

Número de componentes para cálculo de la varianza acumulada.

-e int_log

Intervalo entre el que se generan logs (nmi - 1).

-i nmi

Número máximo de iteraciones (nmi) en la red.

-r cp_mse

Número de componentes para cálculo del promedio del error cuadratico (mse) de reconstrucción.

-s seed

Valor de la semilla para números aleatorios.

-t val_par

Valor de parada sobre sobre el promedio del cuadrado de los incrementos de pesos entre el ratio actual en un ciclo (0).

Opciones de recons

fich_in_ws

Fichero que almacena los pesos de la red de Sanger.

fich_red

Fichero que almacena las salidas de la red de Sanger.

n

Número de entradas de la red de Sanger (dimensiónes originales de los datos).

cp

Número de salidas de la red de Sanger (dimensiónes reducidas de los datos).

cp_real

Número de componentes principales (neuronas) a utilizar en la reconstrucción de los datos.

fich_rus

Fichero de configuración con las ejecuciones a efecturar sobre la red de Sanger. Guarda información de los datos y sus dimensiones. Ver FICHEROS.


VALOR DEVUELTO

sangers y recons devuelven 0 (EX_OK) si no se produce ningún error.


EJEMPLO

Incluido en la distribución se encuentra un script de ejemplo, tests/test.sh, que reduce patrones en tres dimensiones a dos dimensiones mediante la red de Sanger. Se lanza a ejecutar mediante make test. Para generar los patrones es necesario tener instalado gsl-randist(1) de la GNU Scientific Library (GSL), y para poder visualizar los resultados es necesario el uso de gnuplot(1).


FICHEROS

fich_rus

El fichero de configuración con las ejecuciones es un fichero de texto que tiene la siguiente estructura:

n_runs

n

m

fich_pat

n_cp

fich_out_ws

fich_red

m_test

fich_in_ws

...

Donde n_runs es el número de ejecuciones, cada ejecución viene dada por las siguientes ocho lineas, que almacenan los restantes parámetros. n es el número de entradas de la red de Sanger (dimensiónes originales de los datos). <m> es el número de patrones a utilizar en el entrenamiento. fich_pat es el nombre del fichero de patrones de entrada. n_cp es el número de salidas de la red de Sanger (dimensiónes reducidas de los datos). fich_out_ws es el nombre del fichero de pesos de salida de la red de Sanger. fich_red es el nombre del fichero de salidas de la red de Sanger. m_test es el número de patrones a utilizar en el test, una vez finalizado el entrenamiento. fich_in_ws es el nombre del fichero de pesos de entrada de la red de Sanger, opcionalmente puede ser sustituido por RAMDOM para que los pesos sean inicializados con valores aleatorios en el intervalo [0..1].

fich_pat

Fichero de patrones, los m primeros se utilizarán para entrenar y los m_test primeros para testear. Es un fichero de texto compuesto de filas de n números flotantes separados por espacios o tabuladores que representan a un patrón. Los valores perdidos se representarán mediante la cadena NaN.

fich_out_ws

Fichero de pesos de salida, es un fichero de texto compuesto de n filas y n_cp columnas de números flotantes separados por tabuladores.

fich_red

Fichero de salidas, es un fichero de texto compuesto de m_test filas y n_cp columnas de números flotantes separados por tabuladores.

fich_in_ws

Fichero de pesos de entrada, de igual formato que fich_out_ws.


DISPONIBILIDAD

El punto de distribución primario es <ftp://ftp.etsii.ull.es/pub/asignas/IMCC/sangers/>


AUTORES

Patricio García Báez <pgarcia AT ull.es>, además véase fichero AUTHORS de la distribución original.


VEASE TAMBIEN

[1] Hertz, Krog, Palmer (1991) Introduction to the theory of neural computation. Addison-Wesley.

[2] Samad, T., Harp, S.A. (1992) Self-organization with partial data. Network: Computation in Neural Systems, 3, 205-212.


COPYRIGHT Y LICENCIA

Copyright 1994-2006 by Patricio García Báez (pgarcia AT ull.es).

Esta aplicación se distribuye bajo licencia GNU General Public License Version 2, ver fichero COPYING de la distribución original.