LSTM Flashcards
Vanishing Gradient
Il problema del “vanishing gradient” è comune nelle Reti Neurali Ricorrenti (RNN), incluso nelle versioni più semplici come le RNN standard. Si verifica quando durante la retropropagazione del gradiente attraverso le varie iterazioni temporali nelle sequenze di dati, il gradiente diventa così piccolo da “svanire”, rendendo difficile per il modello imparare relazioni a lungo termine nei dati di input.
Questo problema è particolarmente rilevante nelle RNN standard perché il gradiente viene moltiplicato per i pesi della rete ad ogni passaggio temporale, e se i pesi sono piccoli (come spesso accade durante l’addestramento), il gradiente può diventare insignificante dopo diverse iterazioni.
Per risolvere il problema del vanishing gradient nelle RNN, sono state introdotte diverse architetture più complesse, tra cui le Long Short-Term Memory (LSTM).
Cos’è una LSTM unit?
Una LSTM unit, o Long Short-Term Memory unit, è un componente fondamentale delle reti neurali ricorrenti (RNN), progettato per gestire il problema del vanishing gradient e catturare relazioni a lungo termine nei dati di input. È un tipo di unità ricorrente che incorpora una struttura a “cella di memoria” per memorizzare informazioni importanti per lungo tempo durante l’elaborazione di sequenze di dati.
La struttura di una LSTM unit è più complessa rispetto a una unità ricorrente standard (ad esempio, una semplice RNN). Include tre porte principali:
- Porta di dimenticanza (Forget Gate): Questa porta determina quali informazioni memorizzate nella cella di memoria devono essere dimenticate o mantenute. Riceve in input lo stato precedente della cella di memoria Ct−1 e lo stato corrente xt e produce un vettore di valori tra 0 e 1 che indica quanto dimenticare (0) o mantenere (1) ciascun valore nella cella di memoria. La formula matematica per calcolare l’output della porta di dimenticanza è:
ft = σ(Wf⋅[ht−1,xt]+bf)
Dove:- ft è l’output della porta di dimenticanza al tempo t.
- Wf sono i pesi associati alla porta di dimenticanza.
- [ht−1,xt] è la concatenazione dello stato precedente della cella di memoria e lo stato corrente.
- bf è il termine di bias.
- σ è la funzione di attivazione sigmoide.
- Porta di input (Input Gate): Questa porta determina quali nuove informazioni dalla sequenza di input devono essere aggiunte alla cella di memoria. Riceve in input lo stato precedente della cella di memoria Ct−1 e lo stato corrente xt e produce un vettore di valori tra 0 e 1 che indica quanto aggiungere (1) o non aggiungere (0) ciascun valore alla cella di memoria. La formula matematica per calcolare l’output della porta di input è:
it = σ(Wi⋅[ht−1,xt]+bi)
Dove:- it è l’output della porta di input al tempo t.
- Wi sono i pesi associati alla porta di input.
- [ht−1,xt] è la concatenazione dello stato precedente della cella di memoria e lo stato corrente.
- bi è il termine di bias.
- Porta di output (Output Gate): Questa porta determina quali informazioni dalla cella di memoria devono essere utilizzate per generare l’output. Riceve in input lo stato corrente xt e lo stato precedente della cella di memoria Ct−1, e produce un vettore di valori tra 0 e 1 che indica quanto utilizzare (1) o non utilizzare (0) ciascun valore nella cella di memoria per generare l’output. La formula matematica per calcolare l’output della porta di output è:
ot = σ(Wo⋅[ht−1,xt]+bo)
Dove:- ot è l’output della porta di output al tempo t.
- Wo sono i pesi associati alla porta di output.
- [ht−1,xt] è la concatenazione dello stato precedente della cella di memoria e lo stato corrente.
- bo è il termine di bias.
Queste porte sono progettate per regolare attentamente il flusso di informazioni attraverso la LSTM unit, consentendo alla rete di memorizzare e recuperare informazioni rilevanti per lungo tempo. Le LSTM unit sono ampiamente utilizzate in applicazioni di sequenza, come il Natural Language Processing (NLP), e hanno dimostrato di essere efficaci nel catturare relazioni a lungo termine nei dati.
Cos’è il Seq2Seq?
Seq2Seq è un tipo di architettura neurale utilizzata per compiti come traduzione automatica, riassunto di testi e conversazione. Si compone di due parti principali: un encoder e un decoder.
L’encoder converte l’input (ad esempio, una frase in una lingua) in un vettore di contesto che cattura l’essenza dell’input. Di solito è una rete neurale che elabora l’input passo dopo passo e produce il vettore di contesto finale.
Il decoder riceve il vettore di contesto dall’encoder e lo usa per generare l’output desiderato (ad esempio, una traduzione). Anche il decoder è una rete neurale che inizia con lo stato iniziale derivato dal vettore di contesto e produce l’output sequenziale passo dopo passo.
Durante l’allenamento, il modello cerca di minimizzare l’errore tra l’output predetto e l’output reale utilizzando coppie di sequenze di input e output.
Encoder decoder network with attention
Un network Encoder-Decoder con attenzione è un’estensione dell’architettura standard Seq2Seq che incorpora un meccanismo di attenzione. Questo meccanismo consente al modello di concentrarsi su diverse parti della sequenza di input durante la generazione di ciascuna parte della sequenza di output, anziché fare affidamento esclusivamente su un vettore di contesto di lunghezza fissa.
Il meccanismo di attenzione viene introdotto nella parte di decoder della rete. Consente al decoder di concentrarsi su diverse parti della sequenza di input in modo dinamico mentre genera la sequenza di output. Ad ogni passaggio temporale del decoder, il meccanismo di attenzione calcola dei punteggi di attenzione che determinano quanto focus dovrebbe essere posto su ciascuno stato nascosto dell’encoder. Questi punteggi vengono calcolati in base alla similarità tra lo stato corrente del decoder e ciascuno stato nascosto dell’encoder.