Introducción
Paso uno
Escribí una red neuronal de propagación hacia atrás estándar, y para probarla, decidí que mapeara XOR.
Es una red 2-2-1 (con función de activación de tanh)
X1 M1
O1
X2 M2
B1 B2
Para fines de prueba, configuré manualmente la neurona media superior (M1) para que sea una puerta AND y la neurona inferior (M2) para que sea una puerta OR (ambas salidas 1 si es verdadera y -1 si es falsa).
Ahora, también configuré manualmente la conexión M1-O1 para que sea -.5, M2-O1 para que sea 1 y B2 para que sea -.75
Entonces, si M1 = 1 y M2 = 1, la suma es (-0.5 +1 -0.75 = -.25) tanh (0.25) = -0.24
si M1 = -1 y M2 = 1, la suma es ((-0.5) * (- 1) +1 -0.75 = .75) tanh (0.75) = 0.63
si M1 = -1 y M2 = -1, la suma es ((-0.5) * (- 1) -1 -0.75 = -1.25) tanh (1.25) = -0.8
Este es un resultado relativamente bueno para una "primera iteración".
Segundo paso
Luego procedí a modificar estos pesos un poco y luego los entrené usando el algoritmo de propagación de errores (basado en el descenso del gradiente). En esta etapa, dejo intactos los pesos entre las neuronas de entrada y media, y simplemente modifico los pesos entre el medio (y el sesgo) y la salida.
Para las pruebas, configuré los pesos para ser y .5 .4 .3 (respectivamente para M1, M2 y sesgo)
Aquí, sin embargo, empiezo a tener problemas.
Mi pregunta
Establecí mi tasa de aprendizaje en .2 y dejé que el programa iterara a través de los datos de entrenamiento (ABA ^ B) durante 10000 iteraciones o más.
La mayoría de las veces, los pesos convergen a un buen resultado. Sin embargo, a veces, esos pesos convergen a (digamos) 1.5, 5.7 y .9, lo que resulta en una salida +1 (par) a una entrada de {1, 1} (cuando el resultado debería ser un -1).
¿Es posible que un ANN relativamente simple que tiene una solución no converja en absoluto o hay un error en mi implementación?
fuente
Si ha arreglado los pesos entre las unidades de entrada y ocultas y solo está modificando los pesos ocultos a los de salida durante el entrenamiento, entonces no habrá mínimos locales. Con la entrada fija a pesos ocultos, el problema de optimización que está resolviendo es similar a la regresión logística pero con una función tanh en lugar de sigmoide. Independientemente de que el problema es convexo y debe haber solo un mínimo global.
Dado que los mínimos locales no están causando su problema, recomendaría aproximar numéricamente sus derivados y luego compararlos con los valores que está calculando. Si no está seguro de cómo hacer esto, el tutorial ULFDL de Standford tiene una buena descripción general.
fuente