Prevenire l'overfitting di LSTM su piccoli set di dati


13

Sto modellando 15000 tweet per la previsione del sentimento usando un LSTM a singolo strato con 128 unità nascoste usando una rappresentazione simile a word2vec con 80 dimensioni. Ottengo una precisione di discesa (38% con casuale = 20%) dopo 1 epoca. Un ulteriore addestramento fa declinare l'accuratezza della convalida man mano che l'accuratezza dell'allenamento inizia a salire, un chiaro segno di eccesso di adattamento.

Sto quindi pensando a come fare la regolarizzazione. Preferirei non ridurre il numero di unità nascoste (128 sembra già un po 'basso). Attualmente uso il dropout con una probabilità del 50%, ma questo potrebbe forse essere aumentato. L'ottimizzatore è Adam con i parametri predefiniti per Keras ( http://keras.io/optimizers/#adam ).

Quali sono alcuni modi efficaci per ridurre l'overfitting di questo modello nel mio set di dati?


Sto avendo lo stesso identico problema. Come sei riuscito a regolarizzare il tuo LSTM? La precisione di convalida del mio LSTM è del 41%. La mia forma di input è (200,) e ho 1 layer LSTM con 64 unità, seguito da 2 layer densi con dropout 0.4.
Nirvan Anjirbag,

Risposte:


7

Puoi provare:

  • Riduci il numero di unità nascoste, so che hai già detto che sembra già basso, ma dato che il livello di input ha solo 80 funzionalità, in realtà può essere che 128 sia troppo. Una regola empirica è quella di avere il numero di unità nascoste tra il numero di unità di input (80) e le classi di output (5);
  • In alternativa, è possibile aumentare la dimensione dello spazio della rappresentazione di input in modo che sia maggiore di 80 (tuttavia ciò potrebbe anche essere eccessivo se la rappresentazione è già troppo stretta per una determinata parola).

Un buon modo per adattarsi a una rete è anche iniziare con una rete di adattamento e quindi ridurre la capacità (unità nascoste e spazio di incorporamento) fino a quando non si adatta più.


1
Hai provato la regolarizzazione l1 e l2? Funziona davvero? Questa risposta suggerisce che non dovresti farlo in generale
Jakub Bartczuk,

Non ero a conoscenza di questa proprietà di RNN, eliminerò quel punto della risposta
Miguel

Ciao, mi chiedevo come hai ottenuto la regola empirica che afferma "avere il numero di unità nascoste compreso tra il numero di unità di input e classi di output". C'è un documento a cui posso fare riferimento?
Kong,

Questo è il problema delle regole empiriche, non so da dove l'ho preso ...
Miguel,
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.