Single instance

The Forget Gate is a linear layer which has two inputs:

  • that is the previous hidden state vector

This linear layer has a sigmoid activation function and a bias (which is a vector).

Sigmoide come funzione vettoriale

La funzione è una funzione vettoriale a valori vettoriali, applicata element-wise:

dove:

è un vettore (uno per ciascuna unità della LSTM), e la sigmoide viene applicata a ciascun elemento di questo vettore, restituendo un nuovo vettore

In questo contesto la sigmoide applicata all’input dato dalla trasformazione affine () (dove è il vettore di dati di input corrente ​ e è il vettore dello stato nascosto all’iterazione precedente e contenente l’informazioen degli step precedenti) ​, fornisce in output un valore nel range per ciascuna componente.

Esempio: calcolo del vettore

Si supponga che il risultato del termine lineare a monte della sigmoide sia:

Applicando la funzione sigmoide elemento per elemento:

Important

Il vettore , ottenuto a valle dell’applicazione della sigmoide, fornisce i pesi con cui verranno pesati gli elementi del vettore dello stato della cella precedente :

Ogni valore di indica quanto mantenere o dimenticare della corrispondente componente della memoria.

Esempio: Language model predicting the next word form the previous ones

In this case

  • the cell state contains all the info that is flowing freely form the previous layers so it may have a component which encode in a number the gender of the subject: for instance let’s assume that the number encoding the gender component in this vector is the one associated which models the female subject
  • is a new sentence that starts with the name of a new person and this vector is converted through the affine transformation defined above into a vector of components f_t that has zero values for the components corresponding to component of the cell state vector c_t-1 which models the gender. SO after the the gender component of c_t—1 multiplied by zero is forgotten: that’s forgetting the previous state, we are canceling the previous state component by component in this case the gender component

This explains why the name of this gate: it’s a way to de-amplify or even completely canceling the component of the previous cell state vector of the previous iteration C_t-1 which are no longer needed.

The cell state vector is like 100 or 1000 components usually (that’s already too much) and in 1000 numbers is not possible to represent all the book text.

Forma esplicita del forget gate:

Concatenando input e stato precedente in un unico vettore:

e definendo una matrice dei pesi combinata:

posso riscrivere la formula del forget gate in forma compatta:

oppure, con notazione alternativa (dove la concatenazione è scritta come tupla trasposta):

🧠 Dalla Forma Esplicita a quella Compatta L’obiettivo è trasformare l’espressione del forget gate, che contiene due distinte moltiplicazioni matrice-vettore, in una forma più sintetica con una sola moltiplicazione. Il punto di partenza è la formula esplicita: Per compattarla, seguiamo due passaggi chiave: 1. Unione delle Matrici dei Pesi: Le due matrici dei pesi, (per l’input ) e (per lo stato nascosto ), vengono concatenate orizzontalmente in un’unica, grande matrice . 2. Unione dei Vettori di Input: L’input corrente e lo stato nascosto precedente vengono concatenati verticalmente. La notazione rappresenta proprio la creazione di un unico vettore colonna a partire dalla tupla dei due vettori. Moltiplicando la nuova matrice per il nuovo vettore concatenato, grazie alle regole della moltiplicazione tra matrici a blocchi, otteniamo esattamente la somma originale: Questo ci permette di scrivere la formula finale del forget gate in una forma compatta ed elegante: --- ✅ Vantaggi di Questa Notazione * Efficienza: Riduce due operazioni di moltiplicazione separate in una singola operazione, ottimizzando il calcolo specialmente su hardware come le GPU. * Semplicità: Il codice per implementare la rete neurale diventa più pulito e meno ripetitivo. * Standardizzazione: È la notazione più comune nelle implementazioni dei moderni framework di deep learning (come PyTorch e TensorFlow), dove le operazioni vengono vettorializzate al massimo.

Mini - Batch

Nel caso di un minibatch, non elaboriamo più un singolo vettore di input, ma una matrice di input , dove ogni colonna rappresenta un esempio del batch. Di conseguenza, anche lo stato nascosto precedente e l’output del gate diventano matrici.

  • Matrice di Input : Contiene l’intero batch di input. La sua dimensione è .
  • Matrice dello Stato Nascosto : Contiene gli stati nascosti precedenti per ogni esempio nel batch. La sua dimensione è .
🧠 Pesi e Bias nel Contesto Batch

Un concetto fondamentale è che i parametri del layer (pesi e bias) sono condivisi tra tutti gli esempi del batch.

  • Matrici dei Pesi : Le loro dimensioni non cambiano. Rimangono e rispettivamente. La stessa matrice dei pesi viene usata per trasformare tutti gli input nel batch.
  • Vettore di Bias : Anche il bias rimane un singolo vettore di dimensione . Durante il calcolo, viene aggiunto a ogni colonna della matrice risultante tramite un’operazione chiamata broadcasting.
🚀 La Formula Vettorizzata per il Minibatch

La forma esplicita del forget gate viene generalizzata utilizzando la moltiplicazione di matrici. Usiamo lettere maiuscole per indicare le matrici che rappresentano i batch. Dove le dimensioni sono ora:

  • è la matrice di input al tempo .
  • è la matrice degli stati nascosti precedenti.
  • e sono le matrici dei pesi (invariate).
  • è il vettore di bias (invariato, applicato tramite broadcasting).
  • è la matrice di output del forget gate per l’intero batch. Questa formulazione “vettorizzata” è estremamente efficiente e costituisce la base per l’addestramento delle reti neurali su hardware moderno come le GPU.