Epoch
Scopri cos'è un'epoca nell'apprendimento automatico e come influisce sull'addestramento del modello. Esplora l'ottimizzazione, evita l'overfitting e addestra Ultralytics YOLO26 con facilità.
Un'epoch rappresenta un ciclo completo attraverso l'intero training dataset da parte di un algoritmo di machine learning. Durante questo processo, il modello ha l'opportunità di aggiornare i propri parametri interni basandosi su ogni campione presente nei dati esattamente una volta. Nel contesto del deep learning, un singolo passaggio è raramente sufficiente affinché una neural network apprenda schemi complessi in modo efficace. Pertanto, l'addestramento comporta solitamente molteplici epoch, consentendo all'algoritmo di apprendimento di affinare iterativamente la propria comprensione e ridurre al minimo l'errore tra le sue previsioni e la realtà effettiva.
Link to this sectionIl ruolo delle epoch nell'ottimizzazione#
L'obiettivo principale dell'addestramento è regolare i model weights per ridurre al minimo una specifica loss function. Gli algoritmi di ottimizzazione, come la stochastic gradient descent (SGD) o l' Adam optimizer, utilizzano l'errore calcolato durante ogni epoch per guidare questi aggiustamenti. All'aumentare del numero di epoch, il modello passa generalmente da uno stato di errore elevato (indovinelli casuali) a un errore inferiore (schemi appresi).
Tuttavia, la selezione del numero corretto di epoch è un aspetto critico dell' hyperparameter tuning.
- Troppo poche epoch: ciò può portare all' underfitting, in cui il modello non ha ancora catturato la tendenza sottostante dei dati.
- Troppe epoch: ciò si traduce spesso in overfitting, dove il modello memorizza il rumore dell'addestramento invece di generalizzare su nuovi dati. Per prevenire ciò, gli sviluppatori monitorano spesso le prestazioni sui validation data e impiegano tecniche come l' early stopping per interrompere l'addestramento quando la generalizzazione smette di migliorare.
Link to this sectionEpoch vs. Batch vs. Iterazione#
È comune per i principianti confondere "epoch" con termini correlati. Comprendere la gerarchia di questi concetti è essenziale per configurare correttamente i training loops:
- Epoch: un passaggio completo attraverso l'intero dataset.
- Batch: un sottoinsieme del dataset elaborato simultaneamente. Poiché i dataset sono spesso troppo grandi per entrare interamente nella GPU memory, vengono suddivisi in gruppi più piccoli definiti dalla batch size.
- Iterazione: un singolo aggiornamento ai pesi del modello. Se un dataset ha 1.000 immagini e la batch size è 100, saranno necessarie 10 iterazioni per completare un'epoch.
Link to this sectionApplicazioni nel mondo reale#
Il numero di epoch necessarie varia drasticamente a seconda della complessità del compito e della dimensione dei dati.
- Analisi di immagini mediche: nell' medical image analysis, come nel rilevamento di tumori nelle scansioni MRI, l'accuratezza è fondamentale. I modelli addestrati per questi compiti vengono spesso eseguiti per centinaia di epoch. Questo addestramento estensivo garantisce che la convolutional neural network (CNN) riesca a discernere anomalie sottili che distinguono il tessuto maligno da quello sano, salvando potenzialmente delle vite.
- Guida autonoma: per i autonomous vehicles, i modelli di object detection devono identificare in modo affidabile pedoni, segnali e altri veicoli. L'addestramento di questi sistemi robusti comporta solitamente dataset massicci come COCO o Objects365. Sebbene la dimensione del dataset sia enorme, il modello richiede comunque molteplici epoch per convergere su una soluzione che si generalizzi bene a diverse condizioni meteorologiche e di illuminazione.
Link to this sectionGestione dei cicli di addestramento tramite codice#
Quando utilizzi framework moderni come Ultralytics YOLO, definire il numero di epoch è un argomento semplice nel comando di addestramento. Strumenti come l' Ultralytics Platform possono aiutarti a visualizzare le curve di perdita su ogni epoch per identificare il punto di arresto ottimale.
Il seguente esempio dimostra come impostare il conteggio delle epoch 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 snippet, l'argomento epochs=50 istruisce il motore di addestramento a eseguire un ciclo attraverso il dataset coco8.yaml per 50 volte distinte. Durante ogni ciclo, il modello esegue forward propagation e backpropagation per affinare le sue capacità di rilevamento.






