¿Por qué no funciona la propagación hacia atrás cuando inicializa los pesos con el mismo valor?

20

¿Por qué no funciona la propagación hacia atrás cuando inicializa todo el peso con el mismo valor (digamos 0.5), pero funciona bien cuando se le dan números aleatorios?

¿No debería el algoritmo calcular el error y trabajar desde allí, a pesar de que los pesos son inicialmente los mismos?

usuario1724140
fuente

Respuestas:

26

La simetría se rompe.

Si todos los pesos comienzan con valores iguales y si la solución requiere que se desarrollen pesos desiguales, el sistema nunca podrá aprender.

Esto se debe a que el error se propaga a través de los pesos en proporción a los valores de los pesos. Esto significa que todas las unidades ocultas conectadas directamente a las unidades de salida recibirán señales de error idénticas y, dado que los cambios de peso dependen de las señales de error, los pesos de esas unidades a las unidades de salida deben ser siempre los mismos. El sistema está comenzando en una especie de punto de equilibrio inestable que mantiene los pesos iguales, pero es más alto que algunos puntos vecinos en la superficie de error, y una vez que se aleja a uno de estos puntos, nunca volverá. Contrarrestamos este problema iniciando el sistema con pequeños pesos aleatorios. En estas condiciones, no surgen problemas de simetría de este tipo.

Esta
fuente
Entonces, ¿los pesos iniciales de un NN no solo determinan la velocidad a la que entrena, sino que también podrían ser la causa de aprender o no aprender?
user1724140
2
Sí, a veces, no solo entrenamos (una red neuronal, por ejemplo) en un solo conjunto de peso. Una cosa común que hacer, si tenemos tiempo, es crear varias configuraciones de peso de inicio diferentes y entrenar la red en él. Debido a que algunas veces, puede suceder que una configuración termine en un óptimo local o que el peso no se haya aleatorizado realmente.
Jueves
Esto no está mal, porque diferentes entradas aún pueden romper la simetría. ver: open.wolframcloud.com/env/…
user3180
12

Para agregar a la respuesta de Thierry, puede pensar en el error como una función del vector de peso, es decir, como una función de RnorteRque le gustaría minimizar El algoritmo de propagación hacia atrás funciona al observar un vecindario local de un punto y ver qué dirección conducirá a un error menor. Esto le dará un mínimo local.

Lo que quieres es un mínimo global, pero no tienes forma garantizada de encontrarlo. Y si su superficie tiene varios mínimos locales, entonces puede estar en problemas.

Pero si solo tiene unos pocos, la estrategia de Thierry debería funcionar: realizar múltiples búsquedas de mínimos locales comenzando en puntos seleccionados al azar debería aumentar las posibilidades de que encuentre el mínimo global.

Y en el feliz caso en el que solo hay un mínimo, cualquier vector de peso inicial lo llevará a él.

Rohit Chatterjee
fuente