sábado, 12 de mayo de 2012


Algoritmo de Entrenamiento Backpropagation



Sea la siguiente tabla de patrones:


x1x2s1s2
1001
0110


Y sea la siguiente arquitectura:



En donde:
x1 y x2: Entradas según la tabla de entrenamiento.
w1, w2, w3, w4, w5 y w6: Pesos de la capa de entrada.
w7, w8, w9, w10,w11 y w12: Pesos de la capa oculta.
y1 y y2: Acumuladores de la capa oculta.
s3 y s4: Salidas de la capa oculta.
y3, y4: Acumuladores de la capa de salida.
s1 y s2: Salidas de la red según la tabla de entrenamiento.
e1 y e2: Errores de la capa de salida
e3 y e4: Errores de la capa oculta


Antes de empezar, inicializamos todos los pesos con valores aleatorios:

Ciclo 1 - Patrón 1: 1 - 0 - 0 - 1

Paso 1: Calcular los acumuladores de la capa oculta:

y1 = w1*x1 + w4*x2 + w3
y2 = w2*x1 + w5*x2 + w6

Paso 2: Calcular las salidas de la capa oculta:

s3 = 1 / (1 + (base e)^(-y1))
s4 = 1 / (1 + (base e)^(-y1))

Paso 3: Calcular los acumuladores de la capa de salida:

y3 = s3 * w7 + s4 * w8 + w9
y4 = s3 * w10 + s4 * w11 + w12

Paso 4: Calcular las salidas de la red:

s1 = 1 / (1 + (base e)^(-y3))
s2 = 1 / (1 + (base e)^(-y4))

Paso 5: Calcular los errores de la capa de salida:

e1 = (s1 deseado - s1)(s1)(1 - s1) = (0 - s1)(s1)(1 - s1)
e2 = (s2 deseado - s2)(s2)(1 - s2) = (1 - s2)(s2)(1 - s2)

Paso 6: Calcular los errores de la capa oculta:

e3 = (s3)(1 - s3)(e1 * w7 + e1 * w10)
e4 = (s4)(1 - s4)(e2 * w8 + e2 * w11)

Paso 7: Con los errores de la capa de salida, ajustamos los pesos de la capa oculta:

w7nuevo = w7 + (e1 * s3)
w8nuevo = w8 + (e1 * s4)
w9nuevo = w9 + e1
w10nuevo = w10 + (e2 * s3)
w11nuevo = w11 + (e2 * s4)
w12uevo = w12 + e2

Paso 8: Con los errores de la capa oculta, ajustamos los pesos de la capa de entrada:

w1nuevo = w1 + (e3 * x1)
w2nuevo = w2 + (e4 * x1)
w3nuevo = w3 + e3
w4nuevo = w4 + (e3 * x2)
w5nuevo = w5 + (e4 * x2)
w6nuevo = w6 + e4

Ciclo 2 - Patrón 2: 0 - 1 - 1 - 0

En este ciclo, volvemos a repetir los ocho pasos anteriores; pero utilizando los pesos nuevos:

y también los nuevos valores de entradas (x1 y x2) y de salidas (s1 y s2). Al finalizar el ciclo 2 finaliza la primera época:
Calculamos los errores cuadráticos medios de la primera época:

Esalida1 = (1/2) * ((e1 del primer ciclo)^2 + (e1 del segundo ciclo)^2)
Esalida2 = (1/2) * ((e2 del primer ciclo)^2 + (e2 del segundo ciclo)^2)

En caso de que los errores no sean lo suficientemente aceptables (cercanos a 0), se inicia otra época utilizando siempre los últimos pesos que se tengan. Caso contrario, termina el entrenamiento y los pesos finales de la red serán los últimos que se encontraron.

No hay comentarios:

Publicar un comentario

Seguidores