Este documento proporciona una introducción a la Neural Network Toolbox de Matlab. Resume las principales funciones para crear y entrenar redes neuronales como perceptrones multicapa, redes de base radial y mapas autoorganizativos. También explica cómo utilizar estas redes entrenadas para clasificar nuevos patrones de entrada.
La identificación de un sistema dinámico mediante una red neuronal consiste en determinar los parámetros de la red de tal manera que los dos sistemas tengan respuestas similares cuando son excitados con las mismas señales de control.
El presente artículo técnico tiene la siguiente estructura: estado del arte, resultados y conclusiones.
El estado del arte se define en las 5 primeras secciones:
Sección 1: Neurona biológica y artificial, describe la estructura neuronal.
Sección 2: Funciones de activación o trasnferencia, se realiza una comparación de las funciones de activación más utilizadas.
Sección 3: Funciones satlin y satlins, describe la aplicación de estas funciones.
Sección4: Redes neuronales de hopfield, describe la arquitectura de una red de hopfield.
Sección5: Diseño de una red de Hopfield, describe el diseño de la red de hopfield.
Resultados del ejercicio práctico:
Sección 7: Reconocimiento de Dígitos impares con Hopfield, se presenta la solución en matlab y resultados obtenidos.
Sección 8: Conclusiones.
Introducción
Clasificación de redes neuronales: Estructura y Entrenamiento
Aplicación de las redes neuronales a la identificación de sistemas
Las redes neuronales en el control
1. 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. Adaline
1.1. 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, cal-
cula la variaci´on de los pesos como dw = lr ∗ e ∗ p y la variaci´on del bias como
db = lr ∗ e. Su sintaxis es:
dW = learnwh(W,P,[],[],[],T,E,[],[],[],LP,[]);
donde
2. 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. Perceptr´on multicapa
2.1. 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
3. 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
4. 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
5. 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
6. 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
7. 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
8. 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. Mapas autoorganizativos
4.1. 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
9. 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 pro-
cesado 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 ´unicamente el ´ındice con valor uno:
>> Y = sim(net,X)
9
10. 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