Full Batch
Full Batch désigne une approche de traitement ou d’entraînement dans laquelle l’intégralité d’un jeu de données est utilisée en une seule passe ou itération pour effectuer une mise à jour ou un calcul spécifique. Dans le contexte de l’apprentissage automatique, cela fait référence à l’utilisation de toutes les données d’entraînement pour calculer le gradient de la fonction de coût avant de mettre à jour les paramètres du modèle lors d’une itération de l’algorithme d’optimisation.
Le concept fondamental du Full Batch repose sur l’idée d’utiliser l’information la plus complète disponible à un instant donné pour prendre une décision ou effectuer une opération. En optimisation, comme dans la descente de gradient, le principe essentiel est que le calcul du gradient basé sur l’ensemble du jeu de données fournit une estimation exacte de la direction de la plus forte pente de la fonction de coût par rapport aux paramètres du modèle, pour cet ensemble de données spécifique. Chaque mise à jour des paramètres est donc basée sur une vue globale de l’erreur du modèle sur toutes les données.
L’importance du Full Batch réside dans sa capacité théorique à garantir une convergence vers un minimum de la fonction de coût (souvent un minimum local, mais potentiellement le minimum global pour les fonctions convexes). La direction de mise à jour calculée est la direction « vraie » pour le jeu de données considéré, non une approximation stochastique. Son impact se manifeste dans la trajectoire d’optimisation : elle est généralement plus lisse et moins erratique que celle obtenue avec des méthodes utilisant des sous-ensembles de données. Cependant, cet impact est aussi visible sur les ressources requises et la vitesse de convergence en termes de temps d’horloge.
L’application la plus courante du Full Batch se trouve dans l’entraînement de modèles d’apprentissage automatique via des méthodes d’optimisation basées sur le gradient, spécifiquement la méthode appelée « Batch Gradient Descent » (Descente de Gradient par Lots). Par exemple, pour entraîner un modèle de régression logistique sur un jeu de données de 10 000 exemples, une itération de Full Batch impliquerait de calculer la contribution de chacun des 10 000 exemples à la perte totale et au gradient, de sommer ces contributions, puis d’effectuer une seule mise à jour des poids du modèle en utilisant ce gradient agrégé. D’autres domaines, comme le traitement de données par lots (batch processing), utilisent un concept similaire où un ensemble complet de tâches ou de données est traité en une seule fois, mais le terme « Full Batch » est particulièrement prégnant en optimisation.
Bien que la définition soit assez claire, il est important de distinguer le « Full Batch » (utilisant 100% des données) des « Mini-Batches » (utilisant un sous-ensemble plus petit, par exemple 32, 64 ou 256 exemples) et de l' »approche stochastique » (utilisant un seul exemple à la fois, cas extrême du Mini-Batch). Le terme « Batch » seul peut parfois prêter à confusion, mais dans le contexte de la comparaison des méthodes d’optimisation, « Full Batch » désigne spécifiquement l’utilisation de l’ensemble des données. Il n’y a pas de variations majeures d’interprétation, mais la pertinence de son utilisation varie énormément selon la taille des données.
Plusieurs concepts sont étroitement liés au Full Batch. La Descente de Gradient (Gradient Descent) est l’algorithme d’optimisation qui l’utilise le plus souvent sous sa forme « Batch Gradient Descent ». Une Époque (Epoch) représente une passe complète sur l’ensemble du jeu de données ; dans le cas du Full Batch, une itération correspond à une époque. La Fonction de Coût ou de Perte (Cost/Loss Function) est la fonction que l’on cherche à minimiser. L’Optimisation est le domaine plus large concerné. Les termes antonymes ou alternatifs principaux sont Mini-Batch Gradient Descent et Stochastic Gradient Descent (SGD), qui utilisent respectivement des sous-ensembles ou des exemples uniques pour estimer le gradient et mettre à jour les paramètres plus fréquemment.
Historiquement, la méthode Full Batch (Batch Gradient Descent) est l’une des premières approches formalisées pour l’optimisation des modèles d’apprentissage automatique basés sur le gradient. Elle découle directement des principes d’optimisation numérique appliqués aux fonctions de coût. Son utilisation était plus courante lorsque les jeux de données étaient de taille modeste et pouvaient être entièrement chargés et traités en mémoire vive. L’avènement du Big Data et des modèles très complexes a réduit son applicabilité pratique directe, favorisant les méthodes Mini-Batch.
Les avantages du Full Batch incluent une convergence stable et prédictible, car le gradient calculé est exact et non bruité. La trajectoire vers le minimum est souvent directe. Le calcul du gradient sur l’ensemble du lot peut également être parallélisé efficacement sur plusieurs cœurs de processeur ou GPU. Cela permet d’utiliser pleinement les capacités de calcul vectorisées.
Cependant, les inconvénients sont significatifs. Le principal est l’exigence en mémoire : l’intégralité du jeu de données doit souvent tenir en mémoire pour calculer le gradient, ce qui est impossible pour les téraoctets de données modernes. De plus, chaque itération est très coûteuse en calcul, car elle nécessite de traiter chaque exemple du jeu de données avant de faire une seule mise à jour. Cela rend l’entraînement extrêmement lent en temps réel, même si le nombre total d’itérations pour converger peut être faible. Un autre inconvénient potentiel est que la convergence vers le minimum « le plus proche » peut parfois conduire à des minima locaux de moins bonne qualité (moins généralisables) que ceux atteints par des méthodes plus stochastiques qui peuvent « sauter » par-dessus de petits minima locaux.
Les défis majeurs liés au Full Batch sont donc son incapacité à passer à l’échelle (scalability) pour les grands jeux de données et la lenteur des mises à jour. Il est pratiquement inutilisable pour l’entraînement de réseaux de neurones profonds sur des jeux de données d’images ou de textes massifs. Il n’est pas non plus adapté à l’apprentissage en ligne (online learning), où les données arrivent en flux continu et où le modèle doit être mis à jour progressivement sans stocker toutes les données passées.
En résumé, le Full Batch est une méthode d’optimisation fondamentale utilisant l’ensemble des données pour chaque mise à jour. Elle offre une convergence théoriquement stable grâce à un calcul exact du gradient, mais souffre de limitations sévères en termes de mémoire et de vitesse de calcul pour les jeux de données volumineux typiques des applications modernes. Comprendre le Full Batch est essentiel pour apprécier les compromis faits par les méthodes alternatives comme le Mini-Batch et le SGD, qui sont devenues les standards de facto dans l’entraînement des modèles d’apprentissage profond actuels.