Appeler SMS WhatsApp Email

Définition Mini-batch

Mini-batch

Un mini-batch est un sous-ensemble de données d’entraînement utilisé pour calculer une mise à jour des paramètres d’un modèle d’apprentissage automatique lors d’une itération de l’algorithme d’optimisation, typiquement la descente de gradient ou ses variantes. Plutôt que d’utiliser l’ensemble complet des données (Batch Gradient Descent) ou un seul échantillon à la fois (Stochastic Gradient Descent), l’approche par mini-batch traite un petit groupe d’échantillons simultanément.

Les concepts fondamentaux autour des mini-batchs reposent sur l’optimisation des modèles d’apprentissage automatique. Lors de l’entraînement, l’objectif est d’ajuster les paramètres du modèle (comme les poids dans un réseau de neurones) pour minimiser une fonction de coût, qui mesure l’erreur du modèle sur les données d’entraînement. La descente de gradient calcule la direction (le gradient) dans laquelle ajuster les paramètres pour réduire le coût. L’utilisation de mini-batchs signifie que ce gradient est estimé non pas sur une seule donnée (bruité) ni sur toutes les données (coûteux), mais sur un petit lot. Le processus implique de diviser aléatoirement le jeu de données d’entraînement en plusieurs mini-batchs de taille fixe (la « batch size »). À chaque itération, un mini-batch est sélectionné, le gradient moyen de la fonction de coût est calculé sur ce lot, et les paramètres du modèle sont mis à jour en fonction de ce gradient moyen et d’un taux d’apprentissage. Une fois tous les mini-batchs d’un jeu de données traités, une « époque » est complétée.

L’importance des mini-batchs est considérable, en particulier dans le domaine de l’apprentissage profond (Deep Learning). Ils représentent un compromis efficace entre la descente de gradient par lot complet (Batch Gradient Descent) et la descente de gradient stochastique (SGD) pure. Le Batch Gradient Descent calcule un gradient exact mais est très coûteux en calcul et en mémoire pour de grands jeux de données, car il nécessite de traiter toutes les données à chaque mise à jour. Le SGD (utilisant un seul exemple) est beaucoup plus rapide par itération et moins gourmand en mémoire, mais les mises à jour sont très bruitées, ce qui peut ralentir la convergence ou la rendre instable, bien que ce bruit puisse parfois aider à échapper aux minima locaux. Les mini-batchs offrent une estimation du gradient beaucoup moins bruitée que le SGD pur, menant à une convergence plus stable et souvent plus rapide. De plus, le traitement d’un lot de données permet une utilisation beaucoup plus efficace du matériel informatique moderne, notamment les processeurs graphiques (GPU) qui excellent dans les opérations matricielles parallèles effectuées sur les mini-batchs. Cette efficacité computationnelle est cruciale pour entraîner les modèles complexes et volumineux typiques du Deep Learning. L’utilisation de mini-batchs est devenue la norme dans ce domaine.

Les applications pratiques des mini-batchs couvrent presque tous les domaines où l’apprentissage automatique supervisé est utilisé sur des jeux de données de taille significative. Dans la vision par ordinateur, les réseaux neuronaux convolutifs (CNN) pour la classification d’images (par exemple, sur des bases comme ImageNet), la détection d’objets ou la segmentation sémantique sont entraînés en utilisant des mini-batchs. Des tailles de batch courantes peuvent aller de 32 à 256, voire plus, selon la mémoire GPU disponible. En traitement automatique du langage naturel (NLP), les modèles comme les réseaux neuronaux récurrents (RNN), les LSTMs, les GRUs ou les Transformers (utilisés pour la traduction automatique, l’analyse de sentiments, la génération de texte) sont également entraînés avec des mini-batchs. Les systèmes de recommandation qui traitent d’énormes matrices d’interactions utilisateur-item bénéficient aussi de cette approche pour mettre à jour les facteurs latents. De même, les modèles de reconnaissance vocale sont entraînés sur de larges corpus audio segmentés en mini-batchs. La taille du mini-batch est un hyperparamètre important qui est souvent ajusté par validation croisée pour optimiser les performances et la vitesse d’entraînement.

Il existe quelques nuances concernant les mini-batchs. La taille du mini-batch (« batch size ») n’est pas toujours fixe ; certaines stratégies peuvent l’adapter dynamiquement pendant l’entraînement. La manière dont les données sont échantillonnées pour former les mini-batchs peut varier : l’échantillonnage aléatoire simple sans remplacement est le plus courant pour une époque, mais des techniques comme l’échantillonnage stratifié peuvent être utilisées pour garantir que chaque mini-batch conserve la distribution des classes du jeu de données complet, ce qui peut être important pour les données déséquilibrées. Il est essentiel de distinguer une itération (le traitement d’un mini-batch et la mise à jour des poids) d’une époque (un passage complet sur l’ensemble des données d’entraînement, généralement composé de nombreuses itérations).

Plusieurs concepts sont étroitement liés aux mini-batchs. La Descente de Gradient est l’algorithme d’optimisation fondamental que l’approche par mini-batch cherche à rendre plus efficace. Ses variantes extrêmes sont le Batch Gradient Descent (taille du batch = taille totale du dataset) et le Stochastic Gradient Descent (taille du batch = 1). Une Époque représente un passage complet sur le jeu de données d’entraînement, impliquant le traitement de plusieurs mini-batchs. Une Itération correspond au traitement d’un seul mini-batch. Le Taux d’Apprentissage (Learning Rate) est un autre hyperparamètre crucial, souvent ajusté conjointement avec la taille du mini-batch. La Rétropropagation (Backpropagation) est l’algorithme utilisé pour calculer les gradients dans les réseaux de neurones, appliqué sur chaque mini-batch. Bien que le terme « batch » soit parfois utilisé seul, dans le contexte de l’entraînement itératif moderne, il fait presque toujours référence à un « mini-batch ». Le terme français « lot » est un synonyme parfois rencontré.

L’utilisation de sous-ensembles de données pour estimer les gradients n’est pas une idée nouvelle en optimisation stochastique, mais son adoption massive est relativement récente, coïncidant avec la montée en puissance du Deep Learning dans les années 2010. La nécessité de traiter des jeux de données de plus en plus volumineux (Big Data) et des modèles avec des millions, voire des milliards de paramètres, a rendu le Batch Gradient Descent infaisable. Simultanément, les progrès dans le matériel, en particulier les GPU capables d’effectuer massivement des calculs parallèles, ont rendu le traitement par mini-batchs particulièrement avantageux. Les bibliothèques logicielles de Deep Learning comme TensorFlow, PyTorch ou Keras ont intégré l’entraînement par mini-batchs comme fonctionnalité standard, facilitant son adoption généralisée.

Les avantages de l’utilisation des mini-batchs sont nombreux. Ils offrent une meilleure efficacité de calcul et de mémoire par rapport au Batch Gradient Descent. Ils permettent une utilisation optimale des capacités de parallélisation du matériel moderne (GPU/TPU). L’estimation du gradient est plus stable et moins bruitée que celle du SGD pur, conduisant généralement à une convergence plus rapide et plus fiable. Le bruit inhérent (bien que moindre qu’avec SGD) peut toujours aider le modèle à échapper à certains minima locaux aigus et potentiellement à mieux généraliser. Cependant, l’approche présente aussi des inconvénients. Elle introduit un hyperparamètre supplémentaire, la taille du mini-batch, qui doit être soigneusement réglé car il interagit avec d’autres hyperparamètres comme le taux d’apprentissage et affecte la mémoire requise, la vitesse d’entraînement et la performance finale du modèle. Des tailles de batch très grandes peuvent parfois conduire à une convergence vers des minima locaux plus « plats » mais potentiellement moins performants en généralisation que ceux trouvés par SGD avec plus de bruit. Trouver la taille de batch optimale reste un défi empirique dans de nombreuses applications.