La propagación hacia atrás de errores o retropropagación (del inglés backpropagation) es un algoritmo de aprendizaje supervisado que se usa para entrenar redes neuronales artificiales. El algoritmo emplea un ciclo propagación – adaptación de dos fases. Una vez que se ha aplicado un patrón a la entrada de la red como estímulo, este se propaga desde la primera capa a través de las capas superiores de la red, hasta generar una salida.
La señal de salida se compara con la salida deseada y se calcula una señal de error para cada una de las salidas. Las salidas de error se propagan hacia atrás, partiendo de la capa de salida, hacia todas las neuronas de la capa oculta que contribuyen directamente a la salida. Sin embargo las neuronas de la capa oculta solo reciben una fracción de la señal total del error, basándose aproximadamente en la contribución relativa que haya aportado cada neurona a la salida original. Este proceso se repite, capa por capa, hasta que todas las neuronas de la red hayan recibido una señal de error que describa su contribución relativa al error total. La importancia de este proceso consiste en que, a medida que se entrena la red, las neuronas de las capas intermedias se organizan a sí mismas de tal modo que las distintas neuronas aprenden a reconocer distintas características del espacio total de entrada. Después del entrenamiento, cuando se les presente un patrón arbitrario de entrada que contenga ruido o que esté incompleto, las neuronas de la capa oculta de la red responderán con una salida activa si la nueva entrada contiene un patrón que se asemeje a aquella característica que las neuronas individuales hayan aprendido a reconocer durante su entrenamiento.
Estructura del Perceptrón
El modelo de una neurona artificial es una imitación del proceso de una neurona biológicaDonde los
La salida de la neurona luego es modificada mediante la función de transferencia f:
Perceptrón Multicapa
Un Perceptrón multicapa es una red con alimentación hacia delante, compuesta de varias capas de neuronas entre la entrada y la salida de la misma, esta red permite establecer regiones de decisión mucho más complejas que las de dos semiplanos, como lo hace el Perceptrón de un solo nivel. Las capacidades del Perceptrón multicapa con dos y tres capas y con una única neurona en la capa de salida se muestran en la siguiente figura:Perceptrón simple, activándose su salida para los patrones de un lado del hiperplano, si el valor de los pesos de las conexiones entre las neuronas de la segunda capa y una neurona del nivel de salida son todos igual a 1, y la función de salida es de tipo hardlim, la salida de la red se activará sólo si las salidas de todos los nodos de la segunda capa están activos, esto equivale a ejecutar la función lógica AND en el nodo de salida, resultando una región de decisión intersección de todos los semiplanos formados en el nivel anterior. La región de decisión resultante de la intersección será una región convexa con un número de lados a lo sumo igual al número de neuronas de la segunda capa. A partir de este análisis surge el interrogante respecto a los criterios de selección para las neuronas de las capas ocultas de una red multicapa, este número en general debe ser lo suficientemente grande como para que se forme una región compleja que pueda resolver el problema, sin embargo no debe ser muy grande pues la estimación de los pesos puede ser no confiable para el conjunto de los patrones de entrada disponibles. Hasta el momento no hay un criterio establecido para determinar la configuración de la red y esto depende más bien de la experiencia del diseñador.
Estructura de la Red
Puede notarse que esta red de tres capas equivale a tener tres redes tipo Perceptrón en cascada; la salida de la primera red, es la entrada a la segunda y la salida de la segunda red es la entrada a la tercera. Cada capa puede tener diferente número de neuronas, e incluso distinta función de transferencia.
Regla de Aprendizaje
La red Backpropagation trabaja bajo aprendizaje supervisado y por tanto necesita un set de entrenamiento que le describa cada salida y su valor de salida esperado de la siguiente forma:Donde
q: Núm.de componentes del vector de entrada.
m: Número de neuronas de la capa oculta.
l: Número de neuronas de la capa de salida.
Para iniciar el entrenamiento se le presenta a la red un patrón de
entrenamiento, el cual tiene q componentes como se describe en la
ecuación (2):Cuando se le presenta a la red un patrón de entrenamiento, este se propaga a través de las conexiones existentes produciendo una entrada neta n en cada una las neuronas de la siguiente capa, la entrada neta a la neurona j de la siguiente capa debido a la presencia de un patrón de entrenamiento en la entrada está dada por la ecuación (3), nótese que la entrada neta es el valor justo antes de pasar por la función de transferencia:
:Peso que une la componente i de la entrada con la neurona j de la capa oculta.
:Componente i del vector p que conteiene el patrón de entrenamiento de q componentes.
:Ganancia de la neurona j de la capa oculta.
Donde (0) representa la capa a la que pertenece cada parámetro, es
este caso la capa oculta. Cada una de las neuronas de la capa oculta
tiene como salida
: Peso que une la neurona j de la capa oculta con la neurona k de la capa de salida, la cual cuenta con s neuronas.
: Salida de la neurona j de la capa oculta, la cual cuenta con m neuronas.
: Ganancia de la neurona k de la capa de salida.
: Entrada neta a la neurona k de la capa de salida.
La red produce una salida final: La salida de la red de cada neurona
El error debido a cada patrón p propagado está dado por:
Este proceso se repite para el número total de patrones de entrenamiento (r), para un proceso de aprendizaje exitoso el objetivo del algoritmo es actualizar todos los pesos y ganancias de la red minimizando el error cuadrático medio total descrito en:
debe tomarse la dirección negativa del gradiente para obtener el mayor decremento del error y de esta forma su minimización, condición requerida para realizar la actualización de la matriz de pesos en el algoritmo Backpropagation:
(Continua)
Minimización del Error
Los algoritmos en Aprendizaje Automático pueden ser clasificados en dos categorías: supervisados y no supervisados. Los algoritmos en aprendizaje supervisado son usados para construir "modelos" que generalmente predicen ciertos valores deseados. Para ello, los algoritmos supervisados requieren que se especifiquen los valores de salida (output) u objetivo (target) que se asocian a ciertos valores de entrada (input). Ejemplos de objetivos pueden ser valores que indican éxito/fallo, venta/no-venta, pérdida/ganancia, o bien ciertos atributos multi-clase como cierta gama de colores o las letras del alfabeto. El conocer los valores de salida deseados permite determinar la calidad de la aproximación del modelo obtenido por el algoritmo.La especificación de los valores entrada/salida se realiza con un conjunto consistente en pares de vectores con entradas reales de la forma
Si
donde
El error total es la suma de los errores de los ejemplos:
Un método general para minimizar el error es el actualizar los parámeros de manera iterativa. El valor nuevo de los parámetros se calcula al sumar un incremento
El algoritmo se detiene cuando
Si la función
donde
Antes de continuar introduciremos un poco de notación. Definimos
Red Neuronal con una Capa Oculta
La función la usaremos para aproximar los valores de salida de una red neuronal artificial con una capa oculta. La red está constituida por una capa de entrada (input layer), una capa oculta (hidden layer) y una capa de salida (output layer), tal como se ilustra con la siguiente figura:Los elementos que constituyen la red neuronal son los siguientes:
es una función de valores reales, conocida como la función de transferencia.
es la capa de entrada, considerado como el vector extendido del ejemplo
.
es la capa oculta, el vector extendido de
.
es la capa de salida, considerado como el vector que aproxima al valor deseado
.
es una matriz de tamaño
cuyos valores
son los pesos de la conexión entre las unidades
y
.
es una matriz de tamaño
cuyos valores
son los pesos de la conexión entre las unidades
y
.
La función de transferencia
esta función además de ser diferenciable, tiene la particularidad de que su derivada se puede expresar en términos de sí misma:
esto nos servirá para simplificar los cálculos en el algoritmo de aprendizaje aquí descrito.
Descripción del Algoritmo
A grandes rasgos:- Calcular la salida de la red
a partir de uno de los conjuntos de valores de prueba
.
- Comparar con la salida correcta
y calcular el error según la fórmula:
- Calcular las derivadas parciales del error con respecto a los pesos
que unen a la última capa oculta con la de salida.
- Calcular las derivadas parciales del error con respecto a los pesos
que unen la capa de entrada con la oculta.
- Ajustar los pesos de cada neurona para reducir el error.
- Repetir el proceso varias veces por cada par de entradas-salidas de prueba.