sangers, recons - Implementación de red neuronal artificial de Sanger
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]
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], representándolos como NaN. 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.
Imprime versión del programa.
No utilizar entradas con media por filas a 0.
Utilizar entradas con media por columnas a 0.
Ratio inicial de aprendizaje de la red de Sanger (0.3), desciende linealmente a 0 en nmi.
Número de componentes para cálculo de la varianza acumulada.
Intervalo entre el que se generan logs (nmi - 1).
Número máximo de iteraciones (nmi) en la red.
Número de componentes para cálculo del promedio del error cuadratico (mse) de reconstrucción.
Valor de la semilla para números aleatorios.
Valor de parada sobre sobre el promedio del cuadrado de los incrementos de pesos entre el ratio actual en un ciclo (0).
Fichero que almacena los pesos de la red de Sanger.
Fichero que almacena las salidas de la red de Sanger.
Número de entradas de la red de Sanger (dimensiónes originales de los datos).
Número de salidas de la red de Sanger (dimensiónes reducidas de los datos).
Número de componentes principales (neuronas) a utilizar en la reconstrucción de los datos.
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.
sangers y recons devuelven 0 (EX_OK) si no se produce ningún error.
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)
.
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].
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
.
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.
Fichero de salidas, es un fichero de texto compuesto de m_test filas y n_cp columnas de números flotantes separados por tabuladores.
Fichero de pesos de entrada, de igual formato que fich_out_ws.
El punto de distribución primario es <ftp://ftp.etsii.ull.es/pub/asignas/IMCC/sangers/>
Patricio García Báez <pgarcia AT ull.es>, además véase fichero AUTHORS de la distribución original.
[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 1994-2010 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.