Gradient Descent(SGD)

[grèidient discènt]

L'algoritmo che fa imparare le reti neurali. Scende lungo la pendenza dell'errore aggiustando i parametri a piccoli passi.

Il gradient descent è l'algoritmo che sta dietro al training di praticamente ogni modello di machine learning. Senza, niente IA moderna.

L'idea con un'immagine: immagina di stare in cima a una montagna nella nebbia, vuoi scendere a valle. Non vedi nulla. Cosa fai? Tasti il terreno con un piede, capisci da che parte scende, fai un passo in quella direzione. Ripeti. Prima o poi arrivi in basso.

In matematica: il modello ha milioni (o miliardi) di parametri. Si calcola l'errore sui dati di training (la loss function). Si calcola il gradiente, cioè la direzione in cui i parametri devono muoversi per ridurre l'errore. Si fa un piccolo passo. Si ripete miliardi di volte.

Varianti che usi davvero:

  • SGD (Stochastic Gradient Descent): usa un piccolo batch di esempi per stima del gradiente. Veloce, rumoroso ma funziona.
  • Adam: lo standard de facto per i Transformer. Tiene una "memoria" dei gradienti passati, si adatta meglio.
  • AdamW: variante di Adam con weight decay corretto. Usato per addestrare quasi tutti gli LLM moderni.

Parametro chiave: il learning rate. Quanto è grande il passo. Troppo grande: salti la valle e oscilli. Troppo piccolo: ci metti un'eternità.

Quando un training fallisce ("la loss diverge", "la loss esplode"), nove volte su dieci è un problema di learning rate o di gradienti che si amplificano (vedi residual connection e layer normalization).