LSTM
Long short-term memory.
Un modello che risolve il problema della dipendenza a lungo termine delle RNN. Progettato per propagare meglio le informazioni da time step distanti.
Il nome deriva dal fatto che lo hidden state viene trattato come un elemento di memoria a breve termine, progettato per sopravvivere per un periodo più lungo.
RNN originale:

LSTM: cell state (): uno state che contiene tutte le informazioni precedenti. hidden state (): uno state che contiene le informazioni da esporre solo allo step corrente.

Il risultato della trasformazione lineare di e viene passato attraverso le rispettive funzioni di attivazione per produrre input gate, forget gate, output gate e gate gate (?).
Se h è la dimensione di e dello hidden state, allora W è (4h, 2h). La dimensione delle colonne è 2h perché bisogna trasformare linearmente x e lo hidden state insieme. La dimensione delle righe è 4h in modo che il risultato possa essere usato direttamente come i, f, o, g.
Le probabilità ottenute tramite sigmoid vengono moltiplicate element-wise con lo hidden state, agendo di fatto come pesi.
Forget gate
 
e vengono concatenati, combinati linearmente con W, e poi passati attraverso sigmoid. Il risultato viene moltiplicato con il cell state per determinare quanta parte dei valori del cell state preservare. In altre parole, decide quanta informazione dimenticare.
Gate gate
  è il gate gate. Genera nuove informazioni.
è l’input gate. Come il forget gate, ha valori passati attraverso sigmoid. Determina quanta parte di applicare a .  Il cell state viene aggiornato. Il primo termine è il prodotto del forget gate e del cell state precedente visto prima. Si aggiunge il prodotto dell’input gate e del gate gate.
Il motivo per cui si crea un input gate separato e lo si moltiplica con il gate gate è che una singola trasformazione lineare non basta a produrre il risultato desiderato. In altre parole, input gate e gate gate insieme facilitano la manipolazione delle informazioni da aggiungere.
Output gate
 
L’output gate viene calcolato per primo per generare . Viene usato per ridurre ogni dimensione del cell state di una proporzione appropriata. Nella LSTM, è il valore usato direttamente per l’output al time step corrente. Si può pensare come informazione filtrata da , rilevante solo per il time step t corrente.
Per esempio, supponiamo di avere un modello con “hello” come dati di training e di eseguire l’inference dopo l’addestramento. Se si dà “h” al modello, la combinazione lineare di con produce “e”, che diventa l’input per lo step successivo.
Backpropagation
A differenza delle RNN, la LSTM combina le informazioni tramite addizione come mostrato sotto. 
Questo significa che il gradient vanishing/exploding non si verifica per esponenziazione ripetuta anche con sequenze lunghe.
GRU (Gated Recurrent Unit)
Una rete progettata per usare meno memoria della LSTM. Viene usata molto perché le prestazioni sono simili o a volte migliori della LSTM.
 
Nella LSTM, il forget gate e l’input gate controllano rispettivamente la quantità di informazione eliminata e creata. Nella GRU, viene calcolato una sola volta, e viene usato come forget gate mentre viene usato come input gate.
Inoltre, il cell state e lo hidden state della LSTM vengono implementati con un singolo hidden state nella GRU. In altre parole, lo hidden state della GRU contiene tutte le informazioni precedenti e contribuisce direttamente all’output dello step corrente.