Practica #6
Fabricio Neira
Johnny Siguenza
1. TEMA: Redes Neuronales, Backpropagation.
2. OBJETIVO GENERAL:
Disear un algoritmo de aprendizaje de la red Backpropagation en matlab.
3. OBJETIVOS ESPECIFICOS:
Aprender el uso de los comandos para la creacin y entrenamiento de una red backpropagation en MATLAB.
Aplicar sobre un caso de reconocimiento de patrones
Aprender el uso de un simulador la creacin y entrenamiento de una red neuronal en matlab.
4. PROCESO
Elabore un conjunto de patrones que correspondan a las vocales, cada patrn ser una matriz de dimensiones 6x6. Realice varios patrones de cada letra introduciendo alguna diferencia
entre cada patrn.
Realice un programa para crear una red backpropagation que le permita reconocer los patrones creados. Establezca los parmetros que necesite, modifquelos hasta que la respuesta
de la red sea aceptable.
Realice un informe sobre lo realizado anteriormente y que explique los resultados de los cambios hechos en la red, indique si su efecto fue mejorar o empeorar el aprendizaje.
Segn los resultados escriba una conclusin sobre esta red.
5. MARCO TEORICO
LA RED BACKPROPAGATION
Esta red backpropagation (propagacin del error hacia atrs), consiste en el aprendizaje de un
conjunto predeterminado de entradas y salidas de la red .A partir de las neuronas de la capa de
entrada se van propagando los datos de las variables salida, para el resto de las neuronas y
conexiones en funcin de los pesos que inicialmente. Este algoritmo de aprendizaje, los pesos se
irn modificando hasta producir determinados salidas de la red . En el proceso de entrenamiento se
realiza simultneamente a la red patrones de datos entrada y la salida output, ya que cada valor de
entrada tiene su correspondiente valor de salida.
Aprendizaje de la Red Backpropagation
En una red Backpropagation existe capa de entrada r neuronas y una capa de salida con p neuronas
y al menos una capa oculta de neuronas intermedias como se ve en la figura 1. Cada neurona de
una capa recibe entradas de todas las neuronas de la capa anterior y enva a la salida a todas
las neuronas de la capa posterior .
La aplicacin del algoritmo tiene dos fases, que es una hacia delante y hacia atrs. La primera fase
el patrn de entrada es presentado a la red y propagado a travs de las capas hasta llegar a la capa
salida de la neurona y obtenidos los valores de la red a la salida de la red con esto , se inicia la
segunda fase, que es obtener los valores con la salida para lograr as el mnimo error. Se ajustan
los pesos de la ltima capa que es adecuadamente al error. Se pasa a la capa anterior con la
retropopagacin del error, y se ajustas los pesos y con este proceso puede llegar a la primera capa.
De manera que se a modificado los pesos de las conexiones de la red para cada patrn de entrada d
la red de aprendizaje del que se conoca su valor de entrada y la salida deseada que debera ser
generar la red ante del patrn de entrada.
Figura 1: Propagacin del error hacia atrs( backpropagation) [1]
6. DESARROLLO DE LA PRACTICA
Para este caso se realizo un programa en matlab utilizando los patrones de entrenamiento en este
caso son los de letras del alfabeto como se ve en la figura 2.
Figura 2: Reconocimiento de patrones de las letras vocales
Ya inicializamos los entradas y salidas de los patrones de entrenamiento el siguiente paso es
utilizar el comando newff
newff: Crea una red tipo Backpropagation, requiere que le sean especificados lossiguientes
parmetros
red=newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl})
PR : Rx2 Matriz de valores mximos y mnimos de cada uno de las R neuronas de entrada.
Si : Numero de neuronas para cada una de las capas.
TFi : Funcion de transferencia a utilizar en cada una de las capas, por defecto utiliza tansig,
purelin.
La estructura de para este caso para el reconocimiento de patrones de las letras vocales es el
siguientes comando:
net = newff(minmax(p),[10 10 20 1],{'logsig','tansig','tansig','purelin'});
%logsig
Una vez que se ha configurado el comando newff que la red neuronal que va entrenar a nuestros
patrones podemos manipular el numero de pocas el error que pretende llegar la red neuronal a la
salida. net.trainParam.show = 50;
net.trainParam.lr = 0.05; net.trainParam.epochs = 300; net.trainParam.goal = 1e-15;
Una en siguiente paso mandamos a entrenar la red con comando train cargando los valores de los
patrones de entrenamiento que son las entradas estos son 30 patrones y a la salida se obtendr una
vocales si la red neuronal entreno bien.
[net, tr] = train(net,p,t);
En el siguiente paso cargamos nuestra red un patrn de entrenamiento en este caso es de la letra A
0 0 1 1 1 1
0 0 0 0 0 1
0 0 1 0 0 1
0 1 1 1 1 1
0 0 1 0 0 1
0 0 1 0 0 1
Figura 3 Caracteres de entrenamiento
Se manda a graficar como se muestra en la figura 4 y obtenemos la siguiente grafica:
subplot(1,2,1)
image(pt.*255) colormap Winter
Figura 4: Carcter de la letra A que se mandara a entrenar
En el siguiente paso utilizamos el comando p=reshape(A, m, n) devuelve el m-por-n matriz B cuyos
elementos se toman de modo de columna de A. Se produce un error si no tiene m * n elementos.
Mandamos a similar la con el comando sim
pta = reshape(pt',36,[]); vocal = sim(net,pta*2-1)
Obtenemos los siguientes resultados como se muestra en la figura 5:
Figura 5 Resultados de la red neuronal reconocimiento de vocales
En la figura 5 se observar que la red neuronal consta de cuatro capas de con una neurona en la
primera capa, 10 neuronas en la segunda capa, 10 neuronas en la tercera capa 10 neuronas y 1 sola
neurona en la ltima capa que es la salida tambin se observar en que poca la red aprende, el
tiempo que demora en aprender y el valor del performance o tolerancia del error como podemos
observar en la siguiente figura 6 como el error cae rpidamente en la sptima iteracin.
Figura 6: El error de la red neuronal
Observamos tambin en la figura 7 gradientes que los mximos y minimos locales de la red neural
Figura 7 Rendimiento de la red
El resultado es el siguiente como observamos en la figura 8
En la primera figura son los patrones que se mando a entrenar a la red lo que se parece a una A
desplaza la red se encarga de entrenar ese patrones y se obtiene a la salida A perfecta.
Ahora modificamos el numero de neuronas de las capa de entrada la oculta y salida que mediante el
comando ya mencionado que se utilizo para entrenamiento de la red de reconocimiento de patrones:
net = newff(minmax(p),[5 10 5 1],{'logsig','tansig','tansig','purelin'});
Mandamos a entrenar a la red con esos parmetros que se muestra en el prrafo anterior y
obtenemos los siguientes resultados
Tenemos los siguientes resultados del error y del rendimiento de la red neuronal reconocimiento de
patrones:
En la figura anterior el error convergi rpidamente 0.1e15 en las 21 interacciones pero no reconoci
la letra desea como vemos en la figura 10.
Figura 10 Resultado de la Red
Como se ve la figura la red no aprendi por qu no sali la letra desea en este caso mandamos a
entrenar de nuevo a la red y tememos el siguiente resultado.
Cuando se mando entrenar por segunda vez a la red a 13 interacciones reconoci la letra con un error
de a como se ve en la siguiente figura.
El error decae rapidamiente a 7.14 e-14 rpidamente como se observa en la siguiente figura:
Para las dems letras son el mismo anlisis que se realizo para la letra A en este caso:
Reconocimiento de patrones en matlab
En el caso de la vocal o se demoro 537 iteraciones para saber que reconocer que es una O y su error
fue decayendo lentamente hasta casi llegar a al error deseado como se observa en la en la siguiente
figura
La letra I
Reconocimiento de patrones en matlab
La letra O
En el caso de la vocal o se demoro 122 iteraciones para saber que reconocer que es una O y su error
fue decayendo lentamente hasta casi llegar a al error deseado como se observa en la en la siguiente
figura.
La letra U
En el caso de la vocal o se demoro 45 iteraciones para saber que reconocer que es una u y su error
fue decayendo lentamente hasta casi llegar a al error deseado como se observa en la en la siguiente
figura.
7. CONCLUSIONES
En esta prctica se pudo hacer el algoritmo para el aprendizaje de patrones la cual utilizamos para el reconocimiento de las vocales mediante comandos especficos para
implementacin de redes backpropagation en matlab.
Existieron varios caracteres que no coincidieron con el entrenamiento se tuvo que aumentar patrones de entrenamiento para poder obtener el carcter deseado en esta red.
Cuando coincide el carcter el nmero de iteraciones son pocas y el error cae rpidamente hasta converger a cero.
Al utilizar los patrones que se utiliza para el entrenamiento de la red pero hay diferente patrones la red no reconoce ni aprende.
8. RECOMENDACIONES Para obtener mejor resultados es mejor trabajar con un numero mayor de patrones de
entrenamiento.
9. BIBLIOGRAFIA [1] Jos R. Hilera y Victor J. Martinez, Redes Neuronales Artificiales, Alfaomega-Rama, 2000 [2] S.Y. Kung, "Digital Neural Networks", Prentice Hall, 1993.
[3] E. Castillo Ron, . Cobo Ortega, J. M. Gutirrez Llorente, R. E. Pruneda Gonzlez,
Introduccin a la Redes Funcionales con Aplicaciones, Paraninfo, 1999 [4] J.A. Freeman y D.M. Skapura, "Redes Neuronales: Algoritmos, Aplicaciones y Tcnicas de
Programacin", Addison-Wesley, 1993.
[5] Bonifacio Martn y Alfredo Sanz, Redes Neuronales y Sistemas Difusos, Alfaomega-Rama, 2002
Top Related