Esaurirò il mio LSTM se lo alleno attraverso l'approccio a finestra scorrevole? Perché le persone non sembrano usarlo per gli LSTM?
Per un esempio semplificato, supponiamo che dobbiamo prevedere la sequenza di caratteri:
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
È male (o meglio?) Se continuo ad addestrare il mio LSTM con i seguenti minibatch:
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?
In precedenza, l'ho sempre allenato come:
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
Invece di spostarsi di uno, sarebbe meglio far scorrere la finestra di 2 voci, ecc.? Cosa significherebbe (in termini di precisione / overfitting)?
Inoltre, se dovessi seguire l'approccio a finestra scorrevole in una rete Feed-forward, si tradurrebbe in un overfitting? Suppongo di sì, perché la rete è esposta per molto tempo alle stesse aree di informazione. Ad esempio, è esposto a E F G H I J K
lungo.
Modificare:
Ricorda che lo stato della cella viene cancellato tra i lotti di allenamento, quindi in questo momento l'LSTM avrà un "martello da testa". Non è in grado di ricordare cosa c'era prima di OPQRSTUVWXYZ. Ciò significa che LSTM non è mai in grado di apprendere che "O" segue la "M".
Quindi, ho pensato (quindi tutta la mia domanda), perché non dargli un lotto intermedio (sovrapposto) tra ... e in quel caso perché non usare più minibatch sovrapposti - per me questo fornirebbe un addestramento più fluido? In definitiva, ciò significherebbe una finestra scorrevole per un LSTM.
Alcune informazioni utili che ho trovato dopo l'accettazione della risposta:
La prima parola della traduzione inglese è probabilmente altamente correlata con la prima parola della frase di partenza. Ciò significa che il decodificatore deve considerare le informazioni di 50 passaggi fa e che le informazioni devono essere in qualche modo codificate nel vettore. È noto che le reti neurali ricorrenti hanno problemi a gestire tali dipendenze a lungo raggio. In teoria, architetture come le LSTM dovrebbero essere in grado di gestirle, ma in pratica le dipendenze a lungo raggio sono ancora problematiche.
Ad esempio, i ricercatori hanno scoperto che l'inversione della sequenza sorgente (inserendola all'indietro nell'encoder) produce risultati significativamente migliori perché accorcia il percorso dal decodificatore alle parti pertinenti dell'encoder. Allo stesso modo, alimentare due volte una sequenza di input sembra aiutare una rete a memorizzare meglio le cose. Ad esempio, se un esempio di allenamento è "John è andato a casa", si darebbe "John è andato a casa John è andato a casa" alla rete come un input.
Modifica dopo aver accettato la risposta:
Diversi mesi dopo, sono più propenso a utilizzare l'approccio a finestra scorrevole, poiché utilizza meglio i dati. Ma in quel caso probabilmente non vuoi allenare BCDEFGHIJKLMNO subito dopo ABCDEFGHIJKLMNO. Invece, rimescola i tuoi esempi per "gradualmente" incorporare tutte le informazioni nel tuo LSTM. Dagli HIJKLMNOPQRSTU dopo ABCDEFGHIJKLMNO ecc. Questo è direttamente correlato all'oblio catastrofico. Come sempre, monitorare attentamente il set di convalida e test e interrompere non appena si vedono i loro errori in costante aumento
Inoltre, il problema "da martello a testa" può essere migliorato, usando i gradienti sintetici. Vedi i suoi vantaggi qui: (la risposta collegata discute i suoi benefici di lunghe sequenze) /datascience//a/32425/43077