matlab y redes neuronales.docx

Upload: jennifer-dean

Post on 13-Oct-2015

97 views

Category:

Documents


0 download

TRANSCRIPT

Universidad Nacional Experimental del Tchira

2

Universidad Nacional Experimental del TchiraDepartamento de Ingeniera ElectrnicaNcleo de Instrumentacin y ControlCtedra: Redes Neuronales y Lgica Difusa

MatLab y Redes Neuronales

Mayo 2007Para crear, usar, importar y exportar datos y redes neuronales en Matlab se utiliza la interfaz grafica de usuario llamada nntool. Al tipiar nntool en el Workspace del Matlab se abre una ventana Network/Data Manager la cual permite realizar las funciones antes sealadas.En la figura 1, se presenta el Network/Data Manager (Entrenador de Datos y Redes).

Figura1. Network/Data Manager (Entrenador de Datos y Redes).

A continuacin se describen cada una de las partes que componen el entrenador de datos y redes.Inputs: Almacena la (s) matriz (es) que utilizar la red como entradas bien sea para entrenamiento, prueba o funcionamiento.Targets: Almacena la (s) matriz (es) que utilizar la red como salidas bien sea para entrenamiento, o reentrenamiento.Input Delay States: Estados de retardos de las entradas, por defecto son cero.Networks: Espacio para construir las redes.Output: Son las salidas generada por la red al ser entrenada, evaluada o simulada.Errors: Genera un vector de los errores ocurridos durante el entrenamiento de la red.Layer Delay States: Estados de retardos de las capas de salidas, por defecto son cero.

La seccin Networks and Data permite acceder a algunas de las secciones anteriores, haciendo click en el espacio en blanco de la seccin (Input, Targets, Input Delay Status, Networks) y luego hacer clik en el botn (nuevos datos) o (nueva red), segn sea el caso. Las secciones Ouput, Errors, Layer Delay States, slo son visualizadas ya que son salidas de la red.

El comando visualiza a los datos o redes que se seleccionen al hacer clic sobre ellas.La seccion Networks and Data se utiliza nicamente para cuando se crean datos y redes, adems de acceder a las visualizaciones de las variables asociadas a la red.Los comandos Import y Export, permiten importar y exportar datos y redes que hayan sido almacenadas (en el caso de Import) o que se quieran almacenar (en el caso de Export).

La seccin Networks only es de exclusivo uso para el manejo global de la red. En este cuadro encontramos los comandos para inicializar, simular, entrenar y adaptar la red que se haya creado. Para el manejo de los conceptos anteriores procedemos a presentar un ejemploEjemplo:

Haciendo clic sobre Input en la parte de abajo (espacio en blanco), presione ahora el comando se abrir la siguiente ventana (figura 2):

Figura 2

En esta ventana name es el campo correspondiente al nombre de la variable, y a la derecha se encuentra Data Type, donde se elige el tipo de dato al cual pertenece la variable: si son entradas (Input), objetivos (Targets), estados de retardo de la entrada (Input Delay States) y as con cada una de los otros tipos de datos que deseemos crear.

En el campo value se escribe la matriz con los valores de la variable y luego se hace clic sobre el botn para crearla.

El procedimiento expuesto anteriormente se debe seguir en general para las variables que sean datos. Para crear nuevas redes, una vez seleccionado el espacio en blanco debajo del cuadro Networks, debe hacerse clic en . Entonces aparecer el siguiente cuadro (figura 3):

Figura 3.

En donde:Network Name: Es el nombre de la red.Network Type: Es el tipo de red, por ejemplo: perceptrn, backpropagation, mapas de kohonen, Adaline entre otros.Inputs ranges: valores mximos y mnimos de las entradas, es decir, el rango de la variable.Training function: Funcin de entrenamiento.Adaption learning function: Funcin de aprendizaje para adaptacin.Performance function: Funcin de desempeo de la red.Number of layer: Numero de capasProperties for layer n: Propiedades para la capa numero (se especifica el nmero de la capa):Numbers of neuron: Numero de neurona para la capa seleccionadaTransfer function: Funcin de transferencia para las neuronas de la capa seleccionada.Supongamos que se desea entrenar una red para implementar la funcin lgica XOR para cuatro variables, con una ligera modificacin para fines didcticos, la salida de la funcin XOR tomar con dos variables, las cuales tendrn el mismo valor.Se construir una tabla donde estn organizados los patrones de entrada y los patrones de salida. Patrones de EntradasPatrones de salidas

ABCDXY

000000

000111

001011

001100

010011

010100

011000

011111

100011

100100

101000

101111

110000

110111

111011

111100

Tabla 1

Se comenzar por realizar las matrices de los patrones de entradas y salidas, tomando en cuenta que en Matlab las filas de esas matrices estn definidas por el nmero de variables que existan. En este ejemplo la matriz de entrada tendr cuatro (4) filas correspondientes a las cuatro (4) variables y sus columnas quedarn definidas por la cantidad de patrones, es decir, tendremos matrices con dimensiones NxP, donde N representa el nmero de variables y P el nmero de patrones. En nuestro caso es una matriz (4x16). En Matlab la matriz de entrada ser:Matriz de entrada = [0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1; 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1; 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1; 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1];Matriz de entrada = P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15 P16 Patrones A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1Se plantea ahora la matriz de Objetivos o salidas deseadas:Matriz Objetivos = [0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0; 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0]Matriz Objetivos = P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15 P16 Patrones X 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0Y 0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0Finalmente se disear la estructura que tendr la red. Para este ejemplo se utilizar una red multicapa con las siguientes especificaciones:2 capas ocultas o intermedias: la primera con 5 neuronas y la segunda con 3 neuronas.La funcin de transferencia de la primera y segunda capa ser del tipo sigmoidal (en matlab corresponde a logsig) La capa de salida: tendr tantas neuronas como variables de salidas se tengan; para el ejemplo nuestro son 2 neuronas. Su funcin de transferencia ser una del tipo lineal (en matlab corresponde a purelin).La arquitectura de la red ser la siguiente:

Red Multicapa

Fig. 4

Una vez diseada la arquitectura de la red, se proceder a introducirse en Matlab al igual que los patrones de entrada y las salidas deseadas.El primer paso ser acceder al Network/Data manager (Entrenador de datos y redes), haciendo clic sobre el icono de Matlab usted entrar al panel principal abrindose la siguiente ventana (Figura 5):

Figura 5

En esta ventana debe hacer clic en View y seleccionar Launch Pad, tal como se muestra en la siguiente figura:

Figura 6

Al hacer clic en Launch Pad , a travs de la barra buscar y abrir Neural Network Toolbox (Caja de herramientas de Redes Neurales), tal y como se muestra abajo en la figura 7 :

Figura 7Al hacer doble clic sobre NNTool, se desplegar la ventana del entrenador de red:

Figura 8

Haciendo clic en el botn , introducimos el nombre MatrizEntrada con sus correspondientes valores tal y como se muestra abajo en la figura 9:

Figura 9

Una vez introducidos los datos se selecciona el tipo de dato, Inputs (entradas), luego se hace clic sobre la opcin y el Network/Data manager aparecer de esta forma:

Figura 10

Si desea observar si realmente la variable MatrizEntrada almacen los valores introducidos, seleccinela con el ratn, y luego debe hacer clic sobre la opcin como se muestra abajo en la figura 11:

Figura 11Desplegndose as la siguiente ventana:

Figura 12De la misma manera se procede para introducir la Matriz_Objetivo. Al finalizar, la vista es la siguiente:

Figura 13

A continuacin se proceder con la creacin de la red. Haciendo clic sobre el botn se desplegar la siguiente ventana:

Figura 14en donde se realizar el vaciado de las especificaciones de la red. El nombre de la red ser Red_XOR, los rangos de entrada pueden ser tomados automticamente al seleccionar en Get from input (Obtener de la entrada) la matriz_Entrada, en Number of layers se colocar 3 y procederemos a colocar las especificaciones para cada capa en Properties for: N de capa, en las siguientes figuras se muestran los pasos a seguir para la configuracin de la red:Paso 1

Figura 15producindose el siguiente cambio en Input ranges

Figura 16Como se explic en prrafos anteriores, Input ranges toma los valores mximos y mnimos de las variables de entrada, en este caso debe existir 4 rangos ya que se tienen cuatro variables de entrada (A,B,C,D). El comando Get from input realiza una inspeccin sobre la matriz de entrada por cada fila a fin de determinar los valores mximos y mnimos de las variables de entrada.Paso 2Asignando las propiedades para cada capa

Figura 17

Figura 18

Haciendo clic en la opcin la red ser creada y volver al men principal:

Figura 19

de donde seleccionando la red neural Red_XOR y haciendo clic en la opcin se mostrar la red diseada. Este despliegue se habilita para redes con pocas capas ocultas,

Figura 20en donde en la figura 20, se pueden apreciar las tres (3) capas creadas con el nmero de neuronas de cada capa y su correspondiente funcin de transferencia, adems de aparecer las matrices de pesos con su vector de umbrales (LW{},b{}), y el nmero de variables de entradas sealadas por el bloque en negro:IW{1,1}= Input Weight= Corresponde a la matriz de los pesos que asocian las entradas con la primera capa oculta. Contendr 20 elementos.b{1}=bias= Corresponde al vector de umbrales de la capa 1, en el cual existirn tantos umbrales como neuronas hayan en la capa 1, en nuestro caso el vector de umbrales b{1} tendr 5 elementos.LW{2,1}=Layer Weights= Corresponde a la matriz de pesos que asocia las salidas de la capa 1 con las entradas a la capa 2. Contendr 15 elementos.b{2}=bias= Corresponde al vector de umbrales de la capa 2, para nuestro caso ste vector tendr tres (3) elementos.LW{3,2}= Corresponde a la matriz de pesos que asocia las salidas de la capa 2 con las entradas de la capa 3 o de salida. Contendr 6 elementos.b{3}= Corresponde al vector umbrales de la capa 3, en nuestro caso ste vector tendr 2 elementos.Ms adelante se ver la forma de acceder a cada matriz de pesos y los vectores umbrales.

Entrenamiento de la redEl proceso de entrenamiento consiste en lograr que la red aprenda mediante la escogencia de los parmetros de entrenamiento que permitan un aprendizaje ptimo. Algunos de estos parmetros de entrenamiento son: nmero de iteraciones, taza o rata de aprendizaje, valor mnimo del gradiente, nmero mximo de fallas permitido, error mnimo aceptable; los parmetros variarn ligeramente segn el mtodo o algoritmo que se utilice en el entrenamiento de la red.

Siguiendo con el ejemplo, se entrar en la fase de entrenamiento. En el entrenador de red existe en la parte inferior el cuadro Networks only, en ese cuadro aparecen las funciones que podemos realizar con la red creada: Initialize (inicializar), Simulate (simular), Train (entrenar), Adapt (adaptar). Antes de proseguir su aplicacin en Matlab, se explicar cada una de ellas.

Initialize: Inicializa rangos de entradas y los pesos entre capas en forma manual o automticamente (en forma aleatoria).Simulate: Se genera una matriz de salida, con su correspondiente vector de error, para una matriz de entrada suministrada. Train: Se introducen las matrices que contienen el par de patrones entrada-salida. Adems se introducen los valores de los parmetros de entrenamientos.Adapt: Permite el reentrenamiento de la red, al suministrar un nuevo par de patrones entrada-salida.

Otra forma de visualizar stas funciones es seleccionar la red y hacer clic sobre la opcin , lo que permitir que se despliegue la siguiente ventana:

Fig. 21En la parte superior de la ventana (figura 21), se observan las funciones descritas anteriormente, con un opcin adicional Weights, sta opcin es la que permite visualizar las matrices de pesos y los vectores umbrales.Para desplegar cada una de stas funciones se debe hacer clic sobre la funcin a la que se quiere acceder. A continuacin se explicar cada una de ellas:Funcin Initialize

Fig. 22Input Ranges: Permite editar los rangos de las variables de entradas, y se introducen haciendo clic en Set Ranges. Una forma adicional de obtener los rangos es hacer clic en Get from input y seleccionar la matriz que contenga los patrones de entrada, siempre y cuando en dicha matriz se encuentren los valores mximos y mnimos de las variables de entrada.Revert Ranges: Revierte el vector que contiene los rangos de las variables de entrada a un vector de rangos anterior.Revert Weights: Acta de la misma forma que Revert Ranges, pero sobre las matrices de pesos y vectores de umbrales.Initialize Weights: Inicializa de forma aleatoria las matrices de pesos y los vectores umbrales.Funcin Simulate

Fig. 23En la ventana de arriba tenemos a Simulation Data (Datos de la simulacin):Inputs: Entradas a la red a ser simuladas.Init. input Delay States: Estado de retardos iniciales a la entrada. Esta opcin aparece desactivada ya que, no se colocaron retardos para la matriz entrada. Init. Layer Delay States: Estado de retardos iniciales para las capas de la red. Esta opcin se encuentra desactivada debido a que no se introdujeron en el entrenador retardos iniciales para las capas.Supply Targets: Suministrar objetivos. Si se habilita esta casilla se calcular un vector de error que se almacenar en Errors., y a la derecha Simulation Results (Resultados de la simulacin):Outputs: Salidas generadas por la red, se le asigna un nombre a en la casilla adjunta, la cual contendr las salidas de la red.Final input Delay States: Estado de retardos finales a la entrada. Esta opcin aparece desactivada ya que, no se colocaron retardos iniciales para las entradas.Final Layer Delay States: Estado de retardos finales para las capas de la red. Esta opcin se encuentra desactivada debido a que no se introdujeron en el entrenador retardos iniciales para las capas.

Funcin Train

Fig. 24El submen Training Info contiene a la izquierda Training Data (Datos de entrenamiento), en el cual se suministran los patrones de entrada-objetivo (Inputs-Targets); y a la derecha Training Results (Resultados del entrenamiento), en este cuadro se almacenan las salidas de la red, adems de el error de la misma durante el entrenamiento.

Fig. 25

En este submen (figura 25) de Training Parameters (Parmetros de entrenamiento) aparecen algunos parmetros de entrenamiento para la red, a continuacin se especifican:Epochs: Corresponde al nmero de iteracionesGoal: El error mximo permitidoMax_fail: Corresponde al numero mximo de fallas permitidoMin_grad: Corresponde al valor mnimo del gradienteMu: Corresponde al valor asociado a la taza de aprendizaje finalMu_inc: Corresponde al valor de incremento del mu durante el entrenamientoMu_dec: Corresponde al valor de decremento del mu durante el entrenamientoMu_max: Corresponde al valor mximo que puede alcanzar el mu.Show: Intervalo de visualizacin de los resultadosTime: Mximo tiempo de entrenamiento en segundos.

Fig. 26En ste submen (figura 26) Optional Info , presenta un cuadro para validacin de los datos y otro para prueba de datos, al marcar las casillas se habilitan estas opciones.

Una vez que se haya configurado la funcin para el entrenamiento de la red, y la red comience su entrenamiento aparecer la curva de error versus iteraciones, tal como se muestra en la figura 27:

Fig. 27Funcin adaptar

Fig. 28Se proporcionan los nuevos patrones de entrada en Inputs y los nuevos objetivos en Targets (Figura 28). El cuadro Adapt results presenta los resultados de la adaptacin.En el submen Adaption Parameters se coloca el nmero de pasos a realizar para la adaptacin.Funcin WeightsEn la ventana de abajo se muestra la opcin que permite la visualizacin de los matrices y vectores umbrales que son generados en la red. Como se explico anteriormente la matriz de pesos IW corresponde a la matriz de pesos que une los nodos de entrada con la primera capa oculta, y las matrices del tipo LW corresponde a las matrices de pesos entre capas; los vectores que aparecen identificada con la letra b{i}, corresponde a los vectores con los umbrales de activacin por capa.

Fig. 29 En esta pagina se termina la explicacin de cmo usar la herramienta de redes neurales de Matlab, slo para redes multicapas del tipo feedforward.

Para ayuda de las funciones de entrenamiento ver archivo anexo en formato pdf contenido en la carpeta redes neurales.