Imaginez réviser un manuel pour un examen. Lire tout le livre une fois est une epoch. Mais vous ne mémorisez pas tout d'un coup : vous étudiez chapitre par chapitre — chaque chapitre est un batch. Et chaque fois que vous terminez un chapitre et ajustez votre compréhension, c'est une itération. Ces trois notions structurent le rythme de l'apprentissage d'un réseau de neurones.
Les trois unités, précisément
- Epoch (époque) : un passage complet sur l'intégralité du jeu de données d'entraînement. Après une epoch, le modèle a « vu » chaque exemple une fois.
- Batch (lot) : un sous-ensemble du jeu de données traité ensemble avant de mettre à jour les poids. Sa taille est le batch size.
- Itération : une seule mise à jour des poids, correspondant au traitement d'un batch.
La relation chiffrée
Si l'on note $N$ le nombre total d'exemples et $B$ la taille du batch, alors le nombre d'itérations par epoch vaut :
$$\text{itérations par epoch} = \left\lceil \frac{N}{B} \right\rceil$$
| Terme | Unité | Déclenche une mise à jour des poids ? |
|---|---|---|
| Itération | 1 batch | Oui (une fois) |
| Epoch | tout le dataset | Oui (plusieurs fois) |
| Batch size | nb d'exemples | définit la granularité |
Exemple : avec $N = 10\,000$ exemples et $B = 100$, une epoch comporte $100$ itérations. Pour $20$ epochs, le modèle effectue $2\,000$ mises à jour au total.
Pourquoi ça compte
Un batch trop grand lisse le gradient mais coûte de la mémoire ; trop petit, il rend l'apprentissage bruité mais parfois plus généralisant. Le nombre d'epochs arbitre entre sous-apprentissage (trop peu) et sur-apprentissage (trop).
Epoch, batch et itération ne décrivent pas ce que le modèle apprend, mais à quel rythme il apprend.