La finestra scorrevole porta a un overfitting in LSTM?


15

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 Klungo.


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:

da qui

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

Risposte:


9

Sebbene la risposta precedente di @Imran sia corretta, ritengo necessario aggiungere un avvertimento: ci sono applicazioni là fuori dove le persone inseriscono una finestra scorrevole in un LSTM. Ad esempio, qui , per inquadrare la previsione come un problema di apprendimento supervisionato.

Se i tuoi dati non sono molto ricchi, allora potresti trovare qualsiasi LSTM a tutti gli effetti. Ci sono molti parametri in un LSTM (in effetti, ci sono parametri, dove è la lunghezza di input e è la lunghezza di output, secondo questo post ).4(mn+n2+n)mn

Poiché gli LSTM non richiedono input di dimensioni fisse, possono trovare da soli il numero di ricerca ottimale. Tuttavia, se hai effettuato un'analisi autoregressiva precedente e hai deciso che, ad esempio, il passaggio temporale corrente è più correlato con il decimo passaggio temporale precedente e non correlato con l'undicesimo o qualsiasi altro passaggio temporale in passato, allora potresti forse risparmierai un po 'di tempo di allenamento nutrendoti in sequenze di lunghezza fissa. Tuttavia, quel tipo di sconfigge lo scopo di un LSTM.

Se i tuoi dati non sono abbastanza ricchi per un LSTM, ti consiglierei di provare qualcosa di molto più semplice, come un modello autoregressivo, e di farti strada.

MODIFICA (rispondendo a un commento):

Le sequenze sovrapposte vengono utilizzate come input, specialmente quando la sequenza è molto lunga (sebbene, ovviamente, "long" sia relativo). Sebbene gli LSTM siano migliori di un RNN alla vaniglia per lunghe sequenze, possono comunque avere dei problemi a ricordare i passi temporali dall'inizio di una sequenza se la sequenza è molto lunga. Ciò ha portato a cose come l'LSTM bidirezionale, che legge la sequenza in avanti e indietro, migliorando l'esposizione della rete all'inizio e alla fine di ogni sequenza di input. Il principio è lo stesso con le sequenze sovrapposte, anche se direi che le sequenze sovrapposte sono più intuitive.


Grazie, non vedo ancora se LSTM dovrebbe / non dovrebbe essere addestrato con lotti non sovrapposti. Il post che ti è piaciuto è prezioso, ma tratta solo delle reti Feed Forward e non affronta benefici / pericoli nei minibatch sovrapposti di LSTM durante l'allenamento. Anche @Imran non ha discusso dell '"anti-prescrizione" contro i minibatch sovrapposti: il mio primo commento al suo post.
Kari,

Ho modificato la mia domanda per includere il commento
Kari,

Molte informazioni fantastiche!
Imran,

@Kari ho modificato la mia risposta. Questo aiuta?
StatsSorceress

5

Gli LSTM non richiedono una finestra scorrevole di input. Riescono a ricordare ciò che hanno visto in passato e se si alimentano esempi di formazione uno alla volta, sceglieranno la finestra di input della dimensione giusta da ricordare da soli.

Gli LSTM sono già inclini a un overfitting e, se si inseriscono molti dati ridondanti con una finestra scorrevole, sì, è probabile che si adattino troppo.

D'altra parte, è necessaria una finestra scorrevole per la previsione delle serie temporali con le reti neurali Feedforward, poiché gli FNN richiedono un input di dimensioni fisse e non dispongono di memoria, quindi questo è il modo più naturale per fornire loro i dati delle serie temporali.

L'adattamento o meno dell'FNN dipende dalla sua architettura e dai tuoi dati, ma in caso contrario verranno applicate tutte le tecniche standard di regolarizzazione. Ad esempio, puoi provare a scegliere una rete più piccola, la regolarizzazione L2, il dropout, ecc.


Grazie! Direi che lo stato delle cellule viene cancellato tra i lotti di allenamento, quindi LSTM avrà un "martello in testa" in questi momenti. 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, 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?
Kari,

In definitiva, ciò significherebbe una finestra scorrevole per un LSTM
Kari,

Non è necessario cancellare lo stato cellulare tra i lotti di allenamento, anche se ovviamente la backpropagation più indietro non è possibile.
Jan van der Vegt,

L'ho provato e, anche con un tasso di apprendimento pari a 0, l'errore stava saltando su e giù di una piccola quantità perché stati di cella errati venivano riutilizzati come "legacy" durante l'allenamento. Con questo approccio non sono riuscito a impilare più di 6 livelli: è diventato troppo caotico e non convergere. Tuttavia, il ripristino dello stato cellulare a zero dopo ogni Backprop mi ha permesso di impilare 150 strati con 64 neuroni in ogni strato e addestrarlo con 0,001 velocità di apprendimento e momento di 0,9 (sto usando LayerNormalization, ecco perché la velocità di apprendimento è così grande nel mio caso)
Kari,

1
Ciò significa che con "legacy cellstates" LSTM diventa instabile e inaffidabile - inizia a lavorare su un nuovo minibatch basando le sue decisioni sull'ultimo stato di cella (del minibatch precedente) che non è stato corretto completamente. Quindi, la cancellazione dello stato cellulare rimuove questo difetto fondamentale, ma fa sperimentare all'amnesia LSTM
Kari,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.