Glossaire

Descente stochastique de gradient (SGD)

Découvre comment la descente stochastique de gradient optimise les modèles d'apprentissage automatique, permettant une formation efficace pour les grands ensembles de données et les tâches d'apprentissage profond.

Entraîne les modèles YOLO simplement
avec Ultralytics HUB

En savoir plus

La descente de gradient stochastique, communément appelée SGD, est un algorithme d'optimisation populaire et efficace très utilisé dans l'apprentissage automatique (Machine Learning, ML) et plus particulièrement dans l'apprentissage profond (Deep Learning, DL). Il sert de variante à l'algorithme standard de descente de gradient, mais il est spécifiquement conçu pour la vitesse et l'efficacité lorsqu'il s'agit de très grands ensembles de données. Au lieu de calculer le gradient (la direction de la descente la plus raide pour la fonction de perte) en utilisant l'ensemble des données à chaque étape, SGD approxime le gradient en fonction d'un seul échantillon de données sélectionné au hasard ou d'un petit sous-ensemble appelé mini-lot. Cette approche réduit considérablement les coûts de calcul et les besoins en mémoire, ce qui permet de former des modèles complexes sur des quantités massives de données.

Pertinence de l'apprentissage automatique

La SGD est la pierre angulaire de la formation des modèles d'apprentissage automatique à grande échelle, en particulier les réseaux neuronaux (NN) complexes qui alimentent de nombreuses applications modernes d'intelligence artificielle. Son efficacité le rend indispensable lorsqu'on travaille avec des ensembles de données qui sont trop volumineux pour tenir dans la mémoire ou qui prendraient trop de temps à traiter en utilisant la descente de gradient par lots traditionnelle. Des modèles comme Ultralytics YOLO utilisent souvent le SGD ou ses variantes pendant le processus de formation pour apprendre des modèles pour des tâches telles que la détection d'objets, la classification d'images et la segmentation d'images. Les principaux cadres d'apprentissage profond tels que PyTorch et TensorFlow fournissent des implémentations robustes de SGD, soulignant son rôle fondamental dans l'écosystème de l'IA.

Concepts clés

Pour comprendre les SGD, il faut avoir quelques idées de base :

  • Nature stochastique : Le terme "stochastique" fait référence au caractère aléatoire introduit par l'utilisation d'un seul ou de quelques échantillons pour estimer le gradient à chaque étape. Ce caractère aléatoire ajoute du bruit au processus d'optimisation, ce qui peut parfois aider le modèle à échapper à de mauvais minima locaux et à trouver de meilleures solutions globales.
  • Mini-lots : Alors que la méthode SGD pure utilise un seul échantillon par mise à jour, il est plus courant dans la pratique d'utiliser un petit "mini-lot" d'échantillons (par exemple, 32, 64, 128). Cette approche, encore appelée SGD, permet d'équilibrer l'efficacité des mises à jour à partir d'un seul échantillon et la stabilité obtenue en faisant la moyenne des gradients sur un petit lot. La taille de ce lot est contrôlée par l'hyperparamètre Taille du lot.
  • Taux d'apprentissage : Cet hyperparamètre crucial détermine la taille des pas effectués au cours du processus d'optimisation. Un taux d'apprentissage bien choisi est vital pour la convergence ; s'il est trop élevé, le processus risque de dépasser le minimum, s'il est trop bas, la formation devient excessivement lente. Des techniques telles que la programmation du taux d'apprentissage sont souvent utilisées parallèlement au SGD.
  • Fonction de perte : SGD vise à minimiser une fonction de perte, qui mesure la différence entre les prédictions du modèle et les valeurs cibles réelles dans les données d'apprentissage.

Différences par rapport aux concepts apparentés

SGD est un algorithme d'optimisation parmi d'autres, et il est important de le distinguer des autres :

  • Descente en gradient (Batch GD) : La principale différence réside dans la façon dont le gradient est calculé. La descente de gradient par lots utilise l'ensemble des données pour chaque mise à jour des paramètres, ce qui permet d'obtenir un gradient précis, mais devient lent et coûteux en termes de calcul pour les grands ensembles de données. La méthode SGD utilise un échantillon (ou un mini-lot), ce qui rend chaque mise à jour beaucoup plus rapide mais plus bruyante. Tu peux en savoir plus sur la méthode standard sur la page du glossaire consacrée à la descente de gradient.
  • Descente de gradient par mini-lots : Il s'agit de la mise en œuvre pratique la plus courante, souvent appelée simplement SGD. Elle calcule le gradient sur de petits sous-ensembles aléatoires (mini-lots) des données. Il s'agit d'un équilibre entre la précision de la descente de gradient par lots et l'efficacité de la descente de gradient par lots pure.
  • Optimiseur Adam : Adam est un algorithme d'optimisation du taux d'apprentissage adaptatif, ce qui signifie qu'il ajuste le taux d'apprentissage pour chaque paramètre individuellement en fonction des gradients passés. Bien qu'Adam converge souvent plus rapidement que le SGD de base, le SGD (en particulier avec l'élan) peut parfois mieux se généraliser à des données inédites, comme l'explique une recherche telle que "The Marginal Value of Adaptive Gradient Methods in Machine Learning" (La valeur marginale des méthodes de gradient adaptatif dans l'apprentissage automatique).

Applications dans le monde réel

L'efficacité du SGD permet de l'utiliser dans de nombreuses applications d'intelligence artificielle à grande échelle :

Exemple 1 : Formation de grands modèles linguistiques (LLM)

La formation de modèles tels que ceux utilisés dans le traitement du langage naturel (NLP) implique souvent des ensembles de données textuelles massives (des milliards de mots). SGD et ses variantes sont essentiels pour itérer efficacement dans ces données, permettant aux modèles d'apprendre la grammaire, le contexte et la sémantique. Des plateformes comme Hugging Face s'appuient fortement sur ces optimiseurs pour former les modèles de transformateurs.

Exemple 2 : Formation à la détection d'objets en temps réel

Pour les modèles comme Ultralytics YOLO conçus pour l'inférence en temps réel, la formation doit être efficace. SGD permet aux développeurs d'entraîner ces modèles sur de grands ensembles de données d'images comme COCO ou des ensembles de données personnalisés gérés via des plateformes comme Ultralytics HUB. Les mises à jour rapides permettent une convergence plus rapide par rapport à Batch GD, ce qui est crucial pour itérer rapidement pendant le développement du modèle et le réglage des hyperparamètres.

Tout lire