redes neuronales en matlab

Anuncio
MatLab
Toolbox de Redes Neuronales
REDES
NEURONALES
EN MATLAB
Entradas concurrentes
REDES ESTÁTICAS
| Entradas Secuenciales en tiempo
| REDES DINÁMICAS
|
|
por Gustavo Meschino
© 2006
SUB-OBJETOS
MatLab
Toolbox de Redes Neuronales
|
Objeto Red
Æ número de capas
Æ número neuronas por capa
Æ conectividad entre capas
inputs:
layers:
outputs:
targets:
biases:
inputWeights:
layerWeights:
|
{1x1
{1x1
{1x1
{1x1
{1x1
{1x1
{1x1
cell}
cell}
cell}
cell}
cell}
cell}
cell}
#
#
#
#
#
#
#
SUB-OBJETOS
ENTRADAS
CAPAS
SALIDAS
SALIDAS DESEADAS
UMBRALES
PESOS DE LA CAPA DE ENTRADA
PESOS DE CAPAS ESCONDIDAS
Distintas funciones para crear distintos tipo de Redes: newp
(perceptrón), newff (feed forward), newlin (neurona lineal)...
MatLab
Toolbox de Redes Neuronales
|
Las neuronas de una capa tienen todas la misma función de
transferencia indicadas en:
net.transferFcn (para el peceptrón hardlim)
|
También se indica la función de entrada (el cálculo del campo local):
net.netInputFcn (para el peceptrón netsum)
|
Los parámetros net.inputWeights y net.layerWeights especifican la
función de entrenamiento y sus parámetros (y otras cosas).
|
Se dan las funciones de inicialización, perfomance y entrenamiento y
sus parámetros
functions:
adaptFcn:
initFcn:
performFcn:
trainFcn:
Toolbox de Redes Neuronales
Funciones seleccionables
|
initFcn
Æ función con que se inicializalizan
pesos y umbrales.
|
trainFcn
Æ función de entrenamiento Batch.
Se da una sola para toda la red
(es la opción que se utiliza)
Æ función de entrenamiento Incremental (on line)
Se puede dar una función de entrenamiento
por cada capa conectada (sin gran aplicación).
'trains'
'initlay'
'mae'
'trainc'
parameters:
adaptParam: .passes
initParam: (none)
performParam: (none)
trainParam: .epochs, .goal,
.show, .time
Toolbox de Redes Neuronales
Parámetros seleccionables
|
adaptParam:
.passes Æ Cantidad de “pasadas” para la función ‘adapt’.
|
trainParam:
.epochs Æ Cantidad de épocas máxima
.goal
Æ Error mínimo al que se quiere llegar
.show
Æ Cada cuántas épocas se mostrarán resultados
Número de épocas.
|
adaptFcn
|
performFcn Æ función de performance, cuantifica un valor
para el error que va comentiendo la red.
‘mse’: mean squared error,
‘mae’: mean absolute error, etc.
.time
Se dispone de unas 20 funciones de entrenamiento (trainFcn),
cada una con sus características de velocidad, requerimientos de
memoria, etc.
Otros trainParam (dependiendo del tipo de red creada y de
la función de entrenamiento o adaptación)
min_grad, mu, mu_dec, mu_inc, mu_max, lr ...
|
y se actualizará el gráfico de entrenamiento
Æ Tiempo máximo de entrenamiento
1
Toolbox de Redes Neuronales
Funciones de entrenamiento
|
trainFcn = ‘traingd’ (demo nnd12sd1)
Æ función descenso por el gradiente. Se indica el número de
épocas (epochs), cada cuántas iteraciones se muestran los
resultados (show), el mínimo esperado para la función de error
(goal), el tiempo máximo (time), los gradientes máximos y
mínimos admitidos (min_grad, max_grad) y la tasa de
aprendizaje (lr).
|
trainFcn = ‘traingdm’ (demo nnd12mo)
Æ función descenso por el gradiente con momento. Se indica
además el valor de momento (mc). Otra opción permite indicar
que si una nueva evaluación del error es PEOR que otra
hallada según el cociente entre ambas (max_perf_inc) los
cambios en los pesos se descartan y se hace mc = 0.
|
Toolbox de Redes Neuronales
Pesos y Umbrales
IW: {1x1 cell} containing 1 input weight matrix
LW: {1x1 cell} containing no layer weight matrices
b: {1x1 cell} containing 1 bias vector
|
IW (i)
Æ
es una matriz celda bidimensional que contiene
los pesos de las conexiones entre las entradas y la capa i.
|
LW (i,j)
Æ
contiene la matriz de pesos de las conexiones
desde la capa j hacia la capa i.
|
b (i)
Æ
contiene los umbrales de las diferentes capas.
LW (2,1)
IW (1)
IW (2) = 0
IW (3) = 0
trainFcn = ‘traingdx’ y trainFcn = ‘traingda’
Æ como las anteriores pero ‘lr’ va disminuyéndose si el error va
empeorando de una iteración a la otra (entrena mucho más rápido).
Toolbox de Redes Neuronales
Diferencia entre adapt y train
LW (3,2)
Ejemplo: Perceptrón Simple
Tarea de Clasificación (1/3)
P Æ Entradas para entrenamiento
T Æ Salidas Deseadas
Efectúan el ENTRENAMIENTO de una red neuronal.
ENTRENAMIENTO
INCREMENTAL
(On-line)
ENTRENAMIENTO
POR LOTES
(Batch)
adapt
train
...cada dato del conjunto
de entrenamiento
Los pesos se adaptan luego
de la presentación de...
Un Vector de Entrada
P = [1.359 1.253 1.418 1.528 …
2.163 2.883 2.772 3.310 … ]
...el conjunto de
entrenamiento
completo (una época)
T = [
Si los datos de entrenamiento son celdas Æ Modo Batch
Si son matrices Æ Modo On-Line
Es mucho más lento que train
Siempre Æ Modo Batch
Se dispone de más cantidad de algoritmos muy eficientes.
Exceptuando redes con retardos temporales, siempre es conveniente.
Ejemplo: Perceptrón Simple
Tarea de Clasificación (2/3)
percep = train(percep, P, T);
P Æ Entradas para entrenamiento
T Æ Salidas Deseadas
Entrena el perceptrón en modo batch.
percep = adapt(percep, P, T);
1
1
0
1
… ]
Salida deseada
para esa Entrada
percep = newp(minmax(P), CantidadNeuronas);
Crea un Perceptrón simple (de una sola capa).
Ejemplo: Perceptrón Simple
Tarea de Clasificación (3/3)
sali = sim(percep, newP);
Consulta el perceptrón para conocer su salida dado el conjunto
de entradas almacenado en newP.
Entrena el perceptrón en modo on line (aunque depende del formato de P y T).
Un Vector de Entrada
plotpv(P,T)
Hace el gráfico de los datos y clases.
Pesos = percep.IW{1,1};
Umbrales = percep.b{1};
plotpc(Pesos, Umbrales)
Traza la recta de discriminación.
newP = [1.877 1.443 1.314 1.211 …
3.333 4.843 2.722 6.513 … ]
sali = [
1
0
0
1
… ]
Salida obtenida
para esa Entrada
2
Ejemplo: Backpropagation
Función lógica XOR
P Æ Entradas para entrenamiento
T Æ Salidas Deseadas
P = [0 1 0 1
0 0 1 1]
T = [0 1 1 0]
PREPARACIÓN
DE LOS DATOS
DOS VECTORES DE DATOS:
x1 = [0.1 1000 50]
x2 = [0.3 1100 51]
net = newff([0 1; 0 1],[2 1],{'logsig','logsig'});
Funciones de transferencia
para cada capa.
La tercera dimensión tiene una diferencia del 2 %.
La segunda dimensión tiene una diferencia del 10 %.
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
DE LOS DATOS
PREPARACIÓN
DE LOS DATOS
|
Supongamos que los rangos de las dimensiones son los
siguientes:
rangos = [1 2000 100
0
0
0]
|
Si cambiamos la escala de las variables, podemos pasar a
todos los diferentes rangos al rango [-1, 1] mediante una
función lineal.
LOS DOS VECTORES DE DATOS EN EL NUEVO RANGO:
x1 = [-0.8000
x2 = [-0.4000
0
0.1000
0]
0.0200]
La tercera dimensión tiene una diferencia del 0.02 %.
La segunda dimensión tiene una diferencia del 1 %.
La primera dimensión tiene una diferencia del 100 %.
DISTANCIA EUCLIDEANA ENTRE AMBOS:
Rangos
[0, 1]
Æ
[0, 2000] Æ
[0, 100] Æ
[-1, +1]
[-1, +1]
[-1, +1]
DISTANCIA = sqrt(sum((x1-x2).^2)) = 0.4128
¡¡ Ahora la mayor diferencia es la que da la distancia !!
PREPARACIÓN
DE LOS DATOS
PREPARACIÓN
DE LOS DATOS
NORMALIZAR Æ modificar los datos originales a través de
transformaciones tales que queden en un rango específico.
“ESTANDARIZACIÓN” DE LOS DATOS
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 normalizados entre -1 y +1.
Datos originales.
Datos originales.
APLICACIÓN DE UNA NORMALIZACIÓN LINEAL ANTERIOR
APLICACIÓN DE UNA ESTANDARIZACIÓN 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: PREDICCIÓN DE LA
DEMANDA ELÉCTRICA (1/4)
Ejemplo: RECONOCIMIENTO
DE CARACTERES ESCRITOS
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
MAPE = 100
∑
i =1
LRi − LPi
LRi
31
LPi – es el valor PREDICHO por la red de la
máxima demanda eléctrica del día i del año 1999.
M = max( LRi − LPi )
Ejemplo: PREDICCIÓN DE LA
DEMANDA ELÉCTRICA (2/4)
Ejemplo: PREDICCIÓN DE LA
DEMANDA ELÉCTRICA (3/4)
ENERO 1999 – DATOS ORIGINALES REGISTRADOS
ÉSTOS SE PRETENDÍAN PREDECIR CON LA RED
30.0
25.0
20.0
15.0
10.0
5.0
0.0
-5.0
-10.0
-15.0
820
800
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]
Temperatura [ºC]
Serie de TEMPERATURAS de los años 1997 y 1998 día por día
Días del año 1998
Serie de CONSUMOS registrados en los años 1997 y 1998 día por día
Máxima Demanda
registrada [GWatt]
MEDICIÓN DEL ERROR COMETIDO
LRi – es el valor REAL de la máxima demanda
eléctrica del día i del año 1999.
1000
800
600
740
720
700
680
660
640
400
620
200
600
0
1
1
17 33 49 65 81 97 113 129 145 161 177 193 209 225 241 257 273 289 305 321 337 353
Días del año 1998
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
Ejemplo: PREDICCIÓN DE LA
DEMANDA ELÉCTRICA (4/4)
ENERO 1999 – RESULTADOS OBTENIDOS
CON DIVERSOS DISEÑOS DE REDES
900
MAX [MW]
850
800
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
4
Descargar