¿La ventana deslizante conduce a un sobreajuste en LSTM?

15

¿Prepararé mi LSTM si lo entreno a través del enfoque de ventana deslizante? ¿Por qué la gente no parece usarlo para LSTM?

Para un ejemplo simplificado, suponga que tenemos que predecir la secuencia de caracteres:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

¿Es malo (o mejor?) Si sigo entrenando mi LSTM con los siguientes minibatches:

A B C D E F G H I J K L M N, backprop, erase the cell

B C D E F G H I J K L M N O, backprop, erase the cell

 .... and so on, shifting by 1 every time?

Anteriormente, siempre lo entrené como:

A B C D E F G H I J K L M N,  backprop, erase the cell

O P Q R S T U V W X Y Z,  backprop, erase the cell

En lugar de cambiar por uno, ¿sería mejor deslizar la ventana por 2 entradas, etc.? ¿Qué significaría eso (en términos de precisión / sobreajuste)?


Además, si tuviera que hacer el enfoque de ventana deslizante en una red Feed-forward, ¿resultaría en un sobreajuste? Supongo que sí, porque la red está expuesta a las mismas regiones de información durante mucho tiempo. Por ejemplo, está expuesto E F G H I J Kdurante mucho tiempo.


Editar:

Recuerde que el estado de la celda se borra entre los lotes de entrenamiento, por lo que el LSTM tendrá un "martillo a la cabeza" en estos momentos. No puede recordar lo que era antes de OPQRSTUVWXYZ. Esto significa que el LSTM no puede saber que "O" sigue a la "M".

Entonces, pensé (por lo tanto, toda mi pregunta), ¿por qué no darle un lote intermedio (superpuesto) entre ... y en ese caso por qué no usar múltiples minibatches superpuestos, para mí esto proporcionaría una capacitación más fluida? En última instancia, eso significaría una ventana deslizante para un LSTM.


Alguna información útil que encontré después de que la respuesta fue aceptada:

de aquí

La primera palabra de la traducción al inglés probablemente esté altamente correlacionada con la primera palabra de la oración fuente. Pero eso significa que el decodificador tiene que considerar la información de hace 50 pasos, y esa información debe estar codificada de alguna manera en el vector. Se sabe que las redes neuronales recurrentes tienen problemas para lidiar con tales dependencias de largo alcance. En teoría, las arquitecturas como LSTM deberían ser capaces de lidiar con esto, pero en la práctica las dependencias de largo alcance siguen siendo problemáticas.

Por ejemplo, los investigadores han descubierto que invertir la secuencia fuente (alimentarla hacia atrás en el codificador) produce resultados significativamente mejores porque acorta el camino desde el decodificador a las partes relevantes del codificador. Del mismo modo, alimentar una secuencia de entrada dos veces también parece ayudar a una red a memorizar mejor las cosas. Por ejemplo, si un ejemplo de capacitación es "John se fue a casa", le daría "John se fue a casa John se fue a casa" a la red como una entrada.

Edite después de aceptar la respuesta:

Varios meses después, estoy más inclinado a usar el enfoque de ventana deslizante, ya que usa mejor los datos. Pero en ese caso, probablemente no desee entrenar a BCDEFGHIJKLMNO justo después de ABCDEFGHIJKLMNO. En cambio, baraje sus ejemplos, para "pinchar" gradual y uniformemente toda la información en su LSTM. Dele HIJKLMNOPQRSTU después de ABCDEFGHIJKLMNO, etc. Eso está directamente relacionado con el olvido catastrófico. Como siempre, monitoree de cerca el conjunto de Validación y Prueba, y deténgase tan pronto como vea que sus errores aumentan constantemente

Además, el problema del "martillo a la cabeza" se puede mejorar mediante el uso de degradados sintéticos. Vea su beneficio aquí: (la respuesta vinculada discute su beneficio de secuencias largas) /datascience//a/32425/43077

Kari
fuente

Respuestas:

9

Aunque la respuesta anterior de @Imran es correcta, creo que es necesario agregar una advertencia: existen aplicaciones en las que las personas alimentan una ventana deslizante a un LSTM. Por ejemplo, aquí , para enmarcar el pronóstico como un problema de aprendizaje supervisado.

4 4(metronorte+norte2+norte)metronorte

Dado que los LSTM no requieren una entrada de tamaño fijo, pueden encontrar el número de retrospectiva óptimo por sí mismos. Sin embargo, si ha realizado un análisis autorregresivo previo y ha decidido que, por ejemplo, el paso de tiempo actual está más correlacionado con el décimo paso de tiempo anterior, y no está correlacionado con el undécimo o cualquier otro paso de tiempo en el pasado, entonces podría tal vez ahorre algo de tiempo de entrenamiento al alimentar en secuencias de longitud fija. Sin embargo, ese tipo de derrota el propósito de un LSTM.

Si sus datos no son lo suficientemente ricos para un LSTM, recomendaría probar algo mucho más simple, como un modelo autorregresivo, y avanzar.

EDITAR (respondiendo a un comentario):

Las secuencias superpuestas se utilizan como entrada, especialmente cuando la secuencia es muy larga (aunque, por supuesto, 'largo' es relativo). Aunque los LSTM son mejores que un RNN de vainilla para secuencias largas, aún pueden tener algunos problemas para recordar los pasos de tiempo desde el comienzo de una secuencia si la secuencia es muy larga. Eso condujo a cosas como el LSTM bidireccional, que lee la secuencia hacia adelante y hacia atrás, mejorando la exposición de la red al principio y al final de cada secuencia de entrada. El principio es el mismo con las secuencias superpuestas, aunque yo diría que las secuencias superpuestas son más intuitivas.

EstadísticasSorceress
fuente
Gracias, todavía no veo si LSTM debería / no debería ser entrenado con lotes no superpuestos. La publicación que le ha gustado es valiosa, pero solo analiza las redes de Feed-Forward y no aborda los beneficios / peligros en los minibatches superpuestos de LSTM durante el entrenamiento. @Imran tampoco discutió la "ant prescripción" contra los minibatches superpuestos: mi primer comentario en su publicación.
Kari
He editado mi pregunta para incluir el comentario
Kari
Mucha información genial!
Imran
@Kari He modificado mi respuesta. ¿Eso ayuda?
EstadísticasSorceress
5

Los LSTM no requieren una ventana deslizante de entradas. Pueden recordar lo que han visto en el pasado, y si se alimentan en los ejemplos de entrenamiento uno a la vez, elegirán la ventana de entrada del tamaño correcto para recordar por sí mismos.

Los LSTM ya son propensos al sobreajuste, y si ingresa muchos datos redundantes con una ventana deslizante, entonces sí, es probable que se sobreajusten.

Por otro lado, es necesaria una ventana deslizante para la predicción de series temporales con las redes neuronales Feedforward, porque los FNN requieren una entrada de tamaño fijo y no tienen memoria, por lo que esta es la forma más natural de alimentarlos con datos de series temporales.

Si el FNN se sobreajustará o no depende de su arquitectura y sus datos, pero todas las técnicas de regularización estándar se aplicarán si lo hace. Por ejemplo, puede intentar elegir una red más pequeña, regularización L2, abandono, etc.

Imran
fuente
¡Gracias! Yo diría que el estado celular se borra entre los lotes de entrenamiento, por lo que LSTM tendrá un "martillo a la cabeza" en estos momentos. No puede recordar lo que era antes de OPQRSTUVWXYZ. Esto significa que LSTM no puede saber que "O" sigue a la "M". Entonces pensé, ¿por qué no darle un lote intermedio (superpuesto) entre ... y en ese caso, por qué no usar múltiples minibatches superpuestos, para mí esto proporcionaría una capacitación más fluida?
Kari
En última instancia, eso significaría una ventana deslizante para un LSTM
Kari
No es necesario borrar el estado celular entre lotes de entrenamiento, aunque, por supuesto, no es posible la propagación hacia atrás.
Jan van der Vegt
Lo intenté e, incluso con una tasa de aprendizaje de 0, el error fue subiendo y bajando en una pequeña cantidad porque los estados incorrectos de las celdas se reutilizaron como "legado" durante el entrenamiento. No pude apilar más de 6 capas con este enfoque: se volvió demasiado caótico y no convergió. Sin embargo, restablecer el estado de la celda a cero después de cada Backprop me permitió apilar 150 capas con 64 neuronas en cada capa y entrenarlo con 0.001 tasa de aprendizaje y momento de 0.9 (estoy usando LayerNormalization, por eso la tasa de aprendizaje es tan grande en mi caso)
Kari
1
Esto significa que con los "estados de celda heredados" LSTM se vuelve inestable y poco confiable: comienza a trabajar en un nuevo minibatch basándose en sus decisiones en el último estado de la celda (del minibatch anterior) que no se corrigió en toda su extensión. Por lo tanto, borrar el estado celular elimina esta falla de fondo, pero hace que LSTM experimente amnesia
Kari