Está en la página 1de 4

MatLab

Toolbox de Redes Neuronales


REDES
NEURONALES | Entradas concurrentes
| REDES ESTÁTICAS
EN MATLAB | Entradas Secuenciales en tiempo

por Gustavo Meschino | REDES DINÁMICAS

© 2006

SUB-OBJETOS

MatLab MatLab
Toolbox de Redes Neuronales Toolbox de Redes Neuronales
| Las neuronas de una capa tienen todas la misma función de
| Objeto Red Æ número de capas transferencia indicadas en:
Æ número neuronas por capa net.transferFcn (para el peceptrón hardlim)
Æ conectividad entre capas
SUB-OBJETOS | También se indica la función de entrada (el cálculo del campo local):
net.netInputFcn (para el peceptrón netsum)
inputs: {1x1 cell} # ENTRADAS
layers: {1x1 cell} # CAPAS
outputs: {1x1 cell} # SALIDAS
| Los parámetros net.inputWeights y net.layerWeights especifican la
función de entrenamiento y sus parámetros (y otras cosas).
targets: {1x1 cell} # SALIDAS DESEADAS
biases: {1x1 cell} # UMBRALES
| Se dan las funciones de inicialización, perfomance y entrenamiento y
inputWeights: {1x1 cell} # PESOS DE LA CAPA DE ENTRADA sus parámetros
layerWeights: {1x1 cell} # PESOS DE CAPAS ESCONDIDAS
functions: parameters:
adaptFcn: 'trains' adaptParam: .passes
| Distintas funciones para crear distintos tipo de Redes: newp initFcn: 'initlay' initParam: (none)
(perceptrón), newff (feed forward), newlin (neurona lineal)... performFcn: 'mae' performParam: (none)
trainFcn: 'trainc' trainParam: .epochs, .goal,
.show, .time

Toolbox de Redes Neuronales Toolbox de Redes Neuronales


Funciones seleccionables Parámetros seleccionables
| initFcn Æ función con que se inicializalizan | adaptParam:
pesos y umbrales. .passes Æ Cantidad de “pasadas” para la función ‘adapt’.
| trainFcn Æ función de entrenamiento Batch. Número de épocas.
Se da una sola para toda la red | trainParam:
(es la opción que se utiliza)
.epochs Æ Cantidad de épocas máxima
| adaptFcn Æ función de entrenamiento Incremental (on line)
Se puede dar una función de entrenamiento .goal Æ Error mínimo al que se quiere llegar
por cada capa conectada (sin gran aplicación). .show Æ Cada cuántas épocas se mostrarán resultados
| performFcn Æ función de performance, cuantifica un valor y se actualizará el gráfico de entrenamiento
para el error que va comentiendo la red. .time Æ Tiempo máximo de entrenamiento
‘mse’: mean squared error,
‘mae’: mean absolute error, etc.
| Se dispone de unas 20 funciones de entrenamiento (trainFcn), Otros trainParam (dependiendo del tipo de red creada y de
cada una con sus características de velocidad, requerimientos de la función de entrenamiento o adaptación)
memoria, etc. min_grad, mu, mu_dec, mu_inc, mu_max, lr ...

1
Toolbox de Redes Neuronales Toolbox de Redes Neuronales
Funciones de entrenamiento Pesos y Umbrales
| trainFcn = ‘traingd’ (demo nnd12sd1) IW: {1x1 cell} containing 1 input weight matrix
Æ función descenso por el gradiente. Se indica el número de LW: {1x1 cell} containing no layer weight matrices
épocas (epochs), cada cuántas iteraciones se muestran los b: {1x1 cell} containing 1 bias vector
resultados (show), el mínimo esperado para la función de error
(goal), el tiempo máximo (time), los gradientes máximos y | IW (i) Æ es una matriz celda bidimensional que contiene
mínimos admitidos (min_grad, max_grad) y la tasa de los pesos de las conexiones entre las entradas y la capa i.
aprendizaje (lr).
| LW (i,j) Æ contiene la matriz de pesos de las conexiones
| trainFcn = ‘traingdm’ (demo nnd12mo)
desde la capa j hacia la capa i.
Æ función descenso por el gradiente con momento. Se indica | b (i) Æ contiene los umbrales de las diferentes capas.
además el valor de momento (mc). Otra opción permite indicar
que si una nueva evaluación del error es PEOR que otra LW (2,1)
hallada según el cociente entre ambas (max_perf_inc) los
cambios en los pesos se descartan y se hace mc = 0. IW (1)
IW (2) = 0
| trainFcn = ‘traingdx’ y trainFcn = ‘traingda’ IW (3) = 0
Æ como las anteriores pero ‘lr’ va disminuyéndose si el error va LW (3,2)
empeorando de una iteración a la otra (entrena mucho más rápido).

Toolbox de Redes Neuronales Ejemplo: Perceptrón Simple


Diferencia entre adapt y train Tarea de Clasificación (1/3)
Efectúan el ENTRENAMIENTO de una red neuronal. P Æ Entradas para entrenamiento
T Æ Salidas Deseadas
ENTRENAMIENTO ...cada dato del conjunto
INCREMENTAL Un Vector de Entrada
de entrenamiento
(On-line) Los pesos se adaptan luego
de la presentación de... P = [1.359 1.253 1.418 1.528 …
ENTRENAMIENTO ...el conjunto de
2.163 2.883 2.772 3.310 … ]
POR LOTES entrenamiento
(Batch) completo (una época)
T = [ 1 1 0 1 … ]
adapt Si los datos de entrenamiento son celdas Æ Modo Batch
Salida deseada
Si son matrices Æ Modo On-Line
para esa Entrada
Es mucho más lento que train

train Siempre Æ Modo Batch percep = newp(minmax(P), CantidadNeuronas);


Se dispone de más cantidad de algoritmos muy eficientes.
Exceptuando redes con retardos temporales, siempre es conveniente. Crea un Perceptrón simple (de una sola capa).

Ejemplo: Perceptrón Simple Ejemplo: Perceptrón Simple


Tarea de Clasificación (2/3) Tarea de Clasificación (3/3)
P Æ Entradas para entrenamiento
percep = train(percep, P, T); T Æ Salidas Deseadas
sali = sim(percep, newP);
Entrena el perceptrón en modo batch. Consulta el perceptrón para conocer su salida dado el conjunto
de entradas almacenado en newP.
percep = adapt(percep, P, T);
Entrena el perceptrón en modo on line (aunque depende del formato de P y T).
Un Vector de Entrada
plotpv(P,T)
newP = [1.877 1.443 1.314 1.211 …
Hace el gráfico de los datos y clases.
3.333 4.843 2.722 6.513 … ]
Pesos = percep.IW{1,1};
Umbrales = percep.b{1}; sali = [ 1 0 0 1 … ]

plotpc(Pesos, Umbrales)
Salida obtenida
Traza la recta de discriminación. para esa Entrada

2
Ejemplo: Backpropagation PREPARACIÓN
Función lógica XOR DE LOS DATOS
P Æ Entradas para entrenamiento P = [0 1 0 1 DOS VECTORES DE DATOS:
0 0 1 1] x1 = [0.1 1000 50]
T Æ Salidas Deseadas T = [0 1 1 0]
x2 = [0.3 1100 51]
net = newff([0 1; 0 1],[2 1],{'logsig','logsig'}); La tercera dimensión tiene una diferencia del 2 %.

Funciones de transferencia La segunda dimensión tiene una diferencia del 10 %.


para cada capa.
La primera dimensión tiene una diferencia del 300 %.
Cantidad de neuronas en cada capa.
DISTANCIA EUCLIDEANA ENTRE AMBOS:
Valores Mínimos y Máximos para cada entrada
(así se indica también la cantidad de entradas) .
DISTANCIA = sqrt(sum((x1-x2).^2)) = 100.0052
Crea una red feed forward.
¡¡ La diferencia del 10% enmascara las otras diferencias !!
net = train(net, P, T); salida = sim(net, P);

PREPARACIÓN PREPARACIÓN
DE LOS DATOS DE LOS DATOS
LOS DOS VECTORES DE DATOS EN EL NUEVO RANGO:
| Supongamos que los rangos de las dimensiones son los
x1 = [-0.8000 0 0]
siguientes:
rangos = [1 2000 100 x2 = [-0.4000 0.1000 0.0200]
0 0 0] La tercera dimensión tiene una diferencia del 0.02 %.
La segunda dimensión tiene una diferencia del 1 %.
| Si cambiamos la escala de las variables, podemos pasar a
todos los diferentes rangos al rango [-1, 1] mediante una La primera dimensión tiene una diferencia del 100 %.
función lineal.
DISTANCIA EUCLIDEANA ENTRE AMBOS:
Rangos [0, 1] Æ [-1, +1]
[0, 2000] Æ [-1, +1] DISTANCIA = sqrt(sum((x1-x2).^2)) = 0.4128
[0, 100] Æ [-1, +1]
¡¡ Ahora la mayor diferencia es la que da la distancia !!

PREPARACIÓN PREPARACIÓN
DE LOS DATOS DE LOS DATOS
NORMALIZAR Æ modificar los datos originales a través de “ESTANDARIZACIÓN” DE LOS DATOS
transformaciones tales que queden en un rango específico. MEDIA = 0 y DESVIACIÓN STANDARD = 1
NORMALIZACIÓN LINEAL AL RANGO [-1, +1] [Pn, meanp, stdp, Tn, meant, stdt] = prestd(P, T)
[Pn, minp, maxp, Tn, mint, maxt] = premnmx(P, T);
Datos “estandarizados”. Datos originales.

Datos normalizados entre -1 y +1. Datos originales.


APLICACIÓN DE UNA ESTANDARIZACIÓN ANTERIOR
APLICACIÓN DE UNA NORMALIZACIÓN LINEAL ANTERIOR [PN] = trastd(P, meanp, stdp);
[PN] = tramnmx(P,minp,maxp);

DESNORMALIZACIÓN DES-ESTANDARIZACIÓN
[P, T] = postmnmx(PN, minp, maxp, TN, mint, maxt); [P, T] = poststd(PN, meanp, stdp, TN, meant, stdt);

3
Ejemplo: RECONOCIMIENTO Ejemplo: PREDICCIÓN DE LA
DE CARACTERES ESCRITOS DEMANDA ELÉCTRICA (1/4)

Load199X.xls Contiene los datos cada media hora de la demanda


eléctrica durante todos los días de los años 1997 y
1998.

Temperature199X.xls Temperaturas promedio de todos los días de los


años 1997 y 1998.
Holidays.xls Contiene los días feriados o vacaciones de los años
1997 y 1998.

31
LRi − LPi MEDICIÓN DEL ERROR COMETIDO

i =1 LRi LRi – es el valor REAL de la máxima demanda
MAPE = 100 eléctrica del día i del año 1999.
31
LPi – es el valor PREDICHO por la red de la
M = max( LRi − LPi ) máxima demanda eléctrica del día i del año 1999.

Ejemplo: PREDICCIÓN DE LA Ejemplo: PREDICCIÓN DE LA


DEMANDA ELÉCTRICA (2/4) DEMANDA ELÉCTRICA (3/4)
Serie de TEMPERATURAS de los años 1997 y 1998 día por día ENERO 1999 – DATOS ORIGINALES REGISTRADOS
30.0
ÉSTOS SE PRETENDÍAN PREDECIR CON LA RED
Temperatura [ºC]

25.0
20.0
15.0
10.0
5.0 820
0.0
-5.0 800
-10.0
-15.0
780
1 16 31 46 61 76 91 106 121 136 151 166 181 196 211 226 241 256 271 286 301 316 331 346 361 760
Max load [MW]

Días del año 1998 740


720
Serie de CONSUMOS registrados en los años 1997 y 1998 día por día
700
1000
registrada [GWatt]

680
Máxima Demanda

800
660
600
640
400
620
200
600
0
1 17 33 49 65 81 97 113 129 145 161 177 193 209 225 241 257 273 289 305 321 337 353
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Day
Días del año 1998

Ejemplo: PREDICCIÓN DE LA
DEMANDA ELÉCTRICA (4/4)
ENERO 1999 – RESULTADOS OBTENIDOS
CON DIVERSOS DISEÑOS DE REDES
900

850

800
MAX [MW]

750

700

650

600
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31
Day
Original Chih Jen Lin David Esp Brockman Werner A Javier Marin

También podría gustarte