Come selezionare il numero di strati nascosti e il numero di celle di memoria in un LSTM?


28

Sto cercando di trovare alcune ricerche esistenti su come selezionare il numero di layer nascosti e le dimensioni di questi di un RNN basato su LSTM.

Esiste un articolo in cui si sta studiando questo problema, ovvero quante celle di memoria si dovrebbero usare? Suppongo che dipenda totalmente dall'applicazione e in quale contesto viene utilizzato il modello, ma cosa dice la ricerca?

Risposte:


15

La tua domanda è piuttosto ampia, ma ecco alcuni suggerimenti:

Per le reti feedforward, vedi questa domanda :

La risposta di @ Doug ha funzionato per me. C'è un'ulteriore regola empirica che aiuta a problemi di apprendimento supervisionato. Il limite superiore del numero di neuroni nascosti che non si tradurrà in un eccesso di adattamento è:

Nh=NS(α*(Nio+No))

NioNoNSα
un'lphun'NS*(Nio+No)α

Per una procedura automatizzata inizieresti con un alfa pari a 2 (il doppio dei gradi di libertà nei dati di allenamento rispetto al tuo modello) e avanzerai fino a 10 se l'errore per i dati di allenamento è significativamente inferiore rispetto a quello della convalida incrociata set di dati.

E in particolare su LSTM, potresti voler dare un'occhiata a questo .

Ma il punto principale: non esiste una regola per la quantità di nodi nascosti che dovresti usare, è qualcosa che devi capire per ogni caso per tentativi ed errori .


7

Selezionare il numero di livelli nascosti e il numero di celle di memoria in LSTM dipende sempre dal dominio dell'applicazione e dal contesto in cui si desidera applicare questo LSTM.

Per strati nascosti. L'introduzione di strati nascosti rende possibile per la rete esibire un comportamento non lineare.

Il numero ottimale di unità nascoste potrebbe essere facilmente inferiore al numero di input, non esiste alcuna regola come moltiplicare il numero di input con N ... Se si hanno molti esempi di addestramento, è possibile utilizzare più unità nascoste, ma a volte solo 2 unità nascoste funzionano meglio con pochi dati. Di solito le persone usano uno strato nascosto per compiti semplici, ma oggigiorno la ricerca nelle architetture di reti neurali profonde mostra che molti strati nascosti possono essere utili per oggetti difficili, caratteri scritti a mano e problemi di riconoscimento del volto.

I assume it totally depends on the application and in which context the model is being used.


5
La non linearità è dovuta all'uso di funzioni di attivazione non lineari. Il numero di livelli aumenta solo l'espressività di NN. Dovresti correggere questa risposta. Le combinazioni di funzioni lineari sono ancora funzioni lineari (quindi, se avessi più livelli che eseguivano solo una combinazione lineare degli input, la combinazione di questi livelli sarebbe comunque lineare).
nbro,

4

In generale, non ci sono linee guida su come determinare il numero di strati o il numero di celle di memoria in un LSTM.

Il numero di strati e celle richiesti in un LSTM potrebbe dipendere da diversi aspetti del problema:

  1. La complessità del set di dati. La quantità di funzioni, il numero di punti dati ecc.

  2. Il processo di generazione dei dati. Di seguito un esempio di come il processo di generazione dei dati può svolgere un ruolo significativo.

Ex - Previsione dei prezzi del petrolio rispetto alla previsione del PIL di un'economia ben compresa. Il secondo è molto più semplice del primo. Pertanto, la previsione dei prezzi del petrolio potrebbe anche aver bisogno di un numero maggiore di celle di memoria LSTM per prevedere con la stessa accuratezza rispetto al PIL.

  1. L'accuratezza richiesta per il caso d'uso Il numero di celle di memoria dipenderà fortemente da questo. Se l'obiettivo è quello di battere lo stato dell'arte - in generale sono necessarie più celle LSTM. Confrontalo con l'obiettivo di elaborare previsioni ragionevoli, che richiederebbero un numero minore di celle LSTM.

Seguo questi passaggi durante la modellazione utilizzando LSTM:

  1. Prova un singolo livello nascosto con 2 o 3 celle di memoria. Guarda come si comporta rispetto a un benchmark. Se si tratta di un problema di serie storiche, generalmente faccio una previsione dalle tecniche classiche di serie storiche come parametro di riferimento.

  2. Prova ad aumentare il numero di celle di memoria. Se le prestazioni non aumentano molto, passa al passaggio successivo.

  3. Inizia a rendere la rete profonda, ovvero aggiungi un altro livello con un piccolo numero di celle di memoria.

A parte :

Non vi è alcun limite alla quantità di lavoro che può essere dedicata per raggiungere i minimi globali della funzione di perdita e ottimizzare i migliori iperparametri. Quindi, concentrarsi sull'obiettivo finale per la modellazione dovrebbe essere la strategia piuttosto che cercare di aumentare l'accuratezza il più possibile.

La maggior parte dei problemi può essere gestita utilizzando 2-3 strati della rete.


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.