Discesa del gradiente e discesa del gradiente stocastico nell'apprendimento automatico

Aggiornato su September 02, 2024 2 minuti a leggere

Discesa del gradiente e discesa del gradiente stocastico nell'apprendimento automatico cover image

La discesa del gradiente e la discesa del gradiente stocastica (SGD) sono algoritmi di ottimizzazione utilizzati per minimizzare una funzione, generalmente associati alla minimizzazione dell’errore in un modello.

Le differenze principali tra i due sono le seguenti:

Discesa del gradiente (GD)

  • Nella discesa del gradiente standard, l’algoritmo calcola il gradiente della funzione di costo utilizzando l’intero set di dati di addestramento.

  • Aggiorna i parametri del modello effettuando passaggi proporzionali al negativo del gradiente dell’intero dataset.

  • Questo metodo garantisce la convergenza al minimo (date determinate condizioni come convessità e tassi di apprendimento adeguati) ma può essere computazionalmente costoso per set di dati di grandi dimensioni.

Discesa del gradiente stocastico (SGD)

  • Nella discesa del gradiente stocastico, l’algoritmo aggiorna i parametri del modello utilizzando il gradiente della funzione di costo per ogni singolo esempio di allenamento.

  • Effettua aggiornamenti frequenti basati su lotti singoli o piccoli di esempi di addestramento, rendendolo molto più veloce della discesa del gradiente per set di dati di grandi dimensioni.

  • Tuttavia, a causa dei suoi aggiornamenti rumorosi, l’SGD presenta più fluttuazioni e non converge necessariamente al minimo assoluto; converge in una zona prossima al minimo, oscillando attorno ad esso.

Quando usarne uno rispetto all’altro:

  • Gradient Descent (GD): è adatto quando il set di dati è relativamente piccolo e può stare in memoria. Se la funzione di costo è regolare e ben comportata, la GD può convergere efficientemente al minimo.

  • Stochastic Gradient Descent (SGD): è preferibile quando si ha a che fare con set di dati di grandi dimensioni dove il calcolo dei gradienti per l’intero set di dati diventa computazionalmente costoso. È utile anche negli scenari in cui la funzione di costo ha molti minimi locali, poiché il rumore di SGD negli aggiornamenti potrebbe aiutare a sfuggire ai minimi locali superficiali. Inoltre, SGD è comunemente utilizzato nell’addestramento delle reti neurali a causa dei loro vasti set di dati e degli spazi dei parametri ad alta dimensione.

Inoltre, nella pratica vengono spesso utilizzate variazioni come la discesa del gradiente mini-batch, che bilancia i vantaggi sia di GD che di SGD considerando un sottoinsieme di dati per ciascun aggiornamento. La scelta tra questi algoritmi dipende spesso dalle risorse computazionali, dalla dimensione del set di dati e dalle caratteristiche specifiche del problema.