Story Transcript
Neural Network Toolbox Sistemas Conexionistas - Curso 08/09 La Neural Network Toolbox es un paquete de Matlab que contiene una serie de funciones para crear y trabajar con redes de neuronas artificiales. Con help nnet se obtiene la lista de todas las funciones de este paquete.
1. 1.1.
Adaline Funciones generales
mse Calcula el error cuadr´atico medio y se utiliza para evaluar la precisi´on de una red de neuronas. error = mse(salida_deseada - salida_obtenida) maxlinlr Calcula la velocidad m´axima de aprendizaje para una red lineal. Toma como par´ametro obligatorio los patrones de entrada a la red, los cuales se disponen en una matriz en la que cada columna representa un patr´on de entrada. P = [e11 e12; e21 e22] lr = maxlinlr(P) lr = maxlinlr(P,’bias’) learnwh Algoritmo de aprendizaje LMS (Widrow-Hoff). En un ciclo de aprendizaje, calcula la variaci´on de los pesos como dw = lr ∗ e ∗ p0 y la variaci´on del bias como db = lr ∗ e. Su sintaxis es: dW = learnwh(W,P,[],[],[],T,E,[],[],[],LP,[]); donde
W es la matriz de pesos de tama˜ no SxR, cada fila representa los pesos de un elemento de procesado P es la matriz de entrada de tama˜ no RxQ, cada columna representa un patr´on de entrada T es la matriz de salidas deseadas de tama˜ no SxQ, cada columna representa una salida deseada E es la matriz de errores de tama˜ no SxQ, con un error por columna LP es una estructura que contiene los par´ametros de aprendizaje. En concreto: • LP.lr es la velocidad de aprendizaje (learning rate) • LP.mc es el momento (momentum constant) • LP.dr es la tasa de decaimiento (decay rate) Esta funci´on devuelve una matriz de tama˜ no SxR que contiene el incremento de los pesos.
2. 2.1.
Perceptr´ on multicapa Creaci´ on
El comando newff crea una red de neuronas de tipo feedforward. En la versi´on 6 de la Neural Network Toolbox (laboratorio de pr´acticas), su sintaxis es: net = newff(P, T, [S1 S2...S(N - 1)],{TF1 TF2...TFN},BTF,BLF,PF) P Matriz con los patrones de entrada T Matriz con las salidas deseadas Si Tama˜ no de la capa i (s´olo capas ocultas) TFi Funci´on de transferencia de la capa i, por defecto es ’tansig’ para las capas ocultas y ’purelin’ para la capa de salida.
2
BTF Funci´on de entrenamiento, por defecto ’trainlm’. BLF Funci´on de aprendizaje de los pesos/bias, por defecto ’learngdm’. PF Funci´on de evaluaci´on, por defecto ’mse’ Esta funci´on devuelve una red feedforward con N capas. Para versiones anteriores de la Neural Network Toolbox, la sintaxis cambia: net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) PR Matriz con los valores m´ınimo y m´aximo de cada una de las componentes de los patrones de entrada Si Tama˜ no de la capa i TFi Funci´on de transferencia de la capa i, por defecto es ’tansig’. BTF Funci´on de entrenamiento, por defecto ’trainlm’. BLF Funci´on de aprendizaje de los pesos/bias, por defecto ’learngdm’. PF Funci´on de evaluaci´on, por defecto ’mse’ Esta funci´on devuelve una red feedforward con N capas. Funciones de transferencia Un elemento de procesado tiene N entradas. La suma de estas entradas ponderadas por los pesos y el bias constituye la entrada a la funci´on de transferencia, la cual determina c´omo ser´an las salidas del elemento de procesado. Los elementos de procesado pueden utilizar cualquier tipo de funci´on de transferencia diferenciable para generar su salida, por ejemplo:
3
La funci´on de transferencia de una capa se establece al crear la red o bien alterando el valor del par´ametro NET.layers{i}.transferFcn en una red existente. Es muy importante que la funci´on de transferencia se adec´ ue al problema a resolver.
2.2.
Entrenamiento
Una vez creada la red, el siguiente paso es realizar el entrenamiento con los patrones de entrada y las salidas deseadas. Existen dos tipos de entrenamiento: Est´ atico En cada ciclo de entrenamiento se recalculan los pesos de la red tras presentar todos los patrones de entrenamiento. Se realiza con la funci´on train: [net,TR,Y,E] = train(NET,P,T) Los par´ametros de entrada son: NET Una red inicializada P Los patrones de entrada T Las salidas deseadas Y los par´ametros de salida son: 4
net Red entrenada TR Error en funci´on de la iteraci´on Y Salida de la red E Errores de la red Adaptativo En cada ciclo de entrenamiento se recalculan los pesos tras presentar cada uno de los patrones de entrenamiento. Se realiza con la funci´on adapt, cuya sintaxis es la siguiente: [net,Y,E] = adapt(NET,P,T) Los par´ametros de entrada son: NET Una red inicializada P Los patrones de entrada T Las salidas deseadas Y los par´ametros de salida son: net Red entrenada Y Salida de la red E Errores de la red Antes de utilizar este tipo de entrenamiento es necesario especificar el n´ umero de pasadas de entrenamiento adaptativo con NET.adaptParam.passes. Funciones de entrenamiento Existen diversos m´etodos para realizar el entrenamiento est´atico de una red de neuronas. Estos m´etodos se basan en algoritmos que intentan minimizar el error en base a diversas t´ecnicas. Cada uno de estos m´etodos presenta sus ventajas e inconvenientes en cuanto a
5
convergencia y coste computacional1 . Algunas funciones de entrenamiento son trainlm, traingd, traingdx, trainbr, etc Al igual que las funciones de transferencia, la funci´on de entrenamiento se establece al crear la red o bien alterando el valor del par´ametro NET.transferFcn
2.3.
Utilizaci´ on
Tras la fase de entrenamiento, la red est´a lista para ser usada, es decir, la red es capaz de producir una salida adecuada a un conjunto de patrones de entrada. La funci´on sim es la encargada de pasar un conjunto de patrones de entrada a la red y de obtener su salida: Y =
sim(NET,P)
Donde NET representa una red entrenada P es el conjunto de patrones de entrada Y es la salida de la red
3.
Redes de base radial
3.1.
Creaci´ on
Las redes de base radial pueden ser creadas con los comandos newrbe o newrb. La funci´on newrbe crea una red de base radial con tantas neuronas como patrones de entrada. Su sintaxis es: net = newrbe(P,T,SPREAD) donde 1
El cap´ıtulo 5 del manual de referencia hace una comparativa entre los distintos algoritmos de entre-
namiento.
6
P es una matriz con los patrones de entrada T es una matriz con las salidas deseadas SPREAD difusi´on de las funciones de base radial, por defecto 1 El valor de SPREAD determina el ancho del ´area del espacio de entrada al que cada neurona responde. Por ejemplo, si SPREAD toma valor 4, cada neurona de la capa de neuronas de base radial responder´a con valores de 0.5 o superiores a cada patr´on de entrada situado a una distancia de 4 del vector de pesos. Este par´ametro debe ser lo suficientemente grande como para que las neuronas puedan responder fuertemente a regiones solapadas del espacio de entrada, mejorando as´ı la capacidad de generalizaci´on. No obstante, si este valor es demasiado grande, todas las neuronas de la capa de base radial tomar´an como salida valores cercanos a 1 con todos los patrones de entrada, perdiendo as´ı la informaci´on almacenada en la capa de base radial. La funci´on newrb crea una red de base radial a˜ nadiendo una neurona en cada iteraci´on. La red a˜ nade una nueva neurona hasta que el error total de la red alcanza un error objetivo o bien se alcanza un n´ umero m´aximo de neuronas (por defecto, el n´ umero de patrones de entrada). La sintaxis es: net = newrb(P,T,GOAL,SPREAD,MN) donde P es una matriz con los patrones de entrada T es una matriz con las salidas deseadas GOAL error cuadr´atico medio objetivo, por defecto 0.0 SPREAD difusi´on de las funciones de base radial, por defecto 1 MN m´aximo n´ umero de neuronas, por defecto, el mismo n´ umero de patrones de entrada Esta funci´on crea un dise˜ no m´as eficiente de las redes de base radial.
7
3.2.
Entrenamiento
En este tipo de redes no es necesario realizar expl´ıcitamente un entrenamiento. En caso de redes creadas con newrbe, los pesos de la capa de base radial se inicializan con los valores de los patrones y los bias de cada neurona a 0.8326/SPREAD. Los pesos de la capa lineal se obtienen simulando las salidas de la primera capa y resolviendo una expresi´on lineal. En la creaci´on de redes con newrb, se realiza el siguiente proceso iterativo hasta que el error alcanza el error objetivo o bien se alcanza el m´aximo n´ umero de neuronas: 1. La red se simula 2. Se localiza el patr´on de entrada con mayor error y se a˜ nade una neurona en la capa de base radial con los pesos de dicho patr´on 3. Se recalculan los pesos de la capa lineal para minimizar el error cometido
3.3.
Utilizaci´ on
La funci´on sim, descrita en el apartado anterior se utiliza para aplicar una red de base radial a nuevos patrones de entrada.
4. 4.1.
Mapas autoorganizativos Creaci´ on
La funci´on newsom se utiliza para crear un mapa autoorganizativo. Su sintaxis es: NET = newsom(PR, [D1, D2, ...], TFCN) Los par´ametros de esta funci´on son: PR es una matriz con los valores m´aximos y m´ınimos de las entradas Di es la dimensi´on de la i-´esima capa TFCN representa la topolog´ıa (gridtop,hextop o randtop) 8
La funci´on newsom devuelve un mapa autoorganizativo. Algunos par´ametros de inter´es de la nueva red son: NET.trainParam.epochs M´aximo n´ umero de ciclos de entrenamiento La funci´on plotsom dibuja mapas autoorganizativos: plotsom(net.layers{i}.positions) representa la posici´on de los elementos de procesado de la capa i-´esima del mapa autoorganizativo. Cada elemento de procesado est´a situado a una distancia eucl´ıdea de 1 con respecto a sus vecinos. plotsom(net.IW{i,j}, net.layers{i}.distances) representa la posici´on real de cada elemento de procesado con respecto a sus vecinos en la capa i-´esima.
4.2.
Entrenamiento
Se utiliza la funci´on train descrita anteriormente.
4.3.
Utilizaci´ on
La funci´on sim descrita en el apartado Perceptr´on permite aplicar el mapa autoorganizativo entrenado a un nuevo conjunto de patrones. En este caso, la funci´on sim devuelve no un valor sino un vector con tantas posiciones como elementos de procesado. Todas las posiciones de este vector est´an ocupadas por ceros excepto la posici´on correspondiente al elemento de procesado activado en la capa competitiva, el cual toma valor uno. En estas casos Matlab muestra u ´nicamente el ´ındice con valor uno: >> Y = sim(net,X)
9
Y =
(18,1)
1
A veces es necesario extraer el ´ındice correspondiente al elemento de procesado activado. Para ello se utiliza la funci´on vec2ind: >> vec2ind(Y)
ans =
18
10