ann

6
Universidad Cat´ olica de Temuco Ingenier´ ıa Civil Inform´ atica Trabajo pr´ actico 1 Backpropagation Rodrigo Bermedo Soto [email protected] 1. Introducci´ on En los a˜ nos 70s luego de identificar las limitaciones que poseen las redes neu- ronales de una capa, se gener´ o un declive en el inter´ es sobre este tema. Casi dos d´ ecadas despu´ es en 1986, Rumelhart, Hinton y Williams formalizaron un etodo para que una red neuronal “aprendiera” la relaci´ on que existe entre los patrones de entrada a la red[1] y las salidas correspondientes, utilizando m´ as niveles de neuronas que los que utiliz´ o Rosenblatt para desarrollar el percep- tron. Este m´ etodo consta de aplicar un patr´ on de entrada como est´ ımulo para la primera capa de neuronas de la red, este estimulo se va propagando a trav´ es de todas las capas superiores hasta generar una salida. Luego se compara el resul- tado obtenido en las neuronas de salida con la salida que se desea obtener y se calcula un valor de error para cada neurona de salida. Los errores generados se transmiten hacia atr´ as, partiendo de la capa de salida hacia todas las neuronas de la capa intermedia que contribuyan directamente en la salida, recibiendo el porcentaje de error aproximado a la participaci´ on de la neurona intermedia en la salida original. La importancia de este algoritmo consiste en su capacidad para adaptar los pesos de las neuronas de las capas intermedias para aprender la relaci´ on que existe entre un conjunto de patrones dados como entradas y sus salidas co- rrespondientes. Luego de que la red es capaz de entender la relaci´ on entre los datos de entrada y salida, puede usar esta relaci´ on para nuevos vectores de entrada con ruido o incompletos, generando una salida activa si los valores de entrada pertenecen a la misma funci´ on que los utilizados durante el aprendizaje. El algoritmo utiliza una superficie de error asociada a la red, buscando el estado de m´ ınimo error a trav´ es del camino descendente de la superficie del error como se observa en la figura 1. Este trabajo est´ a enfocado a entender y codificar un algoritmo Backpropagation para una red neuronal que posea una capa de entrada con tres neuronas, una capa intermedia u oculta con dos neuronas y por ultimo una capa de salida compuesta por una neurona. Se analizara su estructura, sus componentes y se propondr´ a una codificaci´ on utilizando el lenguaje Python, la cual ser´ a adjuntada a este informe. 1

Upload: rodrigo-bermedo

Post on 22-Sep-2015

220 views

Category:

Documents


6 download

DESCRIPTION

FeedFordward

TRANSCRIPT

  • Universidad Catolica de Temuco Ingeniera Civil Informatica

    Trabajo practico 1Backpropagation

    Rodrigo Bermedo [email protected]

    1. Introduccion

    En los anos 70s luego de identificar las limitaciones que poseen las redes neu-ronales de una capa, se genero un declive en el interes sobre este tema. Casidos decadas despues en 1986, Rumelhart, Hinton y Williams formalizaron unmetodo para que una red neuronal aprendiera la relacion que existe entre lospatrones de entrada a la red[1] y las salidas correspondientes, utilizando masniveles de neuronas que los que utilizo Rosenblatt para desarrollar el percep-tron. Este metodo consta de aplicar un patron de entrada como estmulo para laprimera capa de neuronas de la red, este estimulo se va propagando a traves detodas las capas superiores hasta generar una salida. Luego se compara el resul-tado obtenido en las neuronas de salida con la salida que se desea obtener y secalcula un valor de error para cada neurona de salida. Los errores generados setransmiten hacia atras, partiendo de la capa de salida hacia todas las neuronasde la capa intermedia que contribuyan directamente en la salida, recibiendo elporcentaje de error aproximado a la participacion de la neurona intermedia enla salida original.

    La importancia de este algoritmo consiste en su capacidad para adaptar lospesos de las neuronas de las capas intermedias para aprender la relacion queexiste entre un conjunto de patrones dados como entradas y sus salidas co-rrespondientes. Luego de que la red es capaz de entender la relacion entre losdatos de entrada y salida, puede usar esta relacion para nuevos vectores deentrada con ruido o incompletos, generando una salida activa si los valores deentrada pertenecen a la misma funcion que los utilizados durante el aprendizaje.

    El algoritmo utiliza una superficie de error asociada a la red, buscando el estadode mnimo error a traves del camino descendente de la superficie del error comose observa en la figura 1.

    Este trabajo esta enfocado a entender y codificar un algoritmo Backpropagationpara una red neuronal que posea una capa de entrada con tres neuronas, unacapa intermedia u oculta con dos neuronas y por ultimo una capa de salidacompuesta por una neurona. Se analizara su estructura, sus componentes y sepropondra una codificacion utilizando el lenguaje Python, la cual sera adjuntadaa este informe.

    1

  • Universidad Catolica de Temuco Ingeniera Civil Informatica

    Figura 1: Superficie de error.

    2. Desarrollo.

    2.1. Calculo Feedfordward

    Si consideramos una red neuronal artificial como la mostrada en la figura 2, conuna capa de entrada compuesta por tres neuronas, una capa oculta conformadapor dos neuronas y por ultimo una capa de salida con solamente una neurona,la salida para cada vector de entrada estara dada por la siguiente ecuacion:

    y = g(1 +

    2j=1

    jfi(j +

    3i=1

    jixi))

    Figura 2: Ejemplo red neuronal multicapa.

    2

  • Universidad Catolica de Temuco Ingeniera Civil Informatica

    Donde:

    {x1, x2, x3}: Vector de entrada.{11, 12, 21, ...}: Vector de pesos sinapticos capa Entrada - Oculta.{1, 2}: Vector de pesos sesgos capa Entrada - Ocultafi: Funcion de activacion neuronas capa oculta.

    0: Peso sesgo capa Oculta - Salida

    {1, 2}: Pesos sinapticos capa Oculta - Salidag: Funcion de activacion neuronas capa de salida.

    y: salida generada por la red.

    Si queremos resolver dicha ecuacion lo primero que debemos hacer es calcularlos valores para cada una de las neuronas en la capa oculta, lo cual segun laecuacion se realiza de la siguiente manera:

    1 = 1 + x111 + x221 + x3312 = 2 + x112 + x222 + x332

    Pero 1 y 2 no son los valores correspondientes a las neuronas de la capa oculta,aun falta aplicarles las funciones de activacion:

    h1 = f1(1)h2 = f2(2)

    Ahora que tenemos los valores correspondientes a las neuronas de la capa ocultapodemos proceder a calcular la salida de la red, esto se realiza de la siguientemanera:

    = 0 + h11 + h22

    Y aplicamos funcion de activacion:

    y = g()

    Con esto se obtiene una salida para la red neuronal, pero hasta este momentola red no ha aprendido nada, simplemente ha calculado una salida a partir deun vector de entrada y de pesos sinapticos aleatorios, ahora viene la parte masimportante que es el calculo del error, que permitira a la red ajustar sus pesossinapticos y de esta manera aprender la relacion que existe entre las entradasrecibidas y las salidas que entrega.

    2.2. Calculo de error.

    El primer paso para comenzar con el aprendizaje de la red neuronal es calcu-lar el error general, este error sera propagado hacia atras de la red comenzandodesde la capa de salida.

    = y y

    3

  • Universidad Catolica de Temuco Ingeniera Civil Informatica

    Donde:

    : Error general cometido por la red.

    y: Salida esperada de la red.

    Ahora comienza el proceso de propagacion hacia atras, se generan tantas pro-pagaciones como la cantidad de neuronas en la capa oculta.

    1 = 12 = 2

    Ahora se deben actualizar los pesos sinapticos de las capas Oculta Salida,estos valores se actualizan de la siguiente manera:

    1 = 1 + nh12 = 2 + nh2

    Donde:

    n: Tasa de aprendizaje definido para la red.

    Para el caso del sesgo de la capa Oculta Salida su actualizacion se realizarade la siguiente manera:

    0 = 0 + n

    En este punto ya tenemos la actualizacion de los pesos para las capas Oculta Salida, pero esto es solo la mitad del trabajo ahora falta actualizar los pesos delas capas Entrada Oculta:

    11 = 11 + n1f1(1)x1

    12 = 12 + n2f2(2)x1

    21 = 21 + n1f1(1)x2

    22 = 22 + n2f2(2)x2

    31 = 31 + n1f1(1)x3

    32 = 32 + n2f2(2)x3

    Donde:

    f i : Derivada de la funcion de activacion.

    Ahora solo queda el ultimo paso que es actualizar los pesos de los sesgos de lacapa Entrada Oculta esto se realiza de la siguiente manera:

    1 = 1 + n1f1(1)

    2 = 2 + n2f2(2)

    Con eso ya terminamos la actualizacion de los pesos, pero ese no es el final debidoa que el Backpropagation es un algoritmo iterativo, lo que quiere decir que habraque repetir este proceso hasta tener una respuesta cercana a la deseada.

    4

  • Universidad Catolica de Temuco Ingeniera Civil Informatica

    2.3. Algoritmo.

    Algoritmo para calcular el FeedFordward:

    entradas =[ ] #vec to r con va l o r e s de entradapesosEH =[ ] #matriz con pesos capa entrada ocu l t af i =[ ] #vec to r con va l o r e s de l a sumatoriab =[ ] #vec to r con pesos de l o s s e s go s capa entrada ocu l t adef feedForward ( ) :

    for x in range ( 0 , 2 ) :f i [ x]=b [ x , 0 ]for y in range ( 0 , 3 ) :

    f i [ x ] += pesosEH [ y , x ] entradas [ y ]for i in range ( 0 , 2 ) :

    #ap l i c a c i on de funcion de a c t i v a c i onh [ i ] = func ionAct ivac ion ( f i [ i ] )

    y=((h [ 0 ] pesosHS [ 0 , 0 ] ) + ( h [ 1 ] pesosHS [ 1 , 0 ] ) + a )y = func ionAct ivac ion ( y )

    Algoritmo para calcular el error:

    def e r r o r ( ) :e r r o r = yEsperado yfor i in range ( 0 , 2 ) :

    d e l t a . append ( e r r o r pesosHS [ i , 0 ] )#ac t u a l i z a c i o n de pesosfor x in range ( 0 , 3 ) :

    for y in range ( 0 , 2 ) :#ac t u a l i z a c i o n pesos capa entrada ocu l t apesosEH [ x , y]=pesosEH [ x , y]+n d e l t a [ y ] der ivada ( f i [ i ] ) entradas [ x ]

    for i in range ( 0 , 2 ) :#ac t u a l i z a c i o n se sgo s capa ocu l t a s a l i d ab [ i ]=b [ i ]+n d e l t a [ i ] der ivada ( f i [ i ] )#ac t u a l i z a c i o n pesos capa s a l i d a ocu l t apesosHS [ i ]=pesosHS [ i ]+n e r r o r h [ i ]

    a=a+n e r r o rAlgoritmo Backpropagation:

    whi l e ( y != yEsperado ) :feedFordward ( )e r r o r ( )

    5

  • Universidad Catolica de Temuco Ingeniera Civil Informatica

    3. Conclusiones.

    Con este trabajo se experimento con el algoritmo backpropagation, se explicosu funcionamiento, as como tambien los elementos que lo componen. Tambiense logro codificar utilizando el lenguaje Python, si bien quizas la codificacion deeste mismo no sea la mas optima, es un algoritmo funcional capaz de aprender.Se experimentaron ciertos problemas al momento de realizar la actividad sobretodo cuando se intento controlar la cantidad de iteraciones que realizara elalgoritmo, por motivos que aun desconozco la condicion y != yEsperado quecomparaba la salida esperada con la salida obtenida y en caso de que fueraniguales detendra el ciclo nunca funciono, a pesar de que estos valores luegode varias iteraciones efectivamente se igualaban, luego de mucho intentar y deprobar con diferentes condiciones de salida decid dejar una cantidad de ciclosarbitraria En fin ha sido una actividad bastante interesante creo que he logradoentender bastante bien el algoritmo lo cual me deja bastante satisfecho.

    Referencias

    [1] isbn = 13: 978-0133341867 title = Fundamentals of Neural Networks year= 1993 Fausett, Laurene.

    6