machine-learning - simple - redes neuronales pdf
¿Por qué deberían inicializarse los pesos de las Redes Neuronales a números aleatorios? (3)
La respuesta es bastante simple. Los algoritmos básicos de entrenamiento son codiciosos por naturaleza, no encuentran el óptimo global, sino la solución local "más cercana". Como resultado, a partir de cualquier inicialización fija sesga su solución hacia algún conjunto particular de pesos. Si lo haces al azar (y posiblemente muchas veces), entonces es mucho menos probable que te quedes atrapado en alguna parte extraña de la superficie de error.
El mismo argumento se aplica a otros algoritmos, que no pueden encontrar un óptimo global (k-means, EM, etc.) y no se aplica a las técnicas de optimización global (como el algoritmo SMO para SVM).
Estoy tratando de construir una red neuronal desde cero. En toda la literatura de AI existe consenso en que los pesos deben inicializarse en números aleatorios para que la red converja más rápido.
Pero, ¿por qué se inicializan las ponderaciones iniciales de las redes neuronales como números aleatorios?
Había leído en alguna parte que esto se hace para "romper la simetría" y esto hace que la red neuronal aprenda más rápido. ¿Cómo romper la simetría hace que aprenda más rápido?
¿No sería mejor idea inicializar los pesos a 0? De esa manera, los pesos podrían encontrar sus valores (ya sean positivos o negativos) más rápido?
¿Hay alguna otra filosofía subyacente detrás de aleatorizar los pesos además de esperar que estén cerca de sus valores óptimos cuando se inicialicen?
La ruptura de la simetría es esencial aquí, y no por la razón del rendimiento. Imagine las primeras 2 capas de perceptrón multicapa (capas de entrada y ocultas):
Durante la propagación directa, cada unidad en la capa oculta recibe señal:
Es decir, cada unidad oculta obtiene la suma de entradas multiplicada por el peso correspondiente.
Ahora imagine que inicializa todos los pesos con el mismo valor (por ejemplo, cero o uno). En este caso, cada unidad oculta obtendrá exactamente la misma señal . Por ejemplo, si todos los pesos se inicializan en 1, cada unidad recibe una señal igual a la suma de las entradas (y las salidas sigmoid(sum(inputs))
). Si todos los pesos son ceros, lo que es aún peor, cada unidad oculta obtendrá señal cero. No importa cuál fuera la entrada: si todos los pesos son iguales, todas las unidades en la capa oculta serán las mismas también .
Este es el problema principal con la simetría y la razón por la que debe inicializar los pesos aleatoriamente (o, al menos, con valores diferentes). Tenga en cuenta que este problema afecta a todas las arquitecturas que usan conexiones de uno a uno.
Analogía:
Espero que sea una buena analogía. Intenté explicarlo lo más simple posible.
Imagina que alguien te ha dejado caer desde un helicóptero a la cima de una montaña desconocida y estás atrapado allí. En todas partes está empañado. Lo único que sabes es que deberías llegar al nivel del mar de alguna manera. ¿Qué dirección deberías tomar para llegar al punto más bajo posible?
Si no podías encontrar la forma de llegar al nivel del mar, el helicóptero te tomaría de nuevo y te dejaría en la misma posición en la cima de la montaña. Tendría que volver a tomar las mismas direcciones porque se está " iniciando " en las mismas posiciones iniciales .
Sin embargo, cada vez que el helicóptero te deja en algún lugar al azar en la montaña, tomarías diferentes direcciones y pasos. Por lo tanto, habría una mejor oportunidad para llegar al punto más bajo posible.
Esto es lo que significa romper la simetría . La inicialización es asimétrica ( que es diferente ) por lo que puede encontrar diferentes soluciones para el mismo problema.
En esta analogía, donde aterrizas son los pesos . Entonces, con diferentes pesos, hay una mejor posibilidad de alcanzar el punto más bajo ( o más bajo ).
Además, aumenta la entropía en el sistema para que el sistema pueda crear más información que le ayude a encontrar los puntos más bajos ( mínimos locales o globales ).