Epoch
Scopri che cos’è un’epoca nel machine learning e come influisce sull’addestramento dei modelli. Esplora l’ottimizzazione, evita l’overfitting e addestra Ultralytics YOLO26 con facilità.
Un'epoca rappresenta un ciclo completo attraverso l'intero dataset di addestramento da parte di un algoritmo di machine learning. Durante questo processo, il modello ha l'opportunità di aggiornare i propri parametri interni sulla base di ogni campione nei dati esattamente una volta. Nel contesto del deep learning, un singolo passaggio è raramente sufficiente perché una rete neurale apprenda efficacemente schemi complessi. Pertanto, l'addestramento prevede in genere più epoche, consentendo all'algoritmo di apprendimento di perfezionare iterativamente la propria comprensione e ridurre al minimo l'errore tra le sue predizioni e la verità di riferimento effettiva.
Il ruolo delle epoche nell'ottimizzazione#
L'obiettivo principale dell'addestramento è regolare i pesi del modello per ridurre al minimo una specifica funzione di perdita. Gli algoritmi di ottimizzazione, come la discesa del gradiente stocastico (SGD) o l'ottimizzatore Adam, utilizzano l'errore calcolato durante ogni epoca per guidare queste regolazioni. All'aumentare del numero di epoche, il modello passa generalmente da uno stato di errore elevato (previsioni casuali) a uno di errore più basso (schemi appresi).
Tuttavia, selezionare il numero corretto di epoche è un aspetto fondamentale dell'ottimizzazione degli iperparametri.
- Troppe poche epoche: questo può portare all'underfitting, in cui il modello non ha ancora catturato la tendenza sottostante dei dati.
- Troppe epoche: ciò porta spesso all'overfitting, in cui il modello memorizza il rumore dei dati di addestramento invece di generalizzare a dati nuovi. Per evitarlo, gli sviluppatori monitorano spesso le prestazioni sui dati di validazione e impiegano tecniche come l'arresto anticipato per interrompere l'addestramento quando la generalizzazione smette di migliorare.
Epoca, batch e iterazione a confronto#
È comune che i principianti confondano "epoca" con termini correlati. Comprendere la gerarchia di questi concetti è essenziale per configurare correttamente i cicli di addestramento:
- Epoca: un passaggio completo attraverso l'intero dataset.
- Batch: un sottoinsieme del dataset elaborato simultaneamente. Poiché i dataset sono spesso troppo grandi per essere contenuti interamente nella memoria della GPU, vengono suddivisi in gruppi più piccoli definiti dalla dimensione del batch.
- Iterazione: un singolo aggiornamento dei pesi del modello. Se un dataset contiene 1.000 immagini e la dimensione del batch è 100, saranno necessarie 10 iterazioni per completare un'epoca.
Applicazioni nel mondo reale#
Il numero di epoche necessarie varia drasticamente in base alla complessità dell'attività e alla quantità di dati.
- Analisi di immagini mediche: nell'analisi di immagini mediche, come nel rilevamento di tumori nelle scansioni MRI, la precisione è fondamentale. I modelli addestrati per queste attività vengono spesso eseguiti per centinaia di epoche. Questo lungo addestramento garantisce che la rete neurale convoluzionale (CNN) sia in grado di distinguere anomalie sottili che separano il tessuto maligno da quello sano, salvando potenzialmente delle vite.
- Guida autonoma: per i veicoli autonomi, i modelli di rilevamento degli oggetti devono identificare in modo affidabile pedoni, segnali stradali e altri veicoli. L'addestramento di questi sistemi robusti prevede in genere dataset enormi come COCO o Objects365. Sebbene le dimensioni del dataset siano enormi, il modello richiede comunque più epoche per convergere verso una soluzione che generalizzi bene a condizioni meteorologiche e di illuminazione diverse.
Gestione dei cicli di addestramento con il codice#
Quando utilizzi framework moderni come Ultralytics YOLO, definire il numero di epoche è semplice: basta specificarlo come argomento nel comando di addestramento. Strumenti come la Ultralytics Platform possono aiutarti a visualizzare le curve della perdita per ogni epoca e a individuare il punto di arresto ottimale.
L'esempio seguente mostra come impostare il numero di epoche durante l'addestramento di un modello YOLO26:
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train the model for 50 epochs
# The 'epochs' argument determines how many times the model sees the entire dataset
results = model.train(data="coco8.yaml", epochs=50, imgsz=640)In questo frammento, l'argomento epochs=50 indica al motore di addestramento di eseguire il ciclo sul dataset coco8.yaml 50 volte distinte. Durante ogni ciclo, il modello esegue la propagazione in avanti e la retropropagazione per perfezionare le proprie capacità di rilevamento.









