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).