domingo, 7 de noviembre de 2010

Algoritmo Error Back Propagation

El algoritmo "Error back propagation" o simplemente BP, un algoritmo muy utilizado en el campo de la redes neuronales, es el algoritmo usado para entrenar una red MLP. Esto consiste en calcular, como en el caso del perceptron simple, el error cometido a la salida y asi corregir el error en la capa de salida.
Despues este error se debe propagar a la capa oculta: digamos que "cada elemento en la capa oculta tiene parte de responsabilidad en el error cometido a la salida de la red, por lo tanto se debe corregir este error".
Hay que tener en cuenta que la salida de todos los elementos de la capa oculta se conectan a la entrada de cada uno de los elementos de la cada de salida, por lo tanto el valor del error retropropagado para la capa oculta es la suma ponderada del error de los elementos de salida, multiplicado por su respectivo peso sinaptico.
Asi tenemos que el error en la salida es:



Y el error en la capa oculta es:



Donde Z es la salida de los elementos de la capa oculta.
Asi tenemos que la variacion de los pesos sinapticos de la salida y de la capa oculta es respectivamente:





Donde I es la entrada a los elementos de la capa oculta, ya que como dijimos antes, en la capa de entrada no se realiza proceso alguno.

De este modo y repitiendo el entrenamiento hasta reducir el error de salida a un valor minimo o en cualquier modo aceptable, se hace que el MLP aprenda a dar respuesta segun el modo en el que nosotros lo hemos entrenado.
Este es un tipo de entrenamiento supervisado, ya que ademas de dar un patron de ingresos para el entrenamiento, tambien se dan patrones de la salida que se espera de la red.
Como ultima cosa, solo decir que hay muchas variantes de este algoritmo, algunas de esas variantes se utilizaran en futuro, otras solo se citaran como referencia teorica.

2 comentarios:

  1. Hola está muy claro tu artículo, me vino muy bien gracias!. Quería hacerte una consulta, estoy estudiando el algoritmo de entrenamiento Back Propagation para implementarlo en lenguaje C y poder grabarlo en un microcontrolador PIC para que actúe como un MLP. Es viable implementarlo de esta manera o se requiere una capacidad de cómputo muy superior a la de un PIC? Desde ya muchas gracias. Juan

    ResponderEliminar
  2. Saludos.
    Disculpa que no te contesto en tiempo, por algun motivo no me llegan correos de los comentarios.
    Aun asi he tenido en cuenta tu pregunta ( buena pregunta por cierto ) y he escrito un nuevo articulo: http://sauruxum.blogspot.it/2012/10/redes-neuronales-mlp-en-un-pic-se-puede.html

    Muchos saludos.

    ResponderEliminar