Qual è l'intuizione dietro una rete neurale ricorrente a memoria a breve termine (LSTM)?


11

L'idea alla base di Recurrent Neural Network (RNN) mi è chiara. Lo capisco nel modo seguente:
abbiamo una sequenza di osservazioni ( ) (o, in altre parole, serie temporali multivariate). Ogni singola osservazioneo1,o2,,onoi è un N -dimensionale vettore numerico. Nel modello RNN assumiamo che l'osservazione successiva oi+1 sia una funzione dell'osservazione precedente oi nonché del precedente "stato nascosto" hi, dove gli stati nascosti sono anche rappresentati da vettori numerici (le dimensioni degli stati osservati e nascosti possono essere diverse). Si presume anche che gli stati nascosti dipendano dall'osservazione precedente e dallo stato nascosto:

oi,hi=F(oi1,hi1)

Infine, nel modello RNN, si assume che la funzione F sia una rete neurale. Formiamo (adattiamo) la rete neurale usando i dati disponibili (una sequenza di osservazioni). Il nostro obiettivo nella formazione è di essere in grado di prevedere l'osservazione successiva nel modo più accurato possibile utilizzando le osservazioni precedenti.

Ora, la rete LSTM è una modifica della rete RNN. Per quanto ho capito, la motivazione alla base di LSTM è quella di risolvere il problema della memoria corta che è peculiare di RNN (l'RNN convenzionale ha problemi con eventi relativi che sono troppo distanti nel tempo).

Capisco come funzionano le reti LSTM. Ecco la migliore spiegazione di LSTM che ho trovato. L'idea di base è la seguente:

Oltre al vettore di stato nascosto introduciamo un cosiddetto vettore di "stato di cella" che ha le stesse dimensioni (dimensionalità) del vettore di stato nascosto ( ci ). Penso che il vettore di "stato cellulare" sia stato introdotto per modellare la memoria a lungo termine. Come nel caso dell'RNN convenzionale, la rete LSTM ottiene lo stato osservato e nascosto come input. Usando questo input, calcoliamo un nuovo "stato di cella" nel modo seguente:

ci+1=ω1(oi,hi)ci+ω2(oi,hi)cint(oi,hi),

dove le funzioni di ω1 , ω2 e cint sono modellate da reti neurali. Per semplificare l'espressione, rimuovo semplicemente gli argomenti:

ci+1=ω1ci+ω2cint

Quindi, possiamo vedere che il nuovo "vettore di stato cellulare" ( ci ) è una somma ponderata del vecchio vettore di stato ( ci1 ) e un vettore di stato di cella "intermedio" ( cint ). La moltiplicazione tra i vettori è basata sul componente (moltiplichiamo due vettori di dimensione N e otteniamo, di conseguenza, un altro vettore di dimensione N). In altre parole, mescoliamo due vettori di stati cellulari (quello vecchio e quello intermedio) usando pesi specifici dei componenti.

Ecco l'intuizione tra le operazioni descritte. Il vettore di stato della cella può essere interpretato come un vettore di memoria. Il secondo vettore di pesi ω2 (calcolato da una rete neurale) è un cancello "keep" (o dimentico). I suoi valori decidono se mantenere o dimenticare (cancellare) un valore corrispondente dal vettore di stato della cella (o vettore di memoria a lungo termine). Il primo vettore di pesi ( ω1 ), che viene calcolato da un'altra rete neurale, è chiamato gate "write" o "memorize". Decide se una nuova memoria (il vettore di stato di cella "intermedio") deve essere salvata (o più precisamente, se un particolare componente di essa deve essere salvato / scritto). "Intermedio"ω1vettore). In realtà, sarebbe più preciso affermare che con i due vettori pesi (ω1eω2) "mescoliamo" il vecchio e il nuovo ricordo.

oihihint

hi+1=hintS(ci+1),

S

Quindi, la mia domanda è: perché (o come esattamente) questa architettura risolve il problema?

In particolare non capisco quanto segue:

  1. Usiamo una rete neurale per generare una memoria "intermedia" (vettore di stato di cella) che viene mescolata con la "vecchia" memoria (o stato di cella) per ottenere una "nuova" memoria (stato di cella). I fattori di ponderazione per la miscelazione sono calcolati anche da reti neurali. Ma perché non possiamo usare solo una rete neurale per calcolare il "nuovo" stato cellulare (o memoria). O, in altre parole, perché non possiamo usare lo stato osservato, lo stato nascosto e la vecchia memoria come input per una rete neurale che calcola la "nuova" memoria?
  2. Alla fine usiamo gli stati osservati e nascosti per calcolare un nuovo stato nascosto e quindi usiamo la "nuova" memoria dello stato di cella (o memoria (a lungo termine)) per correggere il componente dello stato nascosto appena calcolato. In altre parole, i componenti dello stato della cella vengono utilizzati come pesi che riducono solo i componenti corrispondenti dello stato nascosto calcolato. Ma perché il vettore di stato cellulare viene utilizzato in questo modo particolare? Perché non possiamo calcolare il nuovo stato nascosto inserendo il vettore dello stato della cella (memoria a lungo termine) nell'input di una rete neurale (che prende anche gli stati osservati e nascosti come input)?

Inserito il:

Ecco un video che potrebbe aiutare a chiarire come sono organizzate le diverse porte ("keep", "write" e "read").


1
Sembra che tu capisca gli LSTM meglio di me, quindi non posterò una risposta effettiva, dal momento che potrebbe non essere quello che stai cercando: le porte LSTM (principalmente le porte di dimenticanza) gli consentono di mantenere attivazioni e pendenze per tutto il tempo come necessario. Quindi le informazioni al momento t possono essere mantenute disponibili fino al tempo t + n, per n arbitrariamente grande.
rcpinto,

@rcpinto, penso anche che l'idea principale dietro la proposta "architettura" sia quella di consentire la conservazione delle informazioni per molto tempo (molti passaggi temporali). Ma non capisco cosa lo rende esattamente possibile. Le reti delle due porte ("keep" e "write") potrebbero apprendere che i keep-weight dovrebbero essere grandi e i write-dovrebbero essere piccoli (quindi conserviamo la memoria per molto tempo). Ma questo non può essere raggiunto solo da una rete? Una rete neurale (che utilizza lo stato nascosto (memoria) e lo stato osservabile come input) può imparare che lo stato nascosto dovrebbe essere mantenuto senza cambiamenti?
Roman

Infatti, basta impostare la matrice di peso ricorrente sull'identità e manterrà sempre l'ultima attivazione. Il problema è sempre la parte, il che significa che nuovi input si accumuleranno e satureranno rapidamente l'attivazione dei neuroni, che è anche una sorta di dimenticanza. Pertanto, la capacità di cancellare una memoria precedente o bloccare la formazione di nuove memorie è cruciale.
rcpinto,

@rcpinto, ma la "capacità di cancellare una memoria precedente o bloccare la formazione di una nuova" non può essere raggiunta in una singola rete neurale? La rete neurale ottiene il vettore di memoria (o un vettore di stato nascosto) e il vettore di stato osservato come input. Una tale rete non può "decidere" di mantenere o sostituire alcuni componenti dello stato nascosto (la sua memoria) in base ai valori dei componenti nel vettore di stato osservato?
Romano

Gli LSTM possono farlo perché le porte si aprono o si chiudono in base all'input e allo stato correnti. Non esiste tale concetto nei semplici RNN. In questo caso, lo stato stesso reagisce sempre all'input / allo stato direttamente e immediatamente, impedendogli di "scegliere" se memorizzare o meno le nuove informazioni. Inoltre, non esiste alcun meccanismo per cancellare parte della memoria immagazzinata, si accumulerà sempre in base ai pesi di input al neurone e quei pesi non possono cambiare dopo l'allenamento. Poiché le porte LSTM sono moltiplicative, simulano il cambiamento di peso durante l'inferenza, reagendo all'input / stato corrente.
rcpinto,

Risposte:


1

Quando capisco le tue domande, quello che immagini sostanzialmente sta concatenando l'input, lo stato nascosto precedente e lo stato della cella precedente e passando attraverso uno o più layer completamente collegati per calcolare lo stato nascosto e lo stato della cella di output, anziché calcolare indipendentemente "gated "aggiornamenti che interagiscono aritmeticamente con lo stato della cella. Questo in sostanza creerebbe un normale RNN che emette solo parte dello stato nascosto.

Il motivo principale per non farlo è che la struttura dei calcoli dello stato cellulare di LSTM garantisce un flusso costante di errori attraverso lunghe sequenze . Se hai usato i pesi per calcolare direttamente lo stato della cella, dovresti riprogrammarli attraverso ogni passaggio! Evitare tali operazioni risolve ampiamente i gradienti di esplosione / di fuga che altrimenti affliggono gli RNN.

Inoltre, la capacità di conservare facilmente le informazioni per periodi di tempo più lunghi è un bel vantaggio. Intuitivamente, sarebbe molto più difficile per la rete imparare da zero per preservare lo stato della cella per lunghi periodi di tempo.

Vale la pena notare che l'alternativa più comune a LSTM, il GRU , calcola allo stesso modo gli aggiornamenti dello stato nascosto senza apprendere pesi che operano direttamente sullo stato nascosto stesso.


0

Se ho capito correttamente entrambe le tue domande si riducono a questo. Due luoghi in cui utilizziamo sia tanh che sigmoid per l'elaborazione delle informazioni. Invece, dovremmo usare un'unica rete neurale che raccoglie tutte le informazioni.

Non conosco gli svantaggi dell'utilizzo di una singola rete neurale. A mio avviso, possiamo usare una singola rete neurale con non linearità sigmoidea che apprende correttamente il vettore che verrà usato in modo appropriato (aggiunto nello stato di cella nel primo caso o passato come stato nascosto nel secondo caso).

Tuttavia, nel modo in cui lo stiamo facendo ora stiamo rompendo l'attività in due parti, una parte che utilizza la non linearità sigmoide per apprendere la quantità di dati da conservare. L'altra parte che usa l'abbronzatura come non linearità sta semplicemente facendo il compito di apprendere l'informazione che è importante.

In parole povere, sigmoid impara quanto risparmiare e tanh impara cosa salvare e romperlo in due parti faciliterà l'allenamento.

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.