Peligro de establecer todos los pesos iniciales a cero en Backpropagation

30

¿Por qué es peligroso inicializar pesos con ceros? ¿Hay algún ejemplo simple que lo demuestre?

usuario8078
fuente
Parece que la red clásica XOR 2-1 es un buen ejemplo, pero agradecería algún razonamiento teórico.
user8078
1
Una respuesta muy general, que puede o no ser aplicable aquí, es que siempre que los nuevos pesos sean múltiplos de los viejos, entonces los pesos cero no se pueden cambiar. Eso es fatal para el aprendizaje.
Nick Cox
Ya hay buenas respuestas disponibles para por qué no inicializar pesos a cero. El siguiente enlace arroja algo más de luz sobre '¿cómo se deben seleccionar los pesos iniciales? staff.itee.uq.edu.au/janetw/cmc/chapters/BackProp/index2.html Espero que ayude a otros lectores.
doer_uvc
@NickCox, los pesos aquí son múltiplos de la siguiente capa de pesos, y la última capa no es un múltiplo de ningún otro peso, por lo que esto no es aplicable aquí.
David Refaeli

Respuestas:

21

editar ver el comentario de alfa a continuación. No soy un experto en redes neuronales, así que voy a diferir de él.

Mi comprensión es diferente de las otras respuestas que se han publicado aquí.

Estoy bastante seguro de que la propagación hacia atrás implica agregar a los pesos existentes, no multiplicar. La cantidad que agrega está especificada por la regla delta . Tenga en cuenta que wij no aparece en el lado derecho de la ecuación.

Entiendo que hay al menos dos buenas razones para no establecer los pesos iniciales en cero:

  • Primero, las redes neuronales tienden a atascarse en los mínimos locales, por lo que es una buena idea darles muchos valores iniciales diferentes. No puedes hacer eso si todos comienzan en cero.

  • En segundo lugar, si las neuronas comienzan con los mismos pesos, entonces todas las neuronas seguirán el mismo gradiente y siempre terminarán haciendo lo mismo una con la otra.

David J. Harris
fuente
66
"La cantidad que agrega está especificada por la regla delta. Tenga en cuenta que wij no aparece en el lado derecho de la ecuación". - ¡Esto solo es cierto para redes neuronales sin capas ocultas! Pero mencionó otros dos puntos, que son buenos argumentos contra la inicialización de un ANN con igual peso.
alfa
1
Creo que es principalmente la segunda razón, por ejemplo, en una red básica totalmente conectada y con alimentación directa, si cada capa se inicializa con los mismos pesos, entonces, como sugiere, todos los nodos siguen el mismo camino y son redundantes. Mi impresión es que la mayoría de las redes con más de un puñado de características no tendrán problemas con los mínimos locales. Además, la inicialización aleatoria por sí sola no evita que la red se atasque, pero usar repetidamente diferentes inicializaciones aleatorias le indicará si una iteración en particular tuvo un problema mínimo local (creo que esto fue implícito, pero no explícito).
Tahlor
La segunda razón es falsa? open.wolframcloud.com/env/…
user3180
diferentes entradas rompen la simetría de peso
usuario3180
que añadir los derivados y los derivados de la multiplicación es utilizado a través regla de la cadena.
David Refaeli
7

Si pensabas en los pesos como anteriores, como en una red bayesiana, entonces descartaste cualquier posibilidad de que esas entradas pudieran afectar el sistema. Otra explicación es que la propagación hacia atrás identifica el conjunto de pesos que minimiza la diferencia al cuadrado ponderada entre el objetivo y los valores observados (E). Entonces, ¿cómo podría orientarse un algoritmo de descenso de gradiente en términos de determinar la dirección del sistema? Te estás colocando en un punto de silla del espacio de parámetros.

AdamO
fuente
1
Esta es la mejor respuesta. Es un punto de silla de montar. Los algoritmos de optimización basados ​​en retropropagación generalmente se detendrán de inmediato. Para calcular el gradiente, multiplicamos deltas con pesos y el resultado siempre será cero.
alfa
Creo que esta es una buena respuesta por la cual no se debe inicializar ningún peso en particular en 0. Pero los deltas probablemente aún se propagarán de nuevo: los pesos en la capa de salida no dependen de los pesos, por lo que aquí tendremos pesos distintos de cero Después de la primera actualización. Después de la próxima actualización, estos pesos distintos de cero se utilizarán con un delta para ajustar los pesos de la capa anterior, etc. Creo que el mayor problema con la inicialización de una red con todos los 0 es que todos tienen el mismo peso, lo que en su red básica totalmente conectada y de avance es equivalente a tener 1 nodo por capa.
Tahlor
6

En cada iteración de su algoritmo de retropropagación, actualizará los pesos multiplicando el peso existente por un delta determinado por la retropropagación. Si el valor de peso inicial es 0, multiplicarlo por cualquier valor para delta no cambiará el peso, lo que significa que cada iteración no tiene efecto en los pesos que está tratando de optimizar.

Idr
fuente
2
> actualizará los pesos multiplicando el peso existente por un valor determinado por la retropropagación; no lo creo, no se trata solo de multiplicación.
user8078
1
Mi punto general es que si los pesos iniciales son cero, permanecerán en cero después de cada iteración de propagación hacia atrás.
Idr
El "valor determinado por la propagación hacia atrás" es un delta (véase, por ejemplo, el documento original "Representaciones de aprendizaje mediante errores de propagación hacia atrás", ecuación 7). La respuesta está mal redactada pero no está completamente equivocada.
alfa
1
Esta es solo una respuesta incorrecta. Los pesos cambiarán, pero cambiarán juntos. Esto es malo porque todas las unidades ocultas serán idénticas durante el entrenamiento y no puede ocurrir ningún aprendizaje.
Amin Sammara
θ(0)=0.5
2

Me parece que una de las razones por las que es malo inicializar pesos a los mismos valores (no solo cero) es porque, para cualquier capa oculta en particular, todos los nodos en esta capa tendrían exactamente las mismas entradas y, por lo tanto, permanecerían igual que cada uno otro.

Austin
fuente
1

La respuesta a esto no es del todo "Mínimos / máximos locales".

Cuando tiene más de 1 capa oculta y cada peso es 0, no importa cuán grande / pequeño sea un cambio en Weight_i no causará un cambio en la salida.

Esto se debe a que el delta Weight_i será absorbido por la próxima capa oculta.

Cuando no hay cambio en la Salida, no hay gradiente y, por lo tanto, no hay dirección.

Esto comparte los mismos rasgos que un mínimo local / máximo, pero en realidad se debe a los 0, que es técnicamente diferente

Tan Eugene
fuente
0

El problema principal con la inicialización de todos los pesos a cero matemáticamente lleva a que los valores de las neuronas sean cero (para múltiples capas) o que el delta sea cero. En uno de los comentarios de @alfa en las respuestas anteriores ya se proporciona una pista, se menciona que el producto de los pesos y delta debe ser cero. Esto significaría esencialmente que para el descenso del gradiente, esto está en la cima de la colina justo en su pico y no puede romper la simetría. La aleatoriedad romperá esta simetría y uno alcanzaría el mínimo local. Incluso si perturbáramos un poco el peso, estaríamos en la pista. Referencia: Aprendiendo de los datos Lectura 10.

rahulkmishra
fuente
0

Es una mala idea por 2 razones:

  1. g(0)0

  2. tanhg(0)=0

Demostremos esto (por simplicidad, supongo una capa de salida final de 1 neurona):

tanh

LaLzL=WLaL1WL

dWL:=LWL=LaLaLzLzLWL
La is the derivative of the cost function, az is the derivative of the activation function. Regardless of what their (Laaz) value is, zW simply equals to the previous layer outputs, i.e. to aL1, but since they are all the same, you get that the final result dWL is a vector with all element equal. So, when you'll update WL=WLαdWL it will move in the same direction. And the same goes for the previous layers.

Point 2 can be shown from the fact that aL1 will be equal to zero's. Hence your dWL vector will be full of zeros, and no learning can be achieved.

David Refaeli
fuente