Practica Patrones

download Practica Patrones

of 14

Transcript of Practica Patrones

  • Practica #6

    Fabricio Neira

    [email protected]

    Johnny Siguenza

    [email protected]

    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