¿Por qué los pesos de las redes RNN / LSTM se comparten a lo largo del tiempo?

20

Recientemente me interesé en los LSTM y me sorprendió saber que los pesos se comparten a lo largo del tiempo.

  • Sé que si comparte los pesos a lo largo del tiempo, sus secuencias de tiempo de entrada pueden ser de longitud variable.

  • Con los pesos compartidos tiene muchos menos parámetros para entrenar.

Según tengo entendido, la razón por la que uno recurriría a un LSTM frente a algún otro método de aprendizaje es porque cree que hay algún tipo de estructura / dependencia temporal / secuencial en sus datos que le gustaría aprender. Si sacrifica el 'lujo' de longitud variable y acepta un tiempo de cálculo prolongado, ¿un RNN / LSTM sin pesos compartidos (es decir, para cada paso de tiempo que tenga pesos diferentes) funcionaría mucho mejor o hay algo que me falta?

beeCwright
fuente

Respuestas:

17

La respuesta aceptada se centra en el lado práctico de la pregunta: requeriría muchos recursos, si no se comparten los parámetros. Sin embargo, la decisión de compartir parámetros en un RNN se tomó cuando cualquier cálculo serio era un problema (1980 según wiki ), por lo que creo que no fue el argumento principal (aunque todavía es válido).

Hay razones puramente teóricas para compartir parámetros:

  • Ayuda a aplicar el modelo a ejemplos de diferentes longitudes. Mientras lee una secuencia, si el modelo RNN usa parámetros diferentes para cada paso durante el entrenamiento, no se generalizará a secuencias invisibles de diferentes longitudes.

  • A menudo, las secuencias operan de acuerdo con las mismas reglas en toda la secuencia. Por ejemplo, en PNL:

                                                     "El lunes estaba nevando"

                                                     "Estaba nevando el lunes"

... estas dos oraciones significan lo mismo, aunque los detalles están en diferentes partes de la secuencia. El intercambio de parámetros refleja el hecho de que estamos realizando la misma tarea en cada paso, como resultado, no tenemos que volver a aprender las reglas en cada punto de la oración.

LSTM no es diferente en este sentido, por lo tanto, también utiliza parámetros compartidos.

Máxima
fuente
44
¡Esta es, con mucho, la razón más importante que la respuesta aceptada!
jlh
Creo que mi respuesta ha sido mal caracterizada aquí. Dije que se necesitarían más recursos computacionales sin compartir el peso, pero este no fue el punto principal. En particular, también escribí que un modelo sin pesos compartidos sería mucho más flexible y, por lo tanto, más propenso al sobreajuste. Compartir pesos con el tiempo es una forma de superar esto. Como se señala correctamente aquí, esta estrategia corresponde al "previo" que aplican las mismas reglas en cada paso de tiempo. Entonces, las dos respuestas no están en desacuerdo.
user20160
12

La perspectiva de los 'pesos compartidos' proviene de pensar en los RNN como redes de avance desplegadas a través del tiempo. Si los pesos fueran diferentes en cada momento en el tiempo, esto sería solo una red de avance. Pero, supongo que otra forma de pensarlo sería como un RNN cuyos pesos son una función que varía en el tiempo (y eso podría permitirle mantener la capacidad de procesar secuencias de longitud variable).

Si hiciera esto, el número de parámetros crecería linealmente con el número de pasos de tiempo. Eso sería una gran explosión de parámetros para secuencias de cualquier longitud apreciable. De hecho, haría que la red fuera más poderosa si tuviera los recursos computacionales masivos para ejecutarla y los datos masivos para restringirla. Para secuencias largas, probablemente sería computacionalmente inviable y obtendría un sobreajuste. De hecho, las personas generalmente van en la dirección opuesta al ejecutar la propagación hacia atrás truncada a través del tiempo, que solo desenrolla la red durante un corto período de tiempo, en lugar de a lo largo de toda la secuencia. Esto se hace por viabilidad computacional. Curiosamente, los RNN aún pueden aprender la estructura temporal que se extiende más allá de la longitud de truncamiento, porque las unidades recurrentes pueden almacenar memoria de antes.

usuario20160
fuente
Si no comparte pesos, todavía tiene el estado de la celda que persiste en el tiempo. Un LSTM desenrollado con pesos de tiempo únicos se vería como una red de avance donde cada 'capa' representaría un segmento de tiempo, pero cada 'capa' tendría información de estado de celda entrante. Se parecería a un avance, pero con la adición del estado celular.
beeCwright
0

Creo que, dado que las RNN con recurrencias ocultas u ocultas (y pesos compartidos en el tiempo) son equivalentes a las Máquinas Turing universales, dejarlas tener diferentes pesos para diferentes pasos de tiempo no las hace más poderosas.

Hossein
fuente
¿Podría explicar qué quiere decir con "poderoso"? La referencia a Turing Machines sugiere que lo que tiene en mente puede ser completamente diferente de lo que se entiende en estadística.
whuber
Los RNN se utilizan para procesar la secuencia de datos. Uno de sus tipos más comunes obtiene una secuencia como entrada y produce otra secuencia como salida (como los sistemas de traducción de idiomas). Digo que una familia de modelos RNN M1 es más poderosa que otra familia de modelos RNN M2, si por un problema (como mapear un conjunto de secuencias de entrada a un conjunto de secuencias de salida) hay algún modelo m1 en M1 donde puede resolver este problema pero no hay modelo en M2 donde pueda resolver ese problema.
Hossein