Download Tutorial-SNNS

Document related concepts
Transcript
SNNS (Stuttgart Neural Network Simulator)
(Desarrollado por Felipe León )
SNNS (Stuttgart Neural Network Simulator)[Manual], es un simulador para redes
Neuronales desarrollado por el Instituto para Sistemas de Alto Rendimiento Paralelo y Distribuido
de la Universidad de Stuttgart desde 1989. El objetivo del proyecto es crear un eficiente y flexible
ambiente de simulación para investigación y aplicación de redes neuronales.
1.- Instalación SNNS
El proceso de instalación que se describirá a continuación consta de tres partes, este proceso
de instalación será descrito para las plataforma de Linux y Windows. En la primera parte se
describirá como poder obtener el simulador SNNS (Linux y Windows), luego en la segunda parte,
se explicará como configurar la instalación del simulador (Linux) y por último, se explicará como
instalar el SNNS (Linux y Windows).
1.1.- Como obtener SNNS
El simulador SNNS puede ser obtenido por un ftp anónimo del host, aquí se encuentran los
archivos tanto para Linux como para Windows:
ftp.informatik.uni-tuebingen.de (134.2.12.18)
en el subdirectorio
/pub/SNNS
(Linux y Windows)
como el archivo
SNNSv4.2.tar.gz
(Linux)
SNNSv4.1-win32-full.zip
(Windows)
X-Server
(Windows)
En Linux, después de descargar el archivo exitosamente, se debe mover el archivo dentro
del directorio donde se instalará el SNNS, luego se debe descomprimir el archivo de la siguiente
manera:
Unzip -dc SNNSv4.2.tar.gz | tar -xvf 1.2.- Configurando la Instalación del SNNS
En Linux, lo primero que se debe hacer es crear un directorio donde residirá el simulador
SNNS, al cual llamaremos <SNNSDIR>. Por esto, lo primero que se debe hacer es crear el
directorio SNNSDIR. Luego se deben teclear los siguientes comandos:
configure
->instala en <SNNSDIR>//[tools|xgui]/bin/<HOST>
confugure –enable-global
->instala en /usr/local/bin
configure –enable-global –prefix /home/tudirectorio
->instala en /home/tudirectorio/bin
1.3.- Instalando el SNNS
En Linux, después de configurara la instalación, lo que hay que hacer es usualmente la del
kernel y las herramientas de interfaz gráfica. Esto se puede hacer fácilmente con el siguiente
comando:
make install
dándole el directorio base donde se corrió el comando “configure”. Para compilar solamente se
debe usar el siguiente comando:
make compile
después de instalar SNNS se debe limpiar la fuente de los directorios (se borran todos los objetos y
librerias), con el comando:
make clean
por último si se quiere desinstalar el SNNS se debe usar el comando:
make uninstall
En Windows, después de descargar ambos archivos (SNNS para Windows y X-Server), lo
que se debe hacer primero es la instalación del X-Server, ya que el SNNS está diseñado para
trabajar en una plataforma distinta a la de Windows, la cuál es X-Windows de Linux, por esto es
necesario que se disponga de un algún programa que simule tal plataforma para que el SNNS y así
este pueda ser ejecutado, esto lo permite el X-Server.
Una vez instalado correctamente el X-Server, lo único que se tiene que hacer es
descomprimir el archivo SNNSv4.1-win32-full.zip en el disco duro, para esto se puede ocupar
cualquier software que realice las funciones de descompresión de archivos con formato*.zip,
algunos de estos son WinZip, WinRar, etc.
1.4.- Manual de usuario de SNNS
En Linux, para comenzar utilizar el simulador SNNS basta tan solo con escribir el comando
SNNS.
En Windows, el primer paso para iniciar el programa es ejecutar el emulador de X-Windows, el
cuál es el X-Server en nuestro caso.
Para iniciar el SNNS se debe ejecutar el archivo snns.bat del directorio raíz donde se
descomprimió el archivo SNNSv4.1-win32-full.zip.
En ambos casos una vez iniciado el SNNS aparecerá la pantalla de presentación la que se
ilustra en la Figura 1.
Figura 1: Pantalla Inicial del SNNS.
Después de iniciada la presentación esta se puede cerrar presionando el botón izquierdo del
mouse. Al hacer esto, habilitará el menú principal. El menú principal del SNNS es el que se muestra
en la Figura 2.
Figura 2: Pantalla Principal del SNNS.
Esta pantalla provee las funciones que son realizadas por el simulador. No es necesario
ejecutar todas las opciones para realizar una determinada tarea. Los botones más importantes que
componen el Menú Principal son descritos más adelante en éste manual de usuario.
2.1- Botón File
El botón File es el que se muestra a continuación:
Al presionar este botón se despliega la pantalla que se muestra en la Figura 2.3.
Esta pantalla muestra una estructura de directorio que muestra todos los archivos que SNNS puede
leer y escribir. Los directorios se representan entre paréntesis cuadrados ( [ ] ). En ésta pantalla se
puede usar para abrir y guardar los 5 tipos de archivos que SNNS maneja. Entre los más
importantes están los archivos con extensión NET, PAT y RES. (red, patrón (pattern) y resultados,
respectivamente).
Para cargar algún archivo, seleccione primero lo que desea abrir, por ejemplo una red o un
archivo pattern, botones
y
archivo y presione el botón
.
, respectivamente. Luego seleccione el nombre de este
Para guardar algún cambio a los archivos que está utilizando, escriba el nombre de lo que
desea guardar y luego presione el botón
.
Para cerrar la ventana de la opción File presione el botón
.
Figura 12.3: Pantalla File.
Para guardar los resultados de una red entrenada, ocupe el botón
. Este archivo
contiene las activaciones de todas las neuronas de salida. Estas activaciones son obtenidas al
realizar un paso de una propagación hacia delante. Después de presionar el botón
la siguiente
pantalla se desplegará, Figura 4:
Figura 4 : Formato de los archivos de Resultados
En esta pantalla puede incluir los patrones (patterns) tanto de entrada como de salida, así
como también crear un nuevo archivo o agregar los resultados a un archivo existente.
Para guardar los resultados en el archivo presione el botón
.
2.2.- Botón Control
El botón Control es el que se muestra a continuación:
Al presionar este botón se despliega la pantalla que se muestra en la Figura 5.
Figura 5: Pantalla Control.
Esta pantalla consiste de dos partes. La parte superior controla los parámetros definiendo el
proceso de entrenamiento, las tres filas inferiores pueden ser llenadas para definir los parámetros de
aprendizaje, el rango sobre el cual los pesos serán aleatoriamente distribuidos cuando la red sea
inicializada. Los valores por defecto de los parámetros de aprendizaje son (0.2 , 0 , 0 , 0 , 0)
mientras que los pesos están configurados por defecto entre 1 y –1 (1.0 , -1.0 , 0 , 0 , 0).
La Tabla 1. muestra todas las opciones de entrada con los tipos y rangos de valores. Los 5
parámetros de aprendizaje dependen de la función de entrenamiento seleccionada.
Nombre
Tipo
Rango de valor
Steps (pasos actuales)
Texto
Mayor o igual a 0
Count (cuenta para pasos)
Etiqueta
Mayor o igual a 0
Cycles
Texto
Mayor o igual a 0
Pattern (numero actual de pattern)
Etiqueta
Mayor o igual a 0
Valid
Texto
Mayor o igual a 0
Learn (5 parámetros)
Texto
Real
Update (5 parámetros)
Texto
Real
Init (5 parámetros)
Texto
Real
Tabla 1: Campos de entrada del Panel de Control.
Las funciones de algunos de los botones de la Figura 2.4 son:
: Inicializa la red con valores de acuerdo a la función y los parámetros dados en la última
línea del panel.
: El contador es re-iniciado y las neuronas son asignadas a su activación inicial.
: La red es entrenada con todos los parámetros para el número de ciclos de entrenamiento
especificados en el campo Cycles.
: El usuario puede probar el comportamiento de la red con todos los patrones (patterns)
cargados. Los valores de activación de las neuronas de entrada y salida son copiados hacia la red.
: Si este botón está presionado, una secuencia aleatoria de patrones (patterns) es creada
automáticamente.
12.1.2.3.- Botón Info
El botón Info es el que se muestra a continuación:
Al presionar este botón se despliega la pantalla que se muestra en la Figura 6.
Figura 6: Pantalla Info.
Esta pantalla despliega todos los datos de dos neuronas y el peso asociado a la unión de
ellas. La neurona donde comienza la unión es llamada Fuente (Source), la otra Destino (Target).
Este panel es también muy importante para la edición, desde algunas operaciones referentes
al despliegue de unidades Target o uniones Source-Target. Una neurona por defecto puede también
ser creada aquí, cuyos valores (activación, función de activación, función de salida, etc.) son
copiados hacia todas las neuronas seleccionadas de la red.
En la Pantalla Display, Figura 7, se puede seleccionar las neuronas de las distintas capas de
la red haciendo click con el botón del centro del mouse. Esto hará una copia automática de todas las
uniones de las neuronas pertenecientes a esa capa a la Pantalla Info. Para ver los valores muévase
con los botones de desplazamiento.
2.4.- Botón Display
El botón Display es el que se muestra a continuación:
Al presionar este botón se despliega la pantalla que se muestra en la Figura 2.6. Esta
pantalla muestra en forma gráfica la topología de la red neuronal, las activaciones de las neuronas y
los pesos de las uniones.
Las neuronas son desplegadas como cajas, donde el tamaño de la caja es proporcional al
valor del atributo desplegado. Cada neurona puede ser desplegada con dos de varios atributos. Uno
sobre la neurona y otro bajo ésta. Los atributos para ser desplegados pueden ser seleccionados en la
pantalla de configuración (ver más abajo).
Las uniones son mostradas como líneas, con una representación del peso en forma opcional.
Figura 7: Pantalla Display.
Las opciones de ésta ventana son las siguientes:
: Cierra la ventana Display.
: Con este botón puede configurar la forma de visualización de la red. La siguiente pantalla
se desplegará:
Figura 8 : Pantalla de configuración del Dysplay
Para activar las opciones que se muestran debe presionar el botón
. Para cambiar la
distancia entre las neuronas cambie el valor del campo Grid Width. Para cerrar la ventana Setup con
los cambios que hizo y regresar a la Pantalla Display (Figura 6) presione el botón
: Este botón inhabilita las opciones de edición gráfica de la red.
2.5.- Botón Graph
El botón Graph es el que se muestra a continuación:
Al presionar este botón se despliega la pantalla que se muestra en la Figura 9.
.
Figura 9: Pantalla Graph.
Es una herramienta para visualizar la evolución del error de una red. La curva de error de la
red es dibujada hasta que la red es inicializada o hasta que una nueva red es cargada, en cuyo caso
el contador de ciclo es reiniciado a cero. Esta ventana, sin embargo, no es limpiada hasta que el
botón
sea presionado. Esto permite la posibilidad de comparar varias curvas de error en
una sola pantalla. El número máximo de curvas que pueden ser desplegadas simultáneamente son
25.
Cuando la curva sobrepasa la ventana de visualización, automáticamente ésta se re-escala
con respecto al eje x.
Para cerrar la Pantalla Graph presione el botón
.
2.6- Botón Bignet
El botón Bignet es el que se muestra a continuación:
Al presionar este botón se despliega un submenú y al seleccionar Feed Forward aparece la
pantalla que se muestra en la Figura 8.
Figura 12.10: Pantalla Bignet para Redes BackPropagation.
La opción Bignet divide la red en varios planos. La capa de entrada, la de salida y cada capa
oculta es llamada un plano en la notación de Bignet. Un plano es un arreglo bidimensional de
neuronas.
Bignet crea una red en dos pasos:
Editar la red:
Esta genera estructuras de datos internas en Bignet las cuales describen la red pero no
generan la red. Esto permite la fácil modificación de los parámetros de la red antes de crear la red.
Generar la red en SNNS:
Este genera la red desde las estructuras internas de Bignet.
Los botones en Bignet hacen lo siguiente:
: Datos de entrada son ingresados al final del plano o de la lista enlazada.
: Datos de entrada son insertados en la lista del plano en el frente del plano actual.
: El elemento actual es reemplazado por el dato de entrada.
: El elemento actual es eliminado.
: Los datos del plano actual son escritos por el editor de planos.
: Los datos de las uniones actuales son escritas por el editor de uniones.
: El tipo (entrada, oculta, salida) de las neuronas de un plano es determinado.
: La posición de un plano es descrita en forma relativa (izquierda, derecha, abajo) con
respecto al plano anterior.
: Una red BackPropagation totalmente conectada es generada.
: Si existen n planos entonces cada neurona en el plano i con
1 <= i <
n está conectada con cada neurona en todos los planos j con i < j <= n.
: La red descrita por los dos editores es generada por SNNS. El nombre por defecto de
la red es SNNS_NET.net.
: Todos los datos internos de los editores son borrados.
: Sale de Bignet y vuelve al menú principal.
2.7.- Botón Weights
El botón Weights es el que se muestra a continuación:
Al presionar este botón se despliega la pantalla que se muestra en la Figura 11.
Figura 11: Pantalla Weights.
La pantalla weigths es una ventana especializada separada para desplegar los pesos de una
red. Esta puede ser usada para analizar la distribución de los pesos o para observar la evolución de
los pesos durante el aprendizaje.
Los botones de Zoom,
y
, sirven para acercar o alejar la visualización de
los pesos en la pantalla.
Al hacer click con el botón izquierdo del Mouse y dejar éste presionado sobre un cuadrado
de color, que representa el peso entre dos neuronas, se despliega una caja de texto que indica la
unión entre dos neuronas y el peso asociado a esa unión.
2.8.- Botón Help
El botón Help es el que se muestra a continuación:
Al presionar este botón se despliega la pantalla que se muestra en la Figura 12. Esta pantalla
muestra la ayuda que el Software posee.
Figura 12: Pantalla de Ayuda del SNNS.
Para cerrar esta ventana presione con el mouse el botón
2.9.- Botón Quit
El botón Quit es el que se muestra a continuación:
Al presionar este botón se sale del SNNS.
.
3.- Prácticas con SNNS
A continuación se mostrará un ejemplo del entrenamiento y las pruebas que se pueden
realizar a una RNA, la RNA que se utilizará viene de ejemplo en el paquete de instalación del
SNNS. Este ejemplo corresponde a una red BackPropagation que reconoce las letras mayúsculas del
alfabeto. La idea principal de esta practica es poder dar una visión general de la fase de
entrenamiento y la fase de prueba de una red neuronal con el simulador SNNS.
Ahora se describirán los pasos que se deben seguir para poder realizar esta práctica, los
pasos son los siguientes:

Inicie el SNNS : en Linux solo tiene que ingresar “SNNS”, en Windows se debe cargar el
servidor X, y luego ejecutar SNNS.bat

Desde el Menú Principal seleccione el botón File

Desde el directorio examples, cargue la red letters_untrained

Responda yes a la pregunta

Cargue el archivo patterns de la red letters (letters.pat) : para esto seleccione el archivo
señalado y luego presione el botón done.

Desde el Menú Principal seleccione el botón Graph : para ver el avance del entrenamiento
de la RNA.

Desde el Menú Principal seleccione el botón Control : con el cual se entrenará la RNA.
3.1.- Primer entrenamiento: Variación de numero de ciclos
Entrene la red con los valores que se muestran en la Tabla 2 y complete los cuadros
faltantes. Al finalizar cada entrenamiento presione el botón Init de la Pantalla Control.
Nº de ciclos
Error MSE
1000
3000
5000
Tabla 2: Variación en el número de ciclos
3.2.- Segundo entrenamiento : Variación de la tasa de aprendizaje
Entrene la red con los valores que se muestran en la Tabla 3 que corresponden a la tasa de
aprendizaje de la red. Use los dos números de ciclos en que la red se comportó de mejor manera.
Valor 1
0.1
Valor 2
0.3
Tabla 3 : Tasas de aprendizajes
3.3.- Tercer entrenamiento : Variación del Momentum
Desde la Pantalla Control seleccione el botón Sel. Func. (Frente a los parámetros de
aprendizaje) y seleccione BackpropMomentum. Use los valores de las Tablas 3 y 4 para entrenarla.
Valor 1
0.1
0.2
0.1
0.0
Valor 2
0.2
0.4
0.1
0.0
Valor 3
0.3
0.6
0.1
0.0
Tabla 4 : Tasas de aprendizajes con Momentum
Referencias
[W-INF-98] http://www-ra.informatik.uni-tuebingen.de/downloads/SNNS/
[León04] Trabajo de Memoria para optar al título de Ingeniero en Informática Aplicada de Felipe
León. Universidad de Valparaíso.