Glossario

Discesa del gradiente stocastico (SGD)

Scopri come la Stochastic Gradient Descent ottimizza i modelli di apprendimento automatico, consentendo un addestramento efficiente per grandi dataset e attività di deep learning.

Addestra i modelli YOLO semplicemente
con Ultralytics HUB

Per saperne di più

Lo Stochastic Gradient Descent, comunemente noto come SGD, è un algoritmo di ottimizzazione popolare ed efficiente molto utilizzato nel Machine Learning (ML) e in particolare nel Deep Learning (DL). Si tratta di una variante dell'algoritmo di discesa del gradiente standard, ma è specificamente progettato per garantire velocità ed efficienza quando si tratta di insiemi di dati molto grandi. Invece di calcolare il gradiente (la direzione di discesa più ripida per la funzione di perdita) utilizzando l'intero set di dati in ogni fase, SGD approssima il gradiente sulla base di un singolo campione di dati selezionato in modo casuale o di un piccolo sottoinsieme chiamato mini-batch. Questo approccio riduce significativamente il costo computazionale e i requisiti di memoria, rendendo possibile l'addestramento di modelli complessi su enormi quantità di dati presenti in campi come la computer vision.

Rilevanza nell'apprendimento automatico

L'SGD è una pietra miliare per l'addestramento di modelli di apprendimento automatico su larga scala, in particolare le complesse Reti Neurali (NN) che alimentano molte applicazioni di AI moderne. La sua efficienza lo rende indispensabile quando si lavora con insiemi di dati troppo grandi per essere inseriti nella memoria o che richiederebbero troppo tempo per essere elaborati con la tradizionale Batch Gradient Descent. Modelli come Ultralytics YOLO utilizzano spesso l'SGD o le sue varianti durante il processo di addestramento per apprendere modelli per attività come il rilevamento di oggetti, la classificazione di immagini e la segmentazione di immagini. I principali framework di deep learning come PyTorch e TensorFlow forniscono solide implementazioni di SGD, evidenziando il suo ruolo fondamentale nell'ecosistema dell 'IA.

Concetti chiave

La comprensione dell'SGD implica alcune idee fondamentali:

  • Funzione di perdita: Una misura di quanto le previsioni del modello corrispondano ai valori reali dell'obiettivo. L'SGD mira a minimizzare questa funzione.
  • Velocità di apprendimento: È un iperparametro che controlla la dimensione del passo durante l'aggiornamento di ogni parametro. Trovare un buon tasso di apprendimento è fondamentale per una formazione efficace. I programmi di apprendimento sono spesso utilizzati per regolare il tasso di apprendimento durante l'addestramento.
  • Dimensione del lotto: Il numero di campioni di allenamento utilizzati in un'iterazione per stimare il gradiente. Nell'SGD puro, la dimensione del batch è 1. Quando si utilizzano sottoinsiemi piccoli, viene spesso chiamato Mini-batch Gradient Descent.
  • Dati di addestramento: Il set di dati utilizzato per addestrare il modello. SGD elabora questi dati campione per campione o in mini-lotti. I dati di alta qualità sono essenziali e spesso richiedono un'attenta raccolta e annotazione dei dati.
  • Gradiente: Un vettore che indica la direzione dell'aumento più ripido della funzione di perdita. SGD sposta i parametri nella direzione opposta del gradiente calcolato da un campione o da un mini-batch.
  • Epoca: Un passaggio completo attraverso l'intero set di dati di addestramento. L'addestramento in genere prevede più epoche.

Differenze rispetto ai concetti correlati

L'SGD è uno dei tanti algoritmi di ottimizzazione ed è importante distinguerlo dagli altri:

  • Batch Gradient Descent (BGD): Calcola il gradiente utilizzando l'intero set di dati di allenamento in ogni fase. Questo metodo fornisce una stima accurata del gradiente, ma è computazionalmente costoso e richiede molta memoria per i dataset di grandi dimensioni. Il percorso di convergenza è più omogeneo rispetto agli aggiornamenti rumorosi di SGD.
  • Mini-batch Gradient Descent: Un compromesso tra BGD e SGD. Calcola il gradiente utilizzando un piccolo sottoinsieme casuale (mini-batch) dei dati. Questo bilancia l'accuratezza del BGD con l'efficienza dell'SGD ed è l'approccio più comune nella pratica. Le prestazioni possono dipendere dalla dimensione del lotto.
  • Adam Optimizer: Un algoritmo di ottimizzazione del tasso di apprendimento adattivo che calcola tassi di apprendimento adattivi individuali per diversi parametri. Spesso converge più velocemente dell'SGD standard, ma a volte può generalizzare in modo meno efficace, come discusso in ricerche come "The Marginal Value of Adaptive Gradient Methods in Machine Learning". Esistono molte varianti di Gradient Descent oltre a queste.

Applicazioni del mondo reale

L'efficienza dell'SGD ne consente l'utilizzo in numerose applicazioni di AI su larga scala:

Esempio 1: Formazione di modelli linguistici di grandi dimensioni (LLM)

L'addestramento di modelli come quelli utilizzati nell'elaborazione del linguaggio naturale (NLP) spesso coinvolge enormi set di dati testuali (miliardi di parole). SGD e le sue varianti (come Adam) sono essenziali per iterare questi dati in modo efficiente, consentendo a modelli come GPT-4 o quelli presenti su Hugging Face di imparare la grammatica, il contesto e la semantica. La natura stocastica aiuta a evitare i minimi locali nel complesso panorama delle perdite.

Esempio 2: Formazione sul rilevamento di oggetti in tempo reale

Per modelli come Ultralytics YOLO , progettati per l'inferenza in tempo reale, l'addestramento deve essere efficiente. SGD consente agli sviluppatori di addestrare questi modelli su grandi dataset di immagini come COCO o su dataset personalizzati gestiti da piattaforme come Ultralytics HUB. Gli aggiornamenti rapidi consentono una convergenza più veloce rispetto a Batch GD, fondamentale per iterare rapidamente durante lo sviluppo del modello e la messa a punto degli iperparametri. Questa efficienza favorisce le applicazioni in settori come i veicoli autonomi e la robotica.

Leggi tutto