Scopri come lo Stochastic Gradient Descent ottimizza i modelli di machine learning, consentendo un training efficiente per dataset di grandi dimensioni e task di deep learning.
Lo Stochastic Gradient DescentSGD) è un algoritmo di ottimizzazione algoritmo di ottimizzazione utilizzato pesantemente in apprendimento automatico (ML) e apprendimento profondo (DL). Agisce come forza trainante di addestramento del modello, regolando iterativamente i pesi interni del modello e le pesi e le polarizzazioni interne del modello per ridurre al minimo l'errore calcolato da una funzione di perdita. A differenza della tradizionale discesa del gradiente, che elabora l'intero set di dati per calcolare un singolo aggiornamento, SGD modifica i parametri del modello utilizzando solo un singolo esempio di addestramento selezionato casualmente alla volta. Questo approccio "stocastico" o casuale rende l'algoritmo efficiente dal punto di vista computazionale e altamente scalabile, creando un percorso fattibile per l'addestramento su dati, laddove l'elaborazione dell'intero set di dati in una sola volta sarebbe sarebbe proibitivo per la memoria.
L'obiettivo primario dell'addestramento di una rete neurale è quello di navigare in un complesso paesaggio di errori per trovare il punto più basso, che rappresenta la massima precisione. SGD raggiunge questo obiettivo attraverso un ciclo ripetitivo. In primo luogo, calcola il gradiente - la direzione dell'aumento più ripido dell'errore - per un campione specifico utilizzando la backpropagation. campione specifico utilizzando la retropropagazione. Quindi, aggiorna i pesi aggiorna i pesi nella direzione opposta per ridurre l'errore.
L'ampiezza di questo passo è controllata dal tasso di apprendimento, un valore critico configurato durante di regolazione dell'iperparametro. Poiché SGD utilizza campioni singoli, il percorso verso il minimo è rumoroso e zig-zagante piuttosto che una linea retta. Questo rumore è spesso questo rumore è spesso benefico, in quanto aiuta il modello a sfuggire ai minimi locali, soluzioni subottimali in cui gli algoritmi non stocastici potrebbero bloccarsi. non stocastici, permettendogli di trovare una soluzione globale migliore. Questo processo si ripete per molte epoche, o passaggi completi attraverso il set di dati, fino a quando il modello non modello converge. I lettori possono approfondire l'intuizione matematica nella sezione Stanford CS231n.
Capire in che modo l SGD si differenzia dai concetti correlati è fondamentale per selezionare la strategia giusta per i vostri dati di formazione.
SGD e le sue varianti sono lo standard per l'addestramento dei moderni sistemi di intelligenza artificiale in diversi settori.
Il ultralytics permette agli utenti di passare facilmente da un ottimizzatore all'altro. Mentre AdamW potrebbe essere il
AdamW potrebbe essere il predefinito per alcuni compiti, SGD viene spesso utilizzato per la messa a punto o per esigenze di ricerca specifiche. Lo snippet qui sotto
mostra come selezionare esplicitamente SGD per l'addestramento di un modello.
from ultralytics import YOLO
# Load the latest YOLO11 model (nano version)
model = YOLO("yolo11n.pt")
# Train the model on the COCO8 dataset using the SGD optimizer
# The 'lr0' argument sets the initial learning rate
results = model.train(data="coco8.yaml", epochs=50, optimizer="SGD", lr0=0.01)
Questo codice inizializza un oggetto YOLO11 e inizia la formazione
con optimizer="SGD". Per ulteriori personalizzazioni, consultare la sezione
configurazione di addestramento del modello documentazione. Quadri come
TensorFlow e
Scikit-learn forniscono anche robuste implementazioni di SGD
per vari compiti di apprendimento automatico.