Mini-batch SGD et $\mathrm{epochs}$

Idée

Au lieu de calculer le gradient sur les 60 000 images à chaque pas, on coupé le dataset en petits paquets de 64 images et on met a jour les poids après chaque paquet ; un passage complet sur les 60 000 images est appelé une epoch.

Pourquoi

Au lieu de calculer le gradient sur les 60 000 images à chaque pas (full-batch), on coupé le dataset en petits paquets de 64 images (batch_size = 64), on calcule le gradient sur chaque paquet, et on met a jour les poids après chaque paquet. Une epoch est un passage complet sur les 60 000 images, soit 60000/64 = 937{,}5 pas par epoch. Le PDF p14 utilise num_epochs = 10, donc environ 9375 mises a jour. Avantage : variance du gradient + temps de calcul par pas reduits, convergence plus rapide en pratique.

Outil

Decomposition d'une somme en sous-sommes, avec moyenne empirique sur l'échantillon — le mini-batch est une approximation de Monte Carlo de l'esperance du gradient.

Formule

Le notebook reconnaissance-chiffres Cell 19 fixe explicitement les hyperparamètres pour entraîner le réseau 3 couches sur MNIST. Sans regarder, donner ces deux valeurs.

Piège

Une epoch = un passage complet sur l'ensemble des données d'entraînement. Une itération = une mise à jour de poids = un mini-batch traité. Si le dataset a 60 000 exemples et le batch_size est 64, une epoch = 60 000/64 ≈ 938 itérations. Confondre les deux fait croire qu'on entraîne 200× sur les données alors qu'on fait 200 itérations soit 200/938 ≈ 0.2 epoch.