¿Por qué es peligroso inicializar pesos con ceros? ¿Hay algún ejemplo simple que lo demuestre?
¿Por qué es peligroso inicializar pesos con ceros? ¿Hay algún ejemplo simple que lo demuestre?
Respuestas:
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.
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.
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.
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.
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
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.
Es una mala idea por 2 razones:
Demostremos esto (por simplicidad, supongo una capa de salida final de 1 neurona):
Point 2 can be shown from the fact that will be equal to zero's. Hence your vector will be full of zeros, and no learning can be achieved.