redes neuronales matlab (1)
TRANSCRIPT
1
REDES NEURONALESEN MATLABpor Gustavo Meschino© 2006
MatLabToolbox de Redes Neuronales
Entradas concurrentesREDES ESTÁTICASEntradas Secuenciales en tiempoREDES DINÁMICAS
SUB-OBJETOS
MatLabToolbox de Redes Neuronales
Objeto Red número de capasnúmero neuronas por capaconectividad entre capas
inputs: {1x1 cell} # ENTRADASlayers: {1x1 cell} # CAPAS
outputs: {1x1 cell} # SALIDAStargets: {1x1 cell} # SALIDAS DESEADASbiases: {1x1 cell} # UMBRALES
inputWeights: {1x1 cell} # PESOS DE LA CAPA DE ENTRADAlayerWeights: {1x1 cell} # PESOS DE CAPAS ESCONDIDAS
Distintas funciones para crear distintos tipo de Redes: newp(perceptrón), newff (feed forward), newlin (neurona lineal)...
SUB-OBJETOS
MatLabToolbox 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
parameters:adaptParam: .passesinitParam: (none)
performParam: (none)trainParam: .epochs, .goal,
.show, .time
functions:adaptFcn: 'trains'initFcn: 'initlay'
performFcn: 'mae'trainFcn: 'trainc'
Toolbox de Redes NeuronalesFunciones seleccionables
initFcn función con que se inicializalizanpesos y umbrales.
trainFcn función de entrenamiento Batch.Se da una sola para toda la red(es la opción que se utiliza)
adaptFcn función de entrenamiento Incremental (on line)Se puede dar una función de entrenamientopor cada capa conectada (sin gran aplicación).
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.
Se dispone de unas 20 funciones de entrenamiento (trainFcn), cada una con sus características de velocidad, requerimientos de memoria, etc.
Toolbox de Redes NeuronalesParámetros seleccionables
adaptParam: .passes Cantidad de “pasadas” para la función ‘adapt’.
Número de épocas.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
y se actualizará el gráfico de entrenamiento.time Tiempo máximo de entrenamiento
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 ...
2
Toolbox de Redes NeuronalesFunciones 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.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 NeuronalesPesos y Umbrales
IW: {1x1 cell} containing 1 input weight matrixLW: {1x1 cell} containing no layer weight matricesb: {1x1 cell} containing 1 bias vector
IW (1)IW (2) = 0IW (3) = 0
LW (2,1)
LW (3,2)
IW (i) es una matriz celda bidimensional que contienelos pesos de las conexiones entre las entradas y la capa i.
LW (i,j) contiene la matriz de pesos de las conexionesdesde la capa j hacia la capa i.
b (i) contiene los umbrales de las diferentes capas.
Toolbox de Redes NeuronalesDiferencia entre adapt y train
Efectúan el ENTRENAMIENTO de una red neuronal.
ENTRENAMIENTOINCREMENTAL
(On-line)
ENTRENAMIENTOPOR LOTES
(Batch)
...cada dato del conjunto de entrenamiento
...el conjunto de entrenamientocompleto (una época)
Si los datos de entrenamiento son celdas Modo BatchSi son matrices Modo On-LineEs mucho más lento que train
adapt
Siempre Modo BatchSe dispone de más cantidad de algoritmos muy eficientes.Exceptuando redes con retardos temporales, siempre es conveniente.
train
Los pesos se adaptan luegode la presentación de...
Ejemplo: Perceptrón SimpleTarea de Clasificación (1/3)
P = [1.359 1.253 1.418 1.528 …2.163 2.883 2.772 3.310 … ]
T = [ 1 1 0 1 … ]
P Entradas para entrenamientoT Salidas Deseadas
Un Vector de Entrada
Salida deseadapara esa Entrada
percep = newp(minmax(P), CantidadNeuronas);
Crea un Perceptrón simple (de una sola capa).
Ejemplo: Perceptrón Simple Tarea de Clasificación (2/3)
P Entradas para entrenamientoT Salidas Deseadaspercep = train(percep, P, T);
percep = adapt(percep, P, T);
Entrena el perceptrón en modo batch.
Entrena el perceptrón en modo on line (aunque depende del formato de P y T).
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.
Ejemplo: Perceptrón Simple Tarea de Clasificación (3/3)
sali = sim(percep, newP);
Consulta el perceptrón para conocer su salida dado el conjuntode entradas almacenado en newP.
newP = [1.877 1.443 1.314 1.211 …3.333 4.843 2.722 6.513 … ]
sali = [ 1 0 0 1 … ]
Un Vector de Entrada
Salida obtenidapara esa Entrada
3
Ejemplo: BackpropagationFunción lógica XOR
P = [0 1 0 10 0 1 1]
T = [0 1 1 0]
P Entradas para entrenamiento
T Salidas Deseadas
net = newff([0 1; 0 1],[2 1],{'logsig','logsig'});
Funciones de transferenciapara cada capa.
Crea una red feed forward.
Cantidad de neuronas en cada capa.
Valores Mínimos y Máximos para cada entrada(así se indica también la cantidad de entradas) .
net = train(net, P, T); salida = sim(net, P);
PREPARACIÓN DE LOS DATOS
La primera dimensión tiene una diferencia del 300 %.
DISTANCIA EUCLIDEANA ENTRE AMBOS:
x1 = [0.1 1000 50]x2 = [0.3 1100 51]
La segunda dimensión tiene una diferencia del 10 %.
La tercera dimensión tiene una diferencia del 2 %.
DISTANCIA = sqrt(sum((x1-x2).^2)) = 100.0052
¡¡ La diferencia del 10% enmascara las otras diferencias !!
DOS VECTORES DE DATOS:
PREPARACIÓN DE LOS DATOS
Supongamos que los rangos de las dimensiones son los siguientes:
Si cambiamos la escala de las variables, podemos pasar a todos los diferentes rangos al rango [-1, 1] mediante una función lineal.
rangos = [1 2000 1000 0 0]
Rangos [0, 1] [-1, +1][0, 2000] [-1, +1][0, 100] [-1, +1]
PREPARACIÓN DE LOS DATOS
La primera dimensión tiene una diferencia del 100 %.
DISTANCIA EUCLIDEANA ENTRE AMBOS:
x1 = [-0.8000 0 0]x2 = [-0.4000 0.1000 0.0200]
La segunda dimensión tiene una diferencia del 1 %.
La tercera dimensión tiene una diferencia del 0.02 %.
DISTANCIA = sqrt(sum((x1-x2).^2)) = 0.4128
¡¡ Ahora la mayor diferencia es la que da la distancia !!
LOS DOS VECTORES DE DATOS EN EL NUEVO RANGO:
PREPARACIÓN DE LOS DATOS
NORMALIZAR modificar los datos originales a través de transformaciones tales que queden en un rango específico.
[Pn, minp, maxp, Tn, mint, maxt] = premnmx(P, T);
NORMALIZACIÓN LINEAL AL RANGO [-1, +1]
Datos originales.Datos normalizados entre -1 y +1.
[PN] = tramnmx(P,minp,maxp);
APLICACIÓN DE UNA NORMALIZACIÓN LINEAL ANTERIOR
[P, T] = postmnmx(PN, minp, maxp, TN, mint, maxt);
DESNORMALIZACIÓN
PREPARACIÓNDE LOS DATOS
“ESTANDARIZACIÓN” DE LOS DATOSMEDIA = 0 y DESVIACIÓN STANDARD = 1
Datos originales.Datos “estandarizados”.
[PN] = trastd(P, meanp, stdp);
APLICACIÓN DE UNA ESTANDARIZACIÓN ANTERIOR
[P, T] = poststd(PN, meanp, stdp, TN, meant, stdt);
DES-ESTANDARIZACIÓN
[Pn, meanp, stdp, Tn, meant, stdt] = prestd(P, T)
4
Ejemplo: RECONOCIMIENTODE CARACTERES ESCRITOS
Contiene los días feriados o vacaciones de los años 1997 y 1998.
Holidays.xls
Temperaturas promedio de todos los días de los años 1997 y 1998.
Temperature199X.xls
Contiene los datos cada media hora de la demanda eléctrica durante todos los días de los años 1997 y 1998.
Load199X.xls
MEDICIÓN DEL ERROR COMETIDO
LPi – es el valor PREDICHO por la red de la máxima demanda eléctrica del día i del año 1999.
LRi – es el valor REAL de la máxima demanda eléctrica del día i del año 1999.
31
110031
i i
i i
LR LPLR
MAPE =
−
=∑
max( )i iM LR LP= −
Ejemplo: PREDICCIÓN DE LA DEMANDA ELÉCTRICA (1/4)
Ejemplo: PREDICCIÓN DE LA DEMANDA ELÉCTRICA (2/4)
Serie de TEMPERATURAS de los años 1997 y 1998 día por día
-15.0-10.0-5.00.05.0
10.015.020.025.030.0
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
Días del año 1998
Tem
pera
tura
[ºC
]
0
200
400
600
800
1000
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
Máx
ima
Dem
anda
re
gist
rada
[GW
att]
Serie de CONSUMOS registrados en los años 1997 y 1998 día por día
600
620
640
660
680
700
720
740
760
780
800
820
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 31Day
Max
load
[MW
]
ENERO 1999 – DATOS ORIGINALES REGISTRADOSÉSTOS SE PRETENDÍAN PREDECIR CON LA RED
Ejemplo: PREDICCIÓN DE LA DEMANDA ELÉCTRICA (3/4)
600
650
700
750
800
850
900
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31Day
MA
X [M
W]
Original Chih Jen Lin David Esp Brockman Werner A Javier Marin
ENERO 1999 – RESULTADOS OBTENIDOS CON DIVERSOS DISEÑOS DE REDES
Ejemplo: PREDICCIÓN DE LA DEMANDA ELÉCTRICA (4/4)