Multilayer perceptrons: Algoritmo de Backpropagation.

Existen muchas reglas de actualización que dependen del objetivo. La regla de Hebb ( que muchos libros mencionan) es useless en muchos casos. Vamos con otra regla (te queda investigar de donde proveiene :) ):

Donde m es el layer, alpha el aprendizaje, F la función de error (target-output )T*(target-ouput), i el número de la neurona y j el miembro del input de dimensión cualquiera.

Para hallar las derivadas parciales, usamos la regla de la cadena:

Donde ni es la sumatoria de wij*aj+b para j =1:dimensión del input (Todos los layers tienen la mimsa cantidad de neuronas que la dimensión del input inicial "S" (en el libro es P para toda estructura, en esta caso P =S))

La s se denomina sensibilidad de la neurona i en el layer m.

Lo que nos conlleva a expresar en estos nuevos términos:

En forma matricial para todas las neuronas agrupadas en cada layer:

Nota: a los s y a le deberían poder subíndices k para no confundir al lector, ya que se van actualizando conforme las iteraciones vayan aumentando. Además en este método todos los inputs y los targets se han presentado al comienzo.

La sensividad ya se expresó pero ahora en forma matricial:

Definamos la matriz jacobiana, de la sumatoria n en m con la sumatoria n en m+1, (esto se hace para aplicar la regla de la cadena en s)

Ahora para cada termino dela matriz:

Se hacen algunos arreglos correspondientes y hemos conseguido una nueva expresión para 11.33, nos da a entender que el cambio de n en m+1 con respecto a n em es igual a los pesos de la matriz de weigths en la capas subsiguiente y una nueva matriz convenientemente arreglada para que se cumpla 11.31donde la diagonal esta conformada por la derivada parcial de cada función de trasnferencia en la neurona i de la capa m.

Nota: No confundir f (la funciónde transferencia ) con f con sombrero en forma de flechita, el segundo es el error de la red en cada iteración.

Ahora s se puede escribir:

Estos es el semillero de la propagación reversa cada s de m depende del s de la capa m+1.

Debemos encontrar una expresión para s de la última capa y listo ya tendríamos todos los s de todas las capas anteriores. Thanks god for creating Matlab. You must avoid the manual calculus, Jesucrist !!!.

Lo hacemos así:

Hacemos una corrida al programa presentando todos los datos con W y b aleatorios (en verdad esto no es así, despúes vamos a ver cómo esto super falla), luego calculamos todo en la primera ronda, inclusive las derivadas parciales. It's why you have chosen differential functions anyway.

Todo esto está integrado en Matlab con una interfaz super amigable, así que esto es para tener una comprensión de cómo funciona esto. En el siguiente artículo publicaré aplicaciones: Clasificación y aproximación de funciones muldimensionales.

Temas