¿Por qué deberían inicializarse los pesos de las redes neuronales en números aleatorios? [cerrado]


105

Estoy tratando de construir una red neuronal desde cero. En toda la literatura sobre IA existe un consenso de que las ponderaciones deben inicializarse en números aleatorios para que la red converja más rápido.

Pero, ¿por qué los pesos iniciales de las redes neuronales se inicializan 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 una 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?

¿Existe alguna otra filosofía subyacente detrás de la aleatorización de los pesos además de esperar que estén cerca de sus valores óptimos cuando se inicialicen?


8
Esto parece una mejor opción para Cross Validated .
Sycorax

2
Voy a votar para cerrar esta pregunta porque no se trata de la programación como se define en el centro de ayuda, sino de la teoría y metodología general del ML.
desertnaut hace

Respuestas:


140

Romper la simetría es esencial aquí, y no por motivos de rendimiento. Imagine las primeras 2 capas de perceptrón multicapa (capas de entrada y capas ocultas):

ingrese la descripción de la imagen aquí

Durante la propagación hacia adelante, cada unidad en la capa oculta recibe señal:

ingrese la descripción de la imagen aquí

Es decir, cada unidad oculta obtiene la suma de las 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 recibirá exactamente la misma señal . Por ejemplo, si todos los pesos se inicializan a 1, cada unidad obtiene una señal igual a la suma de entradas (y salidas sigmoid(sum(inputs))). Si todos los pesos son ceros, lo que es aún peor, todas las unidades ocultas obtendrán señal cero. No importa cuál fue la entrada: si todos los pesos son iguales, todas las unidades en la capa oculta también serán iguales .

Este es el principal problema con la simetría y la razón por la que debe inicializar los pesos de forma aleatoria (o, al menos, con valores diferentes). Tenga en cuenta que este problema afecta a todas las arquitecturas que utilizan conexiones de cada uno.


1
Gran explicación. Pero, ¿por qué usar la palabra symmetryno correlation? ¿Quién usó la palabra primero?
nn0p

1
@ nn0p: la correlación implica que 2 señales cambian en una dirección similar, pero no siempre y no con exactamente la misma magnitud. Al menos hasta donde yo sé, la simetría no tiene una definición formal y se usa aquí para representar exactamente las mismas señales en todos los enlaces entre nodos, lo que hace que el entrenamiento sea inútil.
ffriend

@ffriend que en caso de que usemos deserción, la aleatorización no es más necesaria. ¿Me equivoco?
Emanuele

1
@emanuele Dropout es en sí mismo una especie de aleatorización, así que sí, debería funcionar. Sin embargo, todas las conexiones que no se "abandonan" en cada iteración, seguirán obteniendo una actualización simétrica, por lo que supongo que el aprendizaje será bastante lento y, por lo tanto, recomiendo utilizar la inicialización aleatoria en cualquier red práctica.
ffriend

Esto explica bien el avance propulsor, pero ¿qué pasa con el retropropulsor?
zell

74

Analogía:

Espero que sea una buena analogía. Intenté explicarlo de la manera 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í. Todo está empañado. Lo único que sabes es que deberías llegar al nivel del mar de alguna manera. ¿Qué dirección debes tomar para llegar al punto más bajo posible?

Si no pudieras encontrar un camino al nivel del mar, el helicóptero te llevaría de nuevo y te dejaría en la misma posición en la cima de la montaña. Tendría que tomar las mismas direcciones nuevamente porque se está "inicializando" en las mismas posiciones iniciales .

Sin embargo, cada vez que el helicóptero te dejara en algún lugar aleatorio de la montaña, tomarías diferentes direcciones y pasos. Por lo tanto, habría una mejor oportunidad de llegar al punto más bajo posible.

Esto es lo que se quiere decir con romper la simetría . La inicialización es asimétrica ( que es diferente ), por lo que puede encontrar diferentes soluciones al mismo problema.

En esta analogía, donde aterrizas son los pesos . Entonces, con diferentes pesos, hay más posibilidades de llegar al 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 para ayudarlo a encontrar los puntos más bajos ( mínimos locales o globales ).

ingrese la descripción de la imagen aquí


10
Parece que el helicóptero lo deja caer en algún lugar aleatorio de la montaña varias veces, sin embargo, en el aprendizaje profundo, solo inicializamos los pesos al azar solo una vez.
YuFeng Shen

1
Esta es una explicación intuitiva real. También debemos tener en cuenta que los NN casi nunca son convexos, por lo que la aleatorización es la forma ideal de hacerlo, pero si tiene una función de pérdida convexa, entonces, por supuesto, no importa en qué inicialice sus pesos.
Kingz

4
Es una buena analogía, pero tiene más sentido suponer que usted y sus amigos van a caer en la montaña (es decir, nodos en una red), ya sea en el mismo lugar o en diferentes personas en diferentes lugares. Y suponga que todos pueden comunicarse entre sí. Diferentes puntos con comunicación permitirán un descenso más rápido. El mismo lugar significa que es probable que todos sigan el mismo camino.
ahmedhosny

26

La respuesta es bastante simple. Los algoritmos de entrenamiento básico son de naturaleza codiciosa - no encuentran el óptimo global, sino más bien - la solución local "más cercana". Como resultado, comenzar desde cualquier inicialización fija predispone su solución hacia un conjunto particular de pesos. Si lo hace al azar (y posiblemente muchas veces), es mucho menos probable que se quede atascado en alguna parte extraña de la superficie del error.

El mismo argumento se aplica a otros algoritmos, que no pueden encontrar un óptimo global (k-medias, EM, etc.) y no se aplica a las técnicas de optimización global (como el algoritmo SMO para SVM).


Entonces, ¿no está garantizado que no se atasque en los mínimos locales simplemente por aleatorizar? Pero, después de varias ejecuciones con diferentes pesos aleatorios, ¿podría obtener el mínimo global?
Shayan RC

1
No hay garantía, pero múltiples inicializaciones pueden ayudar al menos a acercarse al verdadero óptimo.
lejlot

¿Existe alguna fórmula o regla estándar para establecer el valor para inicializar los pesos? Tengo una red neuronal de retropropagación, multicapa y retroalimentación, donde se usa la función sigmoidea.
lkkkk

Hay una regla empírica en el libro de S. Haykin "redes neuronales"
lejlot

3
Esta no es la razón por la que la gente usa la inicialización aleatoria, ya que la mayoría de la gente no reinicia el entrenamiento muchas veces con diferentes inicializaciones aleatorias y la red aún puede llegar a un buen óptimo local.
cesarsalgado

4

Como mencionaste, el punto clave es romper la simetría . Porque si inicializa todos los pesos a cero, entonces todas las neuronas (unidades) ocultas en su red neuronal harán exactamente los mismos cálculos. Esto no es algo que deseamos porque queremos diferentes unidades ocultas para calcular diferentes funciones. Sin embargo, esto no es posible si inicializa todos con el mismo valor.


2
  1. ¿No sería una 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?

  2. ¿Cómo romper la simetría hace que aprenda más rápido?

Si inicializa todos los pesos para que sean cero, entonces todas las neuronas de todas las capas realizan el mismo cálculo, dando el mismo resultado y haciendo que toda la red profunda sea inútil . Si los pesos son cero, la complejidad de toda la red profunda sería la misma que la de una sola neurona y las predicciones no serían mejores que aleatorias.

Los nodos que están uno al lado del otro en una capa oculta conectados a las mismas entradas deben tener diferentes pesos para que el algoritmo de aprendizaje actualice los pesos.

Al hacer que los pesos sean distintos de cero (pero cercanos a 0 como 0.1, etc.), el algoritmo aprenderá los pesos en las próximas iteraciones y no se bloqueará. De esta forma se produce la ruptura de la simetría.

  1. ¿Existe alguna otra filosofía subyacente detrás de la aleatorización de los pesos además de esperar que estén cerca de sus valores óptimos cuando se inicialicen?

Los algoritmos de optimización estocástica, como el descenso de gradiente estocástico, utilizan la aleatoriedad para seleccionar un punto de partida para la búsqueda y en la progresión de la búsqueda.

La progresión de la búsqueda o el aprendizaje de una red neuronal se conoce como convergencia. Descubrir una solución subóptima o un resultado óptimo local conduce a una convergencia prematura.

En lugar de depender de un óptimo local, si ejecuta su algoritmo varias veces con diferentes pesos aleatorios, existe la mejor posibilidad de encontrar óptimos globales sin quedarse atascado en los óptimos locales.

Después de 2015, debido a los avances en la investigación del aprendizaje automático, se introduce He-et-al Initializatio n para reemplazar la inicialización aleatoria

w=np.random.randn(layer_size[l],layer_size[l-1])*np.sqrt(2/layer_size[l-1])

Los pesos siguen siendo aleatorios, pero difieren en el rango según el tamaño de la capa anterior de neuronas.

En resumen, los pesos aleatorios distintos de cero nos ayudan

  1. Sal de los óptimos locales
  2. Rompiendo la simetría
  3. Alcance óptimos globales en nuevas iteraciones

1

Además de la inicialización con valores aleatorios, los pesos iniciales no deben comenzar con valores grandes. Esto se debe a que a menudo usamos las funciones tanh y sigmoide en capas ocultas y capas de salida. Si observa las gráficas de las dos funciones, después de la propagación hacia adelante en la primera iteración, se obtienen valores más altos, y estos valores corresponden a los lugares en las funciones sigmoidea y tanh que convergen la derivada a cero. Esto conduce a un inicio en frío del proceso de aprendizaje y a un aumento del tiempo de aprendizaje. Como resultado, si comienza los pesos al azar, puede evitar estos problemas multiplicando estos valores por valores como "0.01" o "0.001".


1

En primer lugar, algunos algoritmos convergen incluso con ponderaciones iniciales cero. Un ejemplo sencillo es una red de perceptrón lineal. Por supuesto, muchas redes de aprendizaje requieren una ponderación inicial aleatoria (aunque esto no es garantía de obtener la mejor y más rápida respuesta).

Las redes neuronales utilizan la retropropagación para aprender y actualizar los pesos, y el problema es que en este método, los pesos convergen al óptimo local (costo / pérdida mínimo local), no al óptimo global.

La ponderación aleatoria ayuda a la red a arriesgarse en cada dirección en el espacio disponible y mejorarlas gradualmente para llegar a una mejor respuesta y no limitarse a una dirección o respuesta.

[La siguiente imagen muestra un ejemplo unidimensional de cómo convergencia. Dada la ubicación inicial, se logra una optimización local pero no una optimización global. En dimensiones más altas, la ponderación aleatoria puede aumentar las posibilidades de estar en el lugar correcto o comenzar mejor, lo que resulta en pesos convergentes a mejores valores.] [1]

[1]: https://i.stack.imgur.com/2dioT.png [Kalhor, A. (2020). NN de clasificación y regresión. Conferencia.]

En el caso más simple, el nuevo peso es el siguiente:

W_new = W_old + D_loss

Aquí, el gradiente de la función de costo se agrega al peso anterior para obtener un nuevo peso. Si todos los pesos anteriores son iguales, en el siguiente paso todos los pesos pueden ser iguales. Como resultado, en este caso, desde un punto de vista geométrico, la red neuronal está inclinada en una dirección y todos los pesos son iguales. Pero si los pesos son diferentes, es posible actualizar los pesos en diferentes cantidades. (Dependiendo del factor de impacto que tenga cada peso sobre el resultado, afecta el costo y las actualizaciones de los pesos. Por lo que incluso un pequeño error en la ponderación aleatoria inicial se puede solucionar).

Este fue un ejemplo muy simple, pero muestra el efecto de la inicialización de ponderación aleatoria en el aprendizaje. Esto permite que la red neuronal vaya a diferentes espacios en lugar de ir a un lado. Como resultado, en el proceso de aprendizaje, vaya al mejor de estos espacios.


0

Seamos más matemáticos. De hecho, la razón por la que respondo es que encontré esta parte faltante en las otras respuestas. Suponga que tiene 2 capas. Si miramos el algoritmo de retropropagación, el cálculo de

dZ2 = A2 - Y

dW2 = (1 / m) * dZ2 * A2.T

Ignoremos db2. (Lo siento no lo siento ;) )

dZ1 = W2.T * dZ2. * g1 '(Z1)

...

El problema que ves está en negrita. El cálculo de dZ1 (que se requiere para calcular dW1) tiene W2, que es 0. Nunca tuvimos la oportunidad de cambiar los pesos a algo más allá de 0 y nunca lo haremos. Entonces, esencialmente, la red neuronal no aprende nada. Creo que es peor que la regresión logística (unidad única). En el caso de la regresión logística, aprendes con más iteraciones ya que obtienes diferentes entradas gracias a X. En este caso, las otras capas siempre dan el mismo resultado, por lo que no aprendes nada.


0

Aprendí una cosa: si inicializas el peso a ceros, es obvio que las unidades de activación en la misma capa serán las mismas, eso significa que tendrán los mismos valores. Cuando retroceda, encontrará que todas las filas del gradiente dW también son iguales, por lo tanto, todas las filas de la matriz de peso W son iguales después de las actualizaciones del descenso del gradiente. En general, la inicialización de todos los pesos a cero da como resultado que la red no rompa la simetría. Esto significa que cada neurona en cada capa aprenderá lo mismo, y también podría estar entrenando una red neuronal n[l]=1n[l]=1para cada capa, y la red no es más poderosa que un clasificador lineal como la regresión logística. Curso de Andrew Ng:

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.