lunes, 14 de julio de 2008

Funcionamiento

De forma simplificada el funcionamiento de la red Backpropagation consiste en el aprendizaje de un conjunto definido de pares de entradas-salidas dados como ejemplo, empleando un ciclo de propagación-adaptación de dos fases:
Primero se aplica un patrón de entrada como estímulo para la primera capa de neuronas de la red, se va propagando a través de todas las capas superiores hasta generar una salida, se compara el resultado obtenido en las neuronas de salida con la salida que se desee obtener y se calcula un valor del error para cada neurona de salida. A continuación estos errores se transmiten hacia atrás, partiendo de la capa de salida, hacia todas las neuronas de la capa intermedia que contribuyeron directamente a la salida, recibiendo el porcentaje de error aproximado a la participación de la neurona intermedia en la salida original. Este proceso se repite capa por capa, hasta que todas las neuronas de la red hayan recibido un error que describa su aportación relativa al error total. Basándose en el valor de error recibido, se reajustan los pesos de conexión de cada neurona, de manera que en la siguiente vez que se presente el mismo patrón, la salida esté más cerca de la deseada; es decir, el error disminuya.

Aplicaciones

· Codificación de la información.
· Traducción de texto en lenguaje hablado.
· Compresión de datos.
· Inspección de calidad de pintura.
· Reconocimiento de lenguaje hablado.
· Reconocimiento óptico de caracteres (OCR)
·

En cardiología:
o Clasificación de señales electrocardiográficas.
o Detección de taquicardias ventriculares y supra ventriculares.
o Detección de complejos QRS anómalos.
o Reconocimiento de formas anormales en señales ECG (electrocardiográficas).
o Cancelación de ruido en señales ECG.

Historia

En 1986 Rumelhart, Hinton y Williams, desarrollaron un método que tenía por objetivo lograr que una red neuronal aprendiera la asociación que existe entre los patrones de entrada que ingresan a la misma y las clases correspondientes, utilizando más niveles de neuronas de los que empleó Rosenblatt en su Perceptrón. El método está basado en la generalización de la regla delta y logra ampliar considerablemente el rango de aplicación de las redes neuronales.
El primer algoritmo de entrenamiento para redes multicapa fue desarrollado por Paul Werbos en 1974, este se desarrolló en un contexto general, para cualquier tipo de redes, siendo las redes neuronales una aplicación especial, razón por la cual el algoritmo no fue aceptado dentro de la comunidad de desarrolladores de redes neuronales. Fue solo hasta mediados de los años 80 cuando el algoritmo Backpropagation o algoritmo de propagación inversa fue redescubierto al mismo tiempo por varios investigadores, David Rumelhart, Geoffrey Hinton y Ronal Williams, David Parker y Yann Le Cun. El algoritmo se popularizó cuando fue incluido en el libro "Parallel Distributed Processing Group" por los sicólogos David Rumelhart y James McClelland. La publicación de este libro trajo consigo un auge en las investigaciones con redes neuronales, siendo la Backpropagation una de las redes más ampliamente empleadas, aun en nuestros días.
Uno de los grandes avances logrados con la Backpropagation es que esta red aprovecha la naturaleza paralela de las redes neuronales para reducir el tiempo requerido por un procesador secuencial para determinar la correspondencia entre unos patrones dados. Además el tiempo de desarrollo de cualquier sistema que se este tratando de analizar se puede reducir como consecuencia de que la red puede aprender el algoritmo correcto sin que alguien tenga que deducir por anticipado el algoritmo en cuestión.
La mayoría de los sistemas actuales de cómputo se han diseñado para llevar a cabo funciones matemáticas y lógicas a una velocidad que resulta asombrosamente alta para el ser humano. Sin embargo la destreza matemática no es lo que se necesita para solucionar problemas de reconocimiento de patrones en entornos ruidosos, característica que incluso dentro de un espacio de entrada relativamente pequeño, puede llegar a consumir mucho tiempo. El problema es la naturaleza secuencial del propio computador; el ciclo tomar – ejecutar de la naturaleza Von Neumann solo permite que la máquina realice una operación a la vez. En la mayoría de los casos, el tiempo que necesita la máquina para llevar a cabo cada instrucción es tan breve (típicamente una millonésima de segundo) que el tiempo necesario para un programa, así sea muy grande, es insignificante para los usuarios. Sin embargo, para aquellas aplicaciones que deban explorar un gran espacio de entrada o que intentan correlacionar todas las permutaciones posibles de un conjunto de patrones muy complejo, el tiempo de computación necesario se hace bastante grande.

Backpropagation

Este blog es la continuacion del blog llamado Lo Basico sobre: Redes Neuronales, esperemos les sea de gran utilidad.
Backpropagation es el modelo de red neuronal más usado. Es un modelo de conexiones hacia delante (feedforward) que utiliza pares de vectores en las entradas y salidas con valor verdadero para entrenar a la red.
Además, es un algoritmo para entrenar o programar los pesos de una red neuronal con un número indeterminado de capas. Se caracteriza por la representación interna del conocimiento que es capaz de organizar en la capa intermedia de las células, para conseguir cualquier correspondencia entre la entrada y la salida de la red.
La importancia de la red consiste en su capacidad de autoadaptar los pesos de las neuronas de las capas intermedias para aprender la relación que existe entre un conjunto de patrones dados como ejemplo y sus salidas correspondientes. Después del entrenamiento, puede aplicar esta misma relación a nuevos vectores de entrada con ruido o incompletas, dando una salida activa si la nueva entrada es parecida a las presentadas durante el aprendizaje.
La capacidad de generalización es una característica importante que se exige a los sistemas de aprendizaje, se entiende como la facilidad de dar salidas satisfactorias a entradas que el sistema no ha visto nunca en su fase de entrenamiento y que puede aplicar a entradas no presentadas durante la etapa de aprendizaje, esto para clasificarlas según las características que compartan con los ejemplos de entrenamiento.
Las redes tipo Backpropagation tienen una gran versatilidad, debido a la naturaleza de su proceso de aprendizaje, que solamente necesita de dos ecuaciones para propagar las señales de error hacia atrás. Se elige entre una u otra ecuación dependiendo si la unidad de proceso es o no de salida.
El algoritmo Backpropagation puede entrenar redes multicapas feedforward, con funciones de transferencia diferenciables para ejecutar funciones de aproximación, asociación y clasificación de patrones. Pueden entrenarse también otros tipos de redes, aunque la red multicapa es la más comúnmente usada. El término Backpropagation se refiere al proceso por el cual pueden calcularse las derivadas de error de la red, con respecto a los pesos de la red. Este proceso puede usarse con varias estrategias de optimización diferentes.
Se han desarrollado numerosas variaciones de Backpropagation, con el propósito de mejorar la velocidad del proceso de entrenamiento.
A continuación se da una breve historia de este tipo de red, se muestran aplicaciones y lo más importante, el algoritmo de Backpropagation, el cual se describe paso a paso.