La discesa del gradiente è un algoritmo per minimizzare una funzione differenziabile compiendo passi ripetuti nella direzione che la riduce maggiormente a livello locale. Se stai cercando "cos'è la discesa del gradiente", l'idea di base è semplice: calcola la pendenza, fai un piccolo passo in discesa e ripeti.

È molto usata nell'ottimizzazione basata sul calcolo differenziale e nel machine learning. Il metodo funziona meglio quando puoi calcolare una derivata o un gradiente e scegliere un tasso di apprendimento abbastanza piccolo da restare stabile ma abbastanza grande da fare progressi.

In una variabile, la regola di aggiornamento è

xk+1=xkηf(xk),x_{k+1} = x_k - \eta f'(x_k),

e in più variabili diventa

xk+1=xkηf(xk),\mathbf{x}_{k+1} = \mathbf{x}_k - \eta \nabla f(\mathbf{x}_k),

dove η>0\eta > 0 è il tasso di apprendimento. Il tasso di apprendimento controlla di quanto si sposta ogni passo, quindi influisce direttamente sul fatto che l'algoritmo converga, si blocchi o superi il minimo.

Intuizione della discesa del gradiente

Il gradiente punta verso l'alto. Se il tuo obiettivo è minimizzare, la mossa locale naturale è andare nella direzione opposta.

Questa regola locale non garantisce la migliore risposta possibile in ogni problema. Su una funzione convessa, la discesa del gradiente può portare al minimo globale. Su una funzione non convessa, può fermarsi in un minimo locale, in una regione piatta o in un altro punto stazionario.

Come funziona l'algoritmo della discesa del gradiente

Ogni iterazione usa l'informazione sulla pendenza corrente, aggiorna il punto e controlla se deve continuare.

  1. Parti da una stima iniziale x0x_0 oppure x0\mathbf{x}_0.
  2. Calcola la derivata o il gradiente nel punto corrente.
  3. Aggiorna sottraendo η\eta volte quella derivata o quel gradiente.
  4. Fermati quando il gradiente è piccolo, gli aggiornamenti diventano minuscoli oppure si raggiunge un limite prefissato di iterazioni.

La regola di aggiornamento standard presuppone che la funzione obiettivo sia differenziabile nei punti in cui la applichi. Alcuni metodi di ottimizzazione usano i sottogradienti per problemi non lisci, ma questa è un'impostazione diversa.

Perché il tasso di apprendimento conta nella discesa del gradiente

Il tasso di apprendimento η\eta è la dimensione del passo.

Se η\eta è troppo piccolo, la discesa del gradiente di solito si muove nella direzione giusta ma può essere estremamente lenta. Se η\eta è troppo grande, gli aggiornamenti possono superare il minimo, rimbalzare avanti e indietro o persino divergere.

Puoi vedere chiaramente questo compromesso in una funzione quadratica, dove la pendenza diventa più ripida man mano che ti allontani dal minimo. Una dimensione del passo che sembra sicura in un punto può essere troppo aggressiva in un altro.

Esempio svolto: discesa del gradiente su una quadratica

Considera

f(x)=(x3)2.f(x) = (x-3)^2.

Questa funzione ha il suo minimo in x=3x=3. La sua derivata è

f(x)=2(x3).f'(x) = 2(x-3).

Usa la discesa del gradiente con tasso di apprendimento η=0.1\eta = 0.1 e punto iniziale x0=0x_0 = 0.

Allora la regola di aggiornamento è

xk+1=xk0.12(xk3)=xk0.2(xk3).x_{k+1} = x_k - 0.1 \cdot 2(x_k-3) = x_k - 0.2(x_k-3).

Partendo da x0=0x_0 = 0:

x1=00.2(03)=0.6.x_1 = 0 - 0.2(0-3) = 0.6.

Poi

x2=0.60.2(0.63)=1.08.x_2 = 0.6 - 0.2(0.6-3) = 1.08.

e

x3=1.080.2(1.083)=1.464.x_3 = 1.08 - 0.2(1.08-3) = 1.464.

A ogni passo ci si avvicina a 33, e il valore della funzione diminuisce ogni volta. Questo è il modello principale da osservare: la discesa del gradiente non salta direttamente alla risposta. Migliora la stima tramite correzioni locali ripetute.

Varianti comuni della discesa del gradiente

Discesa del gradiente batch

La discesa del gradiente batch usa l'intero dataset per calcolare ogni aggiornamento. Per una funzione obiettivo fissata, questo produce un passo deterministico, ma può essere costoso quando il dataset è grande.

Discesa del gradiente stocastica

La discesa del gradiente stocastica aggiorna usando un campione alla volta. Ogni passo è meno costoso e più rumoroso. Questo rumore può aiutare il metodo a continuare a muoversi, ma rende anche il percorso meno regolare.

Discesa del gradiente mini-batch

La discesa del gradiente mini-batch usa un piccolo gruppo di campioni per ogni passo. Spesso è un compromesso pratico perché riduce il rumore rispetto agli aggiornamenti puramente stocastici, restando però molto meno costosa degli aggiornamenti full-batch.

Queste varianti contano soprattutto nel machine learning, dove la funzione obiettivo è spesso una perdita media su molti esempi di addestramento.

Errori comuni nella discesa del gradiente

Trattare il tasso di apprendimento come un dettaglio secondario

Cambiare η\eta cambia il comportamento dell'algoritmo stesso. Un metodo che converge per un certo tasso di apprendimento può fallire per un altro.

Supporre che la discesa del gradiente trovi sempre il minimo globale

Questa conclusione richiede delle condizioni. Per esempio, la convessità offre garanzie molto più forti rispetto a un generico paesaggio non convesso.

Ignorare la scala delle caratteristiche nei problemi applicati

Nei problemi di ottimizzazione con variabili scalate male, una direzione può cambiare molto più rapidamente di un'altra. La discesa del gradiente può allora procedere a zigzag e convergere lentamente, a meno che il problema non venga riformulato o scalato con maggiore attenzione.

Fermarsi solo perché il gradiente non è esattamente zero

Gli algoritmi numerici raramente aspettano uno zero perfetto. Le regole di arresto pratiche controllano di solito se la norma del gradiente, la variazione dei parametri o la variazione della funzione obiettivo sono abbastanza piccole.

Quando si usa la discesa del gradiente

La discesa del gradiente si usa nell'ottimizzazione numerica, nella statistica e nel machine learning. È particolarmente comune quando una soluzione esatta in forma chiusa non è disponibile oppure è troppo costosa da calcolare direttamente.

Per problemi piccoli con formule semplici, il calcolo differenziale può dare il minimo esatto. La discesa del gradiente diventa più utile quando lo spazio dei parametri è grande, la funzione obiettivo ha molte variabili oppure la perdita deriva da grandi dataset.

Prova un problema simile

Prova una tua versione con f(x)=(x5)2f(x) = (x-5)^2 e punto iniziale x0=12x_0 = 12. Esegui un caso con η=0.1\eta = 0.1 e un altro con η=1.2\eta = 1.2. Vedere un'esecuzione stabile e una instabile rende il ruolo del tasso di apprendimento molto più chiaro della sola formula.

Hai bisogno di aiuto con un problema?

Carica la tua domanda e ottieni una soluzione verificata, passo dopo passo, in pochi secondi.

Apri GPAI Solver →