Manual simulador SNNS

Anuncio
UNIVERSIDAD CARLOS III DE MADRID
OPENCOURSEWARE
REDES DE NEURONAS ARTIFICIALES
INES M. GALVAN - JOSE Mª VALLS
BREVE MANUAL DE USO DEL SIMULADOR SNNS
Percpetron Multicapa
Este breve manual contempla los puntos necesarios para el uso del simulador SNNS.
Se puede descargar del siguiente enlace: http://www.ra.cs.uni-tuebingen.de/SNNS/.
Se recomienda descargar directamente el ejecutable (Linux o Windows) que aparece
en: http://www.ra.cs.uni-tuebingen.de/downloads/SNNS/Executables/
A continuación se describen en detalle cada uno de los aspectos necesarios para el
uso del Perceptron Multicapa con este simulador. Estos aspectos son los siguientes:
•
•
•
•
•
•
Formato de patrones
Ejecutar el simulador
Cargar datos
Definir arquitectura de la red
Entrenar una red
Guardar resultados
Antes de pasar a describir estos puntos, recordar que para abordar un problema con
el Percpetron Multicapa se necesita conocer la siguiente información:
-Número de variables de entrada: entradas
-Número de variables de salida: salidas
-Datos para el entrenamiento: Entrenamiento.txt
-Número de datos de entrenamiento: NumEntr
-Datos para el test: Test.txt
-Número de datos de test: NumTest
Formato de patrones
Los ficheros de patrones son ficheros de texto y deben tener obligatoriamente
extensión *.pat. Los ficheros poseen una cabecera que indican características de los
datos. Los ejemplos o patrones se organizan por filas, es decir cada fila del fichero
corresponderá a un patrón entrada-salida. La estructura de los ficheros es la
siguiente:
SNNS pattern definition file V3.2
generated at Mon Apr 25 15:58:23 1994
No. of patterns : NumEntr
Cabecera
No. of input units : entradas
No. of output units : salidas
Patrón 1 entrada salida deseada
Patrón 2 entrada salida deseada
…..
Datos
Ejemplo: Dado un conjunto de patrones con 4 entradas y 3 salidas, la estructura del
fichero de entrenamiento (o test) sería:
SNNS pattern definition file V3.2
generated at Mon Apr 25 15:58:23 1994
No. of patterns : 10
No. of input units : 4
No. of output units : 3
0.2
0.4
0.8
0.8
0.8
0.2
0.6
0.8
0.2
0.2
0.2
0.6
1.0
0.6
0.6
0.2
0.6
0.6
0.6
0.2
0.2
0.4
0.8
1.0
0.2
1.0
1.0
0.6
0.6
1.0
0.2
0.6
1.0
0.4
0.6
0.8
1.0
0.8
1.0
1.0
0.0
0.0
0.0
1.0
1.0
0.0
0.0
0.0
0.0
0.0
1.0
1.0
1.0
0.0
0.0
0.0
0.0
1.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
1.0
1.0
0.0
1.0
1.0
Ejecutar el simulador
El simulador se ejecuta utilizando el comando snns. Aparecerán dos ventanas. Al
pinchar con el ratón en la ventana/panel informativo, ésta desaparecerá. La otra
ventana [snns-manager] es el panel principal desde el que se realizarán el resto de
los pasos. En la figura 1 se muestro el aspecto de esta ventana y sus funcionalidades
más importantes, las cuales serán descritas a lo largo del documento.
Aprendizaje
Manejo de Ficheros
Visualizar
arquitectura
Evolución errores
durante el aprendizaje
Crear arquitectura
Figura 1: Ventana principal de Snns (snns-manager)
MUY IMPORTANTE: cuando se desee cerrar una ventana se debe utilizar el botón
“DONE” o “QUIT”. Si se cierra utilizando “X” en la parte superior derecha, se cerrará
el simulador
Cargar datos
Para llevar a cabo el aprendizaje es necesario cargar previamente los datos de
entrenamiento y test (estos últimos opcionales). También es posible que se desee
cargar una red ya entrenada en una sesión previa o guardar una red que se acaba de
entrenar. Para realizar todas estas funciones se pulsa el botón “FILE” de [snnsmanager]. Aparece un nuevo panel (ver figura 2) donde se realizarán las acciones
necesarias.
directorio
Nombre del fichero
Ficheros de redes: *.net
Ficheros de patrones: *.pat
Ficheros en el
directorio
especificado
Ficheros de resultados: *.res
Cargar
fichero
Salvar
fichero
Figura 2. Ventana FILE para el manejo de ficheros
•
Para cargar patrones, se pulsa “PAT” y se selecciona en la parte de la
izquierda el directorio y el fichero *.pat que se desea cargar. Una vez
seleccionado se pulsa “LOAD”. Si el formato de los datos es incorrecto saldrá
un mensaje de error. Este proceso se repite tantas veces como conjuntos de
patrones se desean cargar.
•
Para cargar una red ya entrenada en una sesión previa, se pulsa “NET” y se
selecciona en la parte de la izquierda el directorio y el fichero *.net que se
desea cargar. Una vez seleccionado se pulsa “LOAD”.
MUY IMPORTANTE: cuando se desee cerrar una ventana se debe utilizar el botón
“DONE”. Si se cierra utilizando “X” en la parte superior derecha, se cerrará el
simulador
NOTA: En ocasiones al generar los ficheros de patrones e incluirles la cabecera se
incluyen caracteres ocultos que no acepta el simulador. Estos caracteres hacen que
al cargar un conjunto de datos dé un mensaje de error que en apariencia es difícil de
localizar. Para evitar este problema se aconseja utilizar el fichero “datos.pat” que se
encuentra en PR-E-002. En ese fichero se pegan los datos de entrenamiento o test
que se van a utilizar, cambiando los campos de la cabecera relativos al número de
patrones, número de entradas y salidas. Posteriormente el fichero generado se
guardará con otro nombre.
Definir la arquitectura de la red
Los pasos para definir una arquitectura de red son los siguientes:
1. En el panel principal [snns-manager] se pulsa el botón BIGNET para crear una
red. En el menú que aparece al pinchar en dicho botón hay que seleccionar
general (primera opción). Aparece un nuevo panel o ventana que sirve para
diseñar la arquitectura de red (ver figura 3)
2. En la parte de arriba de esta ventana se definirá el número de neuronas en
cada capa. Es necesario aclarar previamente que con este simulador, las
neuronas de una capa se disponen en un plano de dos dimensiones (x e y). El
número total de neuronas en esa capa será x*y. Generalmente, las neuronas
en una capa se distribuyen de manera lineal, por lo que x-direction es 1 e ydirection es el número de neuronas que se desee colocar en dicha capa. Los
pasos para definir una capa son:
a. Seleccionar con el botón type el tipo de capa, a elegir entre input,
hidden y output.
b. Introducir el tamaño de la capa seleccionada en la dirección x (xdirection). Si la disposición va a ser lineal, introduciremos un 1.
c. Introducir el tamaño de la capa en la dirección y (y-direction). Si la
disposición debe ser lineal, introduciremos el número de neuronas de
la capa.
d. Pulsar el botón enter para aceptar los datos y pasar a definir la
siguiente capa.
e. Como mínimo es necesario definir la capa de entrada, una capa oculta
y la capa de salida. Pulsando las flechas
es posible revisar la red
que ha sido creada.
La secuencia para diseñar una red con 10 neuronas ocultas para los
datos del ejemplo será:
type: input, x:1, y:4, enter;
type: hidden x:1, y:10, enter;
type: output x:1, y:3, enter.
3. Una vez definidas las neuronas en cada capa, hay que interconectar las
neuronas. En este mismo panel (parte inferior) se pulsa el botón FULL
CONNECTION.
4. A continuación, se pulsa en el mismo panel el botón CREATE NETWORK.
5. Si se desea cerrar la ventana que ha servido para la creación de la red, pulsar
“DONE”
Para modificar el número de neuronas de una capa de una red ya creada, basta
utilizar el botón “plane to edit” y realizar los cambios que se desean en la dirección
x e y, al igual que si se estuviera definiendo el número de neuronas de una capa. Una
vez modificado el número de neuronas, es necesario volver a pulsar “Full
Connection” y “Create network”.
Indica la capa para la que
se inserta el nº neuronas
Se mostrará la capa y
neuronas, después de
pulsar “ENTER”
Para insertar en la red
la capa definida
Para ver las diferentes
capas definidas
Para insertar el nº de
neuronas: x-direc e y-direc
Para borrar una capa
Para cambiar el tipo de
capa: entrada, oculta,
salida
Conecta todas las
neuronas
Crea la red definida
Figura 3. Ventana BIGNET para crear o modificar una arquitectura de red
La red ya ha sido creada. Si se desea visualizar la arquitectura definida, se puede
utilizar el botón “DISPLAY” de [snns-manager]. Esta ventana sólo sirve para
visualizar la red, pero no para modificarla. La información mostrada en este panel se
puede alterar y configurar pulsando setup en la ventana display. Por ejemplo,
activando links on[setup] y links -2.35[setup] añadiremos al gráfico líneas que
representan las conexiones y el valor que toman los pesos correspondientes.
Para cerrar el panel se pulsa “DONE”.
Entrenar la red
Para entrenar o realizar el aprendizaje de la red hay que pulsar el botón “CONTROL”
del panel principal [snns-manager]. Aparece una nueva ventana donde se
especificarán los parámetros del aprendizaje (ver figura 4). A continuación se
comentan los botones necesarios para llevar a cabo el aprendizaje.
Inicializa los pesos
Realiza aprendizaje
Número Ciclos
Patrones Entrenamiento
Nº iteraciones
para test
Patrones Test
Razón de aprendizaje
Valores para
inicialización de
los pesos
Figura 4. Ventana de Control para el aprendizaje de la red
•
Botones “USE”. Se observa que aparecen dos y a lado de estos botones deben
aparecer el nombre de los ficheros de entrenamiento y test. Para ello dicho
ficheros han debido de ser cargados previamente. Mediante el botón “USE” de
arriba se selecciona el conjunto de patrones para el entrenamiento. Mediante
el botón “USE” que parece debajo se selecciona el conjunto de patrones de
test. Si no se quiere realizar test, se puede utilizar aquí el mismo conjunto de
entrenamiento o ningún conjunto
•
El botón “INIT” inicializa aleatoriamente los pesos de la red a valores
comprendidos en el rango de inicialización que aparece en la parte de abajo
del panel de control, junto a la palabra Init (por defecto, de -1 a 1). Es
importante inicializar la red antes de empezar el aprendizaje. Cuando se crea
una red, los pesos suelen ponerse a cero, y esto podría dificultar el
aprendizaje. Una vez inicializado los pesos, si se desean ver los valores que
han tomado se puede utilizar el boton “DIPSLAY” de [snns-manager]
comentado anteriormente.
•
Ajustar la razón de aprendizaje. Es el valor que aparece junto a LEARN. Por
defecto aparece fijada a 0.2
•
Ajustar el número de ciclos en la casilla junto a CYCLES. Se deben especificar
los ciclos de aprendizaje que se desean realizar.
•
Aparece una casilla junto a VALID. El valor que se especifique en dicha
casilla, representará cada cuántos ciclos se evalúa la red sobre el conjunto de
test. Si dicho valor es 0, nunca se evaluará la red en el conjunto de test. Lo
usual es poner por ejemplo un valor de 10 para que cada 10 ciclos de
entrenamiento se realice el test.
•
Una vez definidos todos los parámetros pulsa el botón “ALL” que realizará
tantos ciclos de aprendizaje como se hayan definido.
En la ventana del terminal se puede ver la evolución del error cometido por la red
durante el progreso del aprendizaje. Los errores que se visualizan son:
•
•
•
SSE: Error cuadrático medio acumulado para todos los patrones.
MSE: SSE medio sobre el número de patrones.
SSE/o-units: SSE medio sobre el número de salidas.
Una funcionalidad muy útil del simulador es que permite visualizar gráficamente la
evolución de los errores a lo largo del aprendizaje. Para ello se pulsa el botón GRAPH
del panel principal [snns-manager]. Se abre una nueva ventana en la que se podrá
visualizar los errores a los largo de los ciclos. Es conveniente tener abierta esta
ventana antes de realizar el aprendizaje (es decir, antes de pulsar ALL). En este
ventana se puede elegir en la parte superior derecha el error que se quiere visualizar
(SSE, MSE, SSE/o-units). También se pueden modificar las escalas tanto del eje X
(representa el número de ciclos), como del eje Y (representa el error). Es importante
tener presente que la escala del eje X se actualiza automáticamente a medida que
aumenta el número de ciclos. Esto no ocurre con la escala del eje Y, por lo que si no
aparece ninguna gráfica puede ser debido a que el error (eje Y) está fuera de la
escala seleccionada. Con CLEAR se borran todas las gráficas que aparezcan en el
gráfico.
Guardar resultados
Una vez entrenada la red, es posible guardar la red ya entrenada, así como los
resultados o salidas obtenidas por la red. Para ello se pulsa el botón “FILE” de [snnsmanager], al igual que cuando se cargan los ficheros (Ver figura 2). Aparece la
ventana relativa al manejo de ficheros.
•
En el caso de que se desee guardar la red con sus pesos, se selecciona “NET”
y se indica en el cuadro de texto situado en la parte superior derecha, el
nombre el fichero que tendrá extensión .net. A continuación pulsa el botón
“SAVE”
•
Para guardar los resultados de la red, es decir las salidas dadas por la red para
cada patrón de entrada, habrá que seleccionar de esa misma ventana el botón
“RES” y se indicará el nombre del fichero donde se desean guardar los
resultados, que tendrá extensión .res. En este caso, al pulsar el botón “SAVE”
aparecerá una nueva ventana en la que podemos indicar qué información
deseamos guardar: patrones de entrada y/o patrones de salida deseada y/o
patrones de salida de la red. Pulsando “DONE” se guardarán los datos
relativos al conjunto de entrenamiento utilizado. Si se desean guardar los
resultados para el conjunto de test, el proceso será el mismo, pero será
necesario realizar un ciclo con razón de aprendizaje a cero (LEARN = 0) en el
que el conjunto de test pasa a ser el conjunto de entrenamiento (USE parte
superior).
Descargar