PREDICCIN DE COMPORTAMIENTOS A TRAVES DE REDES
NEURONALES EN MATLAB.
MSc. Laureano E. Surez Matnez1
1. Universidad de Matanzas Camilo Cienfuegos, Va
Blanca Km.3, Matanzas, Cuba.
Resumen.
La obtencin de funciones de pronstico que puedan emplearse como criterio de
decisin, constituye en muchos casos el objetivo fundamental en tareas investigativas de
numerosos disciplinas de la ciencia y la tcnica. El empleo de las redes neuronales
artificiales con este objetivo ha sido utilizado con xito aprovechando los avances de la
computacin e informtica, en este estudio se muestra un acercamiento a este novedoso
tema con recomendaciones reunidas de la literatura especializada, as como el desarrollo
de un ejemplo ilustrativo utilizando para ello el software MatLab R2010a
Palabras claves: Redes neuronales artificiales; MatLab; Pronstico.
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
1.- Introduccin
Las Redes Neuronales Artificiales (RNA) son sistemas de procesamiento de la
informacin cuya estructura y funcionamiento original estuvo inspirado en el sistema
nervioso biolgico. Consisten en un gran nmero de elementos simples de
procesamiento llamados nodos o neuronas que estn conectados entre s y organizados
en capas [Kumar, 2008].
Cada neurona o nodo es un elemento simple que recibe de una fuente externa una o
varias entradas sobre las que se aplica una funcin f de las sumas ponderadas mediante
los pesos w asociados y que se van modificando en el proceso de aprendizaje (ecuacin
1,1). En los pesos se encuentra el conocimiento que tiene la RNA acerca del problema
analizado.
(1,1)
El paralelismo de clculo, la memoria distribuida y la adaptabilidad al entorno, han
convertido a las RNA en potentes instrumentos con capacidad para aprender relaciones
entre variables sin necesidad de imponer presupuestos o restricciones de partida en los
datos.
En el presente documento, nos proponemos realizar un discreto acercamiento a los
conceptos bsicos utilizados en el campo de las redes neuronales artificiales adems de
la descripcin del funcionamiento de una red perceptrn multicapa entrenada mediante
la regla de aprendizaje backpropagation utilizando como herramienta el software
MATLAB R2010a
2.- El perceptrn multicapa
Entre los diversos modelos que existen de RNA el ms utilizado como aproximador
universal de funciones resulta el perceptrn multicapa asociado al algoritmo de
aprendizaje backpropagation error (propagacin del error hacia atrs), tambin
denominado mtodo de gradiente decreciente [Casacuberta, 2012].
Este tipo de red exhibe la capacidad de aprender la relacin entre un conjunto de
entradas y salidas a travs del ajuste de los pesos de manera iterativa en la etapa de
aprendizaje y posteriormente aplica esta relacin a nuevos vectores de entrada que el
sistema no ha visto nunca en su etapa de entrenamiento dando una salida activa si la
nueva entrada es parecida a las presentadas durante el aprendizaje.
Esta capacidad de generalizacin convierte a las redes perceptrn multicapa en
herramientas de propsito general, flexibles y no lineales.
2.1.- Arquitectura tpica.
Un perceptrn multicapa est compuesto por una capa de entrada, una de salida y una o
ms capas ocultas; en la figura 1.1 podemos observar una red de este tipo. Para
identificar la estructura de una red multicapa se utiliza la notacin R:S1:S2 donde el
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
nmero de entradas (R) va seguido por el nmero de neuronas en cada capa (S) y el
exponente indica la capa a la cual la neurona corresponde.
En esta disposicin, los elementos del vector de entrada P estn conectados solo hacia
delante sin que exista retroalimentacin por lo que comnmente se les clasifica en el
grupo de redes con arquitectura feedforward. Las entradas se vinculan a travs de la
matriz de pesos (W) a cada una de las neuronas donde se transforman en una suma
ponderada con valores limitados por los biases (b) o umbrales de la neurona, el cual
puede verse como un nmero que indica a partir de que valor de potencial postsinptico
la neurona produce una salida significativa [Marcano, 2010], este trmino es aadido a
la suma ponderada para formar el vector modificado [n] de S elementos (uno por cada
neurona) de la red , los que finamente son afectados por la funcin de activacin para
formar el vector columna de las salidas [a]; si existe ms de una capa estas salidas se
pueden convertir en entradas de la prxima sobre las que se repite nuevamente el
proceso. La relacin matemtica que describe el proceso anterior para el ordenamiento
de la figura 1.1 queda expresada en la ecuacin 2,1.
Figura 1.1. Representacin de una RNA de una capa con S neuronas alimentada por un
simple vector de entrada p formado por R elementos.
(2,1)
2.2.- Algoritmo backpropagation.
El algoritmo backpropagation o de retroalimentacin debe su nombre a la forma en que
se propagan los errores a travs de la red para la actualizacin del valor de los pesos en
cada iteracin haciendo uso del mtodo del gradiente decreciente hasta encontrar el
valor deseado en la etapa de entrenamiento, de manera que coincida la salida de la red
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
con la salida esperada por el usuario ante la presentacin de un determinado patrn. Por
este motivo, se dice que el aprendizaje en las redes que emplean este esquema es de tipo
supervisado.
La funcin de error que se pretende minimizar viene dado por la ecuacin 2.2
(2,2)
Aqu dps representa la salida deseada en la neurona s ante la presentacin de la entrada
p y aps es valor obtenido a la salida para el mismo patrn y Ep2 es el error cuadrtico
medio para cada patrn de entrada. A partir de 2.2 se puede obtener una medida general
del error en el proceso de aprendizaje en una iteracin (ecuacin 2.3)
(2,3)
Teniendo en cuenta que Ep2 es funcin de los pesos de la red (ecuacin 2,1 y 2,2)
podemos expresar el gradiente decreciente del error (w) como la derivada parcial de
Ep2 respecto a cada uno de los pesos de la red con signo negativo para garantizar su
decremento (ecuacin 2,4)
(2,4)
A nivel prctico, la forma de modificar los pesos de manera iterativa consiste en aplicar
la regla de la cadena a la ecuacin del gradiente (debido a que el error no es una funcin
implcita de los pesos) y aadir una tasa de aprendizaje y un factor momento
(ecuacin 2,5).
(2,5)
dnde:
representa el error de los pesos en la capa j afectada por la funcin de activacin a
la salida del nodo j (ecuacin 2,6) y xpi es el valor i que tiene el patrn de entrada p.
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
(2,6)
aqu:
Epj error de los pesos en la capa j
f(netpj) funcin de activacin a la salida de la neurona.
El uso de estos coeficientes adems de procurar optimizar el proceso de convergencia se
debe a que la superficie del error puede contener mnimos locales y si el algoritmo no
est bien implementado los resultados pueden ser desacertados. La tasa de aprendizaje
() decide el tamao del cambio de los pesos en cada iteracin: un valor de
demasiado pequeo puede ocasionar una disminucin importante en la velocidad de
convergencia y la posibilidad de acabar atrapado en un mnimo local por el contrario un
ritmo de aprendizaje demasiado grande puede conducir a inestabilidades en la
convergencia debido a que se darn saltos en torno al mnimo sin poder alcanzarlo. Por
ello, se recomienda elegir el valor de la tasa de aprendizaje entre 0.05 y 0.5. Por su parte
el valor del momento () ajusta la velocidad de descenso por la superficie del error
teniendo en cuenta el signo que toma el incremento de un peso en la iteracin anterior,
para el que se recomienda utilizar un valor cercano a 1
Existe un cierto nmero de variaciones en el algoritmo bsico las cuales estn
fundamentadas en otras tcnicas de optimizacin, y que pueden hacer converger el valor
de los pesos hasta 100 veces ms rpido tales como el gradiente conjugado
(TRAINCGF), el Levenberg-Marquardt (TRAINLM) o el mtodo quasi-Newton
(TRAINBFG) entre otros todas ellas implementadas en MatLab R2010a.
2.3. Consideraciones generales para la correcta aplicacin de un perceptrn
multicapa.
Con la red perceptrn multicapa, del tipo backpropagation, se puede aproximar
cualquier funcin si se escoge una adecuada configuracin y una cantidad apropiada de
neuronas en la capa oculta, aunque se ha demostrado que para la mayora de problemas
bastar con una sola capa oculta. Este tipo de red, a pesar de ser una excelente
aproximador de funciones [Cortina Januch, 2012], tiene como desventaja, la
imposibilidad de determinar su configuracin exacta para cada aplicacin, y en cada
caso deben ser probados diferentes ordenamientos hasta encontrar la respuesta deseada.
Por esta razn no es aconsejable su uso en relaciones lineales, pues su costo
computacional o de implementacin no se justifica en comportamientos entre variables
sobre las que se sospecha o destaca una linealidad declarada. [Wu et al, 2001] y pueden
fcilmente ser reveladas a travs de tcnicas estadsticas tradicionales.
2.3.1. Seleccin de las variables de entrada
Como en cualquier otro mtodo de aproximacin de funciones debe procurarse que las
variables de entrada sean linealmente independientes para lo que puede emplearse la
tcnica de descomposicin de valores singulares, luego de obtener el rango de una
matriz a partir de sus valores singulares [Velilla, 2009] o utilizar el mtodo ms
laborioso de ensayo y error que consiste en entrenar la red con todas las variables e ir
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
eliminando una variable de entrada cada vez y reentrenar la red. La variable cuya
eliminacin causa el menor decremento en la ejecucin de la red es eliminada. Este
procedimiento se repite sucesivamente hasta que llegados a un punto, la eliminacin de
ms variables implica una disminucin sensible en la ejecucin del modelo [Palmer,
2001].
2.3.2. Cantidad de neuronas.
Aunque no existe una tcnica para determinar el nmero de neuronas que debe contener
cada problema especfico, esto puede encontrarse a partir de la cantidad de parmetros o
pesos a estimar, [W. Sha, 2004] segn la relacin 2.7, procurando que tal cifra no supere
la cuanta de datos disponibles para el entrenamiento, pues, matemticamente quedara
indeterminado el sistema:
(2,7)
Aqu:
Nparam es el nmero de parmetros a estimar
Ni es la cantidad de vectores de entrada.
Nh1 nmero de neuronas en la primera capa
Nh2 nmero de neuronas en la segunda capa.
Un efecto directo del uso de neuronas en cantidades excesivas se manifiesta en la
incapacidad de generalizacin de la red por el fenmeno de sobreajuste, pues la cantidad
de pesos resultar superior al nmero de incgnitas del problema en cuestin y al
nmero de entradas disponibles. En ese estado a la red le ser difcil proporcionar una
respuesta correcta ante patrones que no han sido empleados en su entrenamiento y que
tengan su mismo comportamiento.
2.3.3. Funcin de activacin
Para aprovechar la capacidad de las RNA de aprender relaciones complejas o no
lineales entre variables, es absolutamente imprescindible la utilizacin de funciones no
lineales al menos en las neuronas de la capa oculta [Noriega, 2005], en general se
utilizar la funcin sigmoidal logstica cuando las variables de salida solo puedan tomar
valores positivos dentro de un rango que va desde 0 a 1 o la funcin tangente
hiperblica cuando se le permite a la funcin oscilar entre valores positivos y negativos,
en el rango de -1 a 1, mientras que en las neuronas de la capa de salida en tareas de
prediccin o aproximacin de una funcin, generalmente emplean la funcin de
activacin lineal, las que reproducen exactamente el valor resultante despus de la
sumatoria en la neurona (Figura 1.2).
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
Figura 1.2. Representacin de las distintas funciones de activacin utilizadas en redes
neuronales para tareas de prediccin
2.3.4. Eleccin del valor inicial de los pesos.
En la etapa de entrenamiento el valor de los pesos en la capa de entrada (IW) y en las
capas ocultas (LW) puede ser asignado manualmente si se tiene algn conocimiento
previo del compromiso o importancia de las variables que intervienen en el fenmeno
estudiado, en caso contrario es recomendable asignar estos de manera aleatoria, en un
rango de valores entre -0.5 y 0.5 o algo similar y dejar que el programa ajuste sus
valores automticamente.
2.4. Validacin o generalizacin de la red.
Con el objetivo de verificar la capacidad de generalizacin de la red es conveniente
disponer de un grupo de los datos independientes de las variables de entrada que no se
hayan utilizados en la fase de entrenamiento, y una vez que se obtenga el modelo cuya
configuracin de parmetros arroje los mejores resultados, estos debern ser
suministrados a la red y observar el comportamiento de los errores de estimacin; en la
literatura cientfica el parmetro ms comnmente utilizado con este propsito es el
error cuadrtico medio que viene dado por la expresin 2,8.
(2,8)
De forma similar para verificar la inexistencia de sobreajuste en la red se puede realizar
la comprobacin de la normalidad de los errores en la fase de entrenamiento y de
validacin adems de probar la igualdad de las medias de ambas muestras con las
pruebas Kolmogorov-Smirnov (KS) o Chi cuadrado (2)
2.5. Interpretacin de los pesos.
La relacin entre los coeficientes de ajuste (pesos) de cada variable predictora sobre la
salida del modelo puede ser probada a travs del anlisis de sensibilidad empleando
procedimientos numricos, como la obtencin de la matriz jacobiana [Urquizo, 2011;
Rivals, 2004].
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
En la matriz Jacobiana S de orden KxI--, cada fila representa una salida de la red y
cada columna representa una entrada, de forma que el elemento Ski de la matriz
representa la sensibilidad de la salida k respecto a la entrada i. Cada uno de los
elementos Ski se obtiene calculando la derivada parcial de una salida yk respecto a una
entrada xi, esto es:
As, cuanto mayor sea el valor de Ski, ms importante es xi en relacin a yk. El signo de
Ski nos indicar si la relacin entre ambas variables es directa o inversa.
2.6. Ejemplo de aplicacin.
En MatLab R2010a existen varias formas de utilizar el toolbox de redes neuronales
artificiales:
A travs de la lnea de comandos para crear una red neuronal artificial personalizada.
A travs de un asistente que carga la interfaz grfica para utilizar las RNA en el
agrupamiento de datos con el comando nctool
El uso del asistente para usar las RNA en el reconocimiento de patrones con el
comando nprtool
Utilizando la Interfaz grfica de usuario para ajuste de funciones linealmente
separables a partir de RNA de una sola capa que aparece al teclear en la ventana de
comandos la orden nftool
Usando la Interfaz grfica de usuario para la implementacin de RNAs de tipo
general que aparece al teclear el comando nntool
Con el objetivo de poner en prctica las ideas sealadas con anterioridad utilizaremos la
primera de las opciones es decir usaremos lnea de comandos para editar directamente
las propiedades de la red.
Descripcin del problema:
Con fines demostrativos procederemos a ajustar un modelo de RNA a los datos de la
tabla 1.1 en la que aparecen en las columnas 1 y 2 los valores de las variables
independientes y la ltima columna contiene la variable dependiente. Para desarrollar la
estrategia que sealamos anteriormente utilizaremos los 14 primeros valores (70%) de
la tabla en la etapa de entrenamiento y ajuste del modelo y en la etapa de validacin y
generalizacin emplearemos los restantes.
No.
1
2
3
4
P
Var1
107,1
113,5
112,7
114,7
Var2
113,5
112,7
114,7
123,4
T
Var3
112,7
114,7
123,4
123,6
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
123,4
123,6
116,3
118,5
119,8
120,3
127,4
125,1
127,6
129,0
124,6
134,1
146,5
171,2
178,6
172,2
123,6
116,3
118,5
119,8
120,3
127,4
125,1
127,6
129,0
124,6
134,1
146,5
171,2
178,6
172,2
171,5
116,3
118,5
119,8
120,3
127,4
125,1
127,6
129,0
124,6
134,1
146,5
171,2
178,6
172,2
171,5
163,6
El ajuste estadstico por regresin lineal arroja el modelo que aparece en la ecuacin 2.9
con los estadgrafos que se aparecen a continuacin entre los que destaca el ndice de
determinacin (R2) de 50% a pesar del comportamiento aproximadamente lineal que
revela el grfico de dispersin de las variables que se muestra en la figura 1.3.
(2,9)
R2= 50,1171 %
R2 (ajustado) = 39,032 %
Error estndar de los estimados. = 4,16702
Error medio absoluto = 2,73018
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
Figura 1.3. Grfico de dispersin de las variables bajo estudio.
Comenzaremos por reservar un espacio de memoria en la que ubicaremos el objeto tipo
red neuronal (neural network), tecleando en la ventana de comandos
net=network;
A continuacin debemos introducir los datos, para lo que agruparemos los valores de las
variables 1 y 2 en el vector X y para la variable 3 utilizaremos el vector T como se
muestra a continuacin (puede utilizar los comandos copiar y pegar si no desea teclear
los valores en la ventana de MatLab).
X=[107.1 113.5 112.7 114.7 123.4 123.6 116.3 118.5 119.8 120.3 127.4 125.1 127.6
129.0 124.6 134.1 146.5 171.2 178.6 172.2; 113.5 112.7 114.7 123.4 123.6 116.3 118.5
119.8 120.3 127.4 125.1 127.6 129.0 124.6 134.1 146.5 171.2 178.6 172.2 171.5];
T=[112.7 114.7 123.4 123.6 116.3 118.5 119.8 120.3 127.4 125.1 127.6 129.0 124.6
134.1 146.5 171.2 178.6 172.2 171.5 163.6];
Para decidir sobre la arquitectura de la red notemos que se dispone de 40 valores en la
variable X (que almacena las dos variables de entrada), y precisamos una salida,
Probaremos entonces con una red perceptrn de 1 entrada y dos capas, con 7 neuronas
en la capa oculta y 1 en la capa de salida lo que segn la notacin establecida
anteriormente queda 1:7:1 y que ser entrenada con los valores almacenados en la
variable P hasta aproximar la salida T; para crear esta configuracin el comando de
MatLab es:
net=newff(X,T,7);
Si utilizamos la ecuacin 2,7 para verificar la posibilidad de sobre ajuste en la
configuracin seleccionada, resulta un total de 24 parmetros, valor que no rebasa la
cantidad de pesos a estimar (2,10).
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
(2,10)
Para definir el nmero de vectores de entrada tecleamos:
net.numInputs = 1;
La prxima propiedad ser el nmero de capas que faltan las que decidimos establecer
una para la capa oculta (con 5 neuronas) y otra para la capa de salida con una neurona.
net.numLayers = 2;
net.layers{1}.size = 7;
net.layers{2}.size = 1;
Conectando las capas
Al realizar la conexin entre capas debemos comenzar por decidir a que capa estn
conectados los valores de entrada, normalmente esto ser con la primera capa y la
conexin la realizamos poniendo a 1 la propiedad net.inputConnect(i,j) que representa
una conexin en la ith capa de la jth entrada. Para conectar la primera entrada a la
primera capa tecleamos:
net.inputConnect(1,1) = 1;
La conexin entre el resto de las capas quedar definida por la matriz de conectividad
llamada net.layerConnect (i,j), la cual toma valores 0 o 1 como elementos de entrada.
Si el elemento (i,j) es 1, entonces la salida de la capa j estar conectada a la entrada de
la capa i as para conectar la salida de la capa 1 a la entrada de la capa 2 ponemos:
net.layerConnect(2, 1) = 1;
Y por ltimo nos queda definir cul es la capa de salida poniendo la propiedad
net.outputConnect(i) a 1 para la capa i de salida en nuestro caso la capa 2 y a 0 para el
resto de las capas que no se conectan a ella.
net.outputConnect(1) = 0;
net.outputConnect(2) = 1;
Funciones de activacin
Cada capa tiene su propia funcin de transferencia la cual se establece por defecto pero
puede ser modificada a travs de la propiedad net.layers{i}.transferFcn. Asi para
establecer en la primera capa la funcin de activacin sigmoidal tangente y en la
segunda capa la funcin lineal (figura 1.2) usamos
net.layers{1}.transferFcn = 'tansig';
net.layers{2}.transferFcn = 'purelin';
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
En este punto estamos en condiciones de observar la topografa de nuestra red neuronal
personalizada la cual debe coincidir con la que aparee en la Figura 1,4 donde se muestra
el vector de entrada (Input) la capa oculta, la capa de salida y el vector de salidas
(output), para obtener este grfico teclee en la ventana de comandos
view(net)
Figura 1,4. Estructura de la red neuronal personalizada.
Tambin podemos verificar las propiedades asociadas a las capas que hemos creado,
para ello observe en la respuesta que aparece los parmetros de inters al teclear:
net.layers{1}
ans =
dimensions: 7
name: 'Hidden Layer'
transferFcn: 'tansig'
Igualmente para la capa 2
net.layers{2}
ans =
dimensions: 1
name: 'Output Layer'
transferFcn: 'purelin'
Pesos y biases
Para definir que capa de neuronas tiene biases pondremos net.biasConnect a 1, donde
net.biasConnect(i) = 1 significa que la capa i tiene biases establecidos.
net.biasConnect(1) = 1;
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
net.biasConnect(2) = 1;
Tambin podemos definirlos a travs de una sola lnea de cdigo:
net.biasConnect = [ 1 ; 1];
Debemos decidir un procedimiento para inicializar los pesos y biases, a menos que se
tenga una rutina personalizada es suficiente establecer la funcin de inicializacin que
trae el programa por defecto, para lo que ser suficiente teclear:
net.initFcn = 'initlay';
Pondremos la funcin de control a mse (cuadrado medio del error) y como funcin de
entrenamiento para acelerar el proceso de convergencia a trainlm (algoritmo LevenbergMarquardt backpropagation) tecleando:
net.performFcn = 'mse';
y
net.trainFcn = 'trainlm';
y por ltimo modificaremos la funcin dividerand la cual divide los datos de
entrenamiento de forma aleatoria desde divideParam con un 70% de los datos para el
entrenamiento (trainRatio), y un 15% para validacin(valRatio) y prueba (testRatio)
adems de establecer la funcin de grficos plotFcns para observar el estado de
convergencia durante el entrenamiento con los comandos que aparecen a continuacin:
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;
net.plotFcns = {'plotperform','plottrainstate'};
ahora inicializamos la red para que los pesos y biases tomen un valor de inicio, con el
cdigo:
net = init(net);
ahora podemos ver los valores que toman los pesos al inicializar la red en la capa de
entrada (pesosEntrada) y de la capa oculta a la capa de salida (pesosCapa) as como los
biases de cada neurona en las capas oculta y de salida con los comandos:
pesosEntrada=net.IW{1,1}
pesosCapa=net.LW{2,1}
bias_capa_oculta=net.b{1}
bias_capa_salida=net.b{2}
Entrenamiento de la red
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
Antes de entrenar la red debemos normalizar sus valores para que se encuentren en el
intervalo de -1 a 1 (recuerde que las funciones de activacin se encuentran acotadas) a
travs de la funcin mapminmax que asume los valores de cada celda como nmeros
reales finitos y con al menos uno de ellos diferente de los dems (ecuacin 2,10), y en el
caso que se repitiesen estos son eliminados del grupo pues no aportan informacin
adicional a la red para su entrenamiento con la orden removeconstantrows:
(2.10)
Para normalizar empleamos el cdigo:
net.inputs{1}.processFcns = {'removeconstantrows','mapminmax'};
Establecemos adems el nmero de iteraciones (.epochs) a 50, la tasa de aprendizaje
(.lr) a 0.06 y el factor momento (.mc) a 0.9 [epgrafe 2.2] a travs de:
net.trainParam.epochs=50;
net.trainParam.lr=0.06;
net.trainParam.mc=0.9;
Y luego entrenamos la red con:
[net,tr] = train(net,X,T);
Por ultimo simulamos la red entrenada con los valores de validacin y prueba con el
comando:
Y = sim(net,X);
Y recogemos las salidas grficas al teclear [Hahn, 2007]:
plot(Y,'o')
hold
plot(T,'*')
legend('valores estimados','salidas deseadas','Location','NorthWest')
Estos commandos muestran graficamente la ubicacin de los valores estimados y las
salidas deseadas que sean producidas por la red como aparece en la figura 1,5 (nota: sus
resultados pueden diferir ligeramente de acuerdo con el valor de los pesos calculados)
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
Figura 1,5. Grfico de los valores estimados y deseados donde se nota el buen acuerdo
entre ellos, las desviaciones que se notan se deben al efecto de la aleatoriedad.
plotperform(tr),
Este comando muestra grficamente el funcionamiento de la red en las etapas de
entrenamiento, validacin y prueba, as como el mejor resultado durante estas fases
como se muestra en la figura 1,6
Figura 1,6. Funcionamiento de la red en las etapas de entrenamiento validacin y prueba
Y para observar el ajuste entre los valores estimados y predichos tecleamos
plotregression(Y,T)
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
Figura 1,7. Valores estimados vs predichos.
Un valor de utilidad para el anlisis del funcionamiento de la red lo constituye el error
cuadrado medio el cual puede ser calculado a travs de los comandos:
d=(Y-T).^2;
mse=mean(d)
Como ltimo elemento de inters resulta el valor que toman los pesos de entrada y de
capa as como los biases una vez realizado el ajuste de la red que se encuentran
almacenados en las variables:
pesosEntrada=net.IW{1,1}
pesosCapa=net.LW{2,1}
net.b{1}
net.b{2}
Proponemos al lector que luego de realizar este ejemplo modifique la arquitectura de la
red, esto es el nmero de neuronas en la capa oculta (net.layers{1}.size) as como el
nmero de iteraciones (net.trainParam.epochs), los valores de la taza de aprendizaje
(net.trainParam.lr) y el coeficiente momento (net.trainParam.mc) para que observe la
variacin que se refleja en el error cuadrado medio y en los pesos de entrada y de capa.
Conclusiones:
Muchas de las opciones establecidas manualmente en el ejemplo desarrollado son
valores que toma la red por defecto como son las funciones de inicializacin o de
entrenamiento, sin embargo el investigador con frecuencia necesitar modificar estas
para alcanzar un mejor desempeo de la RNA es por ello que han sido escogidas para
mostrar en el ejercicio.
El uso de las redes neuronales artificiales se ha extendido a numerosos campos de la
ciencia y la tcnica para pronosticar funciones y en el reconocimiento de patrones entre
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
otras aplicaciones de inters permitiendo una elevada exactitud con gran rapidez de
clculo hacindose insustituibles en el caso de comportamientos altamente no lineales.
Aun cuando el factor subjetivo constituye un elevado por ciento en su implementacin
esta novedosa herramienta ha demostrado su utilidad al ser manejada por profesionales
competentes.
Por este motivo el acercamiento inicial a las RNAs en MatLab que se propone en este
texto intenta principalmente motivar su estudio y familiarizar a todos los interesados
con esta herramienta.
Bibliografa:
1. Casacuberta Nolla, F. "Redes Neuronales. Multilayer perceptrn". ETSINF, 2012
2. Cortina Januch, M.G. "Aplicacin de tcnicas de inteligencia artificial a la
prediccin de contaminantes atmosfricos". Tesis doctoral, Universidad Politcnica
de Madrid, 2012.
3. Hahn, B, D. Valentine, D,T. Essential MatLab for Engineer and Scientists. Third
Edition. 2007. Published by Elsevier Ltd. ISBN 13: 9-78-0-75-068417-0
4. Kumar,G.Buchheit, R.G. ."Use of Artifi cial Neural Network Modelsvto Predict
Coated Component Life from Short-Term Electrochemical Impedance
Spectroscopy Measurements".2008. Corrosin, Vol.64, No.3.ISSN 00109312/08P000045. NACE International
5. Marcano Cedeo, Alexis E.,Un modelo neuronal basado en la metaplasticidad para
la clasificacin de objetos en seales 1-D y 2-D. Tesis Doctoral, Universidad
Politcnica de Madrid, 2010.
6. Noriega, L. "Multilayer Perceptron Tutorial". School of Computing, Staffordshire
University. Beaconside Staffordshire, ST18 0DG UK. 2005.
7. Palmer, A., Montao, J.J. y Jimnez, R. Tutorial sobre redes neuronales artificiales:
El Perceptrn Multicapa. REVISTA ELECTRNICA DE PSICOLOGA Vol. 5,
No. 2, Julio 2001 ISSN 1137-8492.
8. R.H. Wu, J.T. Liu, H.B. Chang, T.Y. Hsu, X.Y. Ruan, Prediction of the flow stress
of 0.4C1.9Cr1.5Mn1.0Ni0.2Mo steel during hot deformation, J. Mater.
Process. Technol. 116 (2001) 211.
9. Rivals, I., Personnaz L. Jacobian conditioning analysis for model validation.
Neural Computation. Vol. 16 No. 2, pp. 401-418. February 2004.
10. Urquizo Rojas, D., Mendivil Gmez, F. Aplicacin de Redes Neuronales
Artificiales para el Anlisis de la Inflacin en Bolivia. 4to. Encuentro de
Economistas de Bolivia. p. 20. Julio 2011
11. Velilla, E., Villada F. Echeverra F. "Modelos de prdida de masa de acero por
corrosin atmosfrica en Colombia usando inteligencia computacional". Rev. Fac.
Ing. Univ. Antioquia No. 49. pp. 81-87. Septiembre, 2009
12. W. Sha. Comment on Modeling of tribological properties of alumina fiber
reinforced zincaluminum composites using artificial neural network by K. Genel
et al. [Mater. Sci. Eng. A 363 (2003) 203] , Materials Science and Engineering A
372 (2004) 334335
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
Anexos:
Comandos utilizados para la implementacin de la RNA en el ejercicio desarrollado:
X=[107.1 113.5 112.7 114.7 123.4 123.6 116.3 118.5 119.8 120.3 127.4 125.1 127.6
129.0 124.6 134.1 146.5 171.2 178.6 172.2; 113.5 112.7 114.7 123.4 123.6 116.3 118.5
119.8 120.3 127.4 125.1 127.6 129.0 124.6 134.1 146.5 171.2 178.6 172.2 171.5];
T=[112.7 114.7 123.4 123.6 116.3 118.5 119.8 120.3 127.4 125.1 127.6 129.0 124.6
134.1 146.5 171.2 178.6 172.2 171.5 163.6];
net=newff(X,T,7);
net.numInputs = 1;
net.numLayers = 2;
net.layers{1}.size = 7;
net.layers{2}.size = 1;
net.inputConnect(1,1) = 1;
net.layerConnect(2,1) = 1;
net.outputConnect(1) = 0;
net.outputConnect(2) = 1;
net.layers{1}.transferFcn = 'tansig';
net.layers{2}.transferFcn = 'purelin';
net.biasConnect(1) = 1;
net.biasConnect(2) = 1;
net.initFcn = 'initlay';
net.performFcn = 'mse';
net.trainFcn = 'trainlm';
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;
net.plotFcns = {'plotperform','plottrainstate'};
net.inputs{1}.processFcns = {'removeconstantrows','mapminmax'};
net = init(net);
pesosEntrada=net.IW{1,1}
pesosCapa=net.LW{2,1}
bias_capa_oculta=net.b{1}
bias_capa_salida=net.b{2}
net.trainParam.epochs=50;
net.trainParam.lr=0.06;
net.trainParam.mc=0.9;
[net,tr] = train(net,X,T);
Y = sim(net,X);
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos
plot(Y,'o')
hold
plot(T,'*')
legend('valores estimados','salidas deseadas','Location','NorthWest')
plotperform(tr)
plotregression(Y,T)
d=(Y-T).^2;
mse=mean(d)
pesosEntrada=net.IW{1,1}
pesosCapa=net.LW{2,1}
bias_capa_oculta=net.b{1}
bias_capa_salida=net.b{2}
CD de Monografas 2012
(c) 2012, Universidad de Matanzas Camilo Cienfuegos