¿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 K
durante 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:
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