Ultralytics YOLO27 : Rejoins la liste d'attente.
Licence YOLO
Retour au glossaire Ultralytics

Stochastic Gradient Descent (SGD)

SGD entraîne un modèle à l’aide de nombreuses mises à jour peu coûteuses des poids, calculées sur de petits lots de données aléatoires. Au programme : règle de mise à jour, momentum, taille des lots et code.

La descente de gradient stochastique (SGD) est un algorithme d’optimisation qui entraîne un modèle en mettant à jour de façon répétée ses poids à l’aide du gradient de la perte calculée sur un petit échantillon aléatoire des données d’entraînement, plutôt que sur l’ensemble du jeu de données. Le gradient de chaque échantillon est une estimation bruitée, mais non biaisée, du gradient calculé sur tout le jeu de données ; SGD effectue donc de nombreuses mises à jour peu coûteuses pendant le temps nécessaire à la descente de gradient par lots complets pour en effectuer une seule, coûteuse. Cette méthode descend de la méthode d’approximation stochastique de Robbins et Monro publiée en 1951 et, avec momentum, reste un optimiseur standard pour les réseaux neuronaux convolutifs (CNN).

Fonctionnement de SGD#

À chaque étape, SGD prend un mini-lot B, calcule la dérivée de la perte sur ce mini-lot par rétropropagation, puis déplace chaque poids d’un petit pas dans le sens opposé au gradient : w ← w − η·∇L_B(w), où η est le taux d’apprentissage. À strictement parler, SGD utilise un exemple par étape, mais les frameworks d’apprentissage profond l’appliquent à des mini-lots de quelques dizaines à plusieurs milliers d’exemples ; en pratique, « SGD » et « descente de gradient par mini-lots » sont donc synonymes. Une taille de lot plus grande produit un gradient moins bruité et une meilleure utilisation du matériel, au prix d’un nombre inférieur de mises à jour par époque.

L’entraînement mélange les données au début de chaque époque, les parcourt par mini-lots et effectue une étape par lot. L’ajustement d’une droite à 1 000 points bruités illustre l’ensemble du processus :

import torch

torch.manual_seed(0)

# 1,000 noisy samples of y = 3x + 2
x = torch.randn(1000, 1)
y = 3 * x + 2 + 0.1 * torch.randn(1000, 1)

model = torch.nn.Linear(1, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.05, momentum=0.9)

for epoch in range(5):
    # Reshuffle every epoch, then update the weights once per 32-sample mini-batch
    for idx in torch.randperm(1000).split(32):
        loss = torch.nn.functional.mse_loss(model(x[idx]), y[idx])
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
    print(f"epoch {epoch}: w = {model.weight.item():.3f}, b = {model.bias.item():.3f}, loss = {loss.item():.4f}")

Après deux époques, soit 64 mises à jour au total, le poids atteint 3.081 et le biais 2.012. Au cours des trois époques suivantes, le poids continue d’osciller entre 2.967 et 3.003 au lieu de se stabiliser, car le gradient de chaque mini-lot comporte un bruit d’échantillonnage ; la perte du dernier lot reste proche de 0.01, la variance du bruit ajouté à y.

Taux d’apprentissage, bruit et taille de lot#

Avec un taux d’apprentissage constant, SGD oscille dans une région autour du minimum, dont la taille augmente avec le taux d’apprentissage et le bruit du gradient. La théorie de l’approximation stochastique garantit la convergence uniquement lorsque le taux d’apprentissage tend vers zéro. En pratique, on le réduit donc au fil du temps à l’aide d’échéanciers par paliers ou cosinus, généralement après une courte phase de préchauffage. Le bruit du gradient des petits lots oriente aussi SGD vers des minima plats qui généralisent mieux que les minima pointus que tend à trouver l’entraînement avec de grands lots, une forme implicite de régularisation.

La taille du lot et le taux d’apprentissage interagissent. En augmentant le taux d’apprentissage proportionnellement à la taille du lot, avec un préchauffage de cinq époques, ResNet-50 a pu s’entraîner sur ImageNet en une heure avec des mini-lots de 8 192 images et sans perte de précision.

Momentum et momentum de Nesterov#

Dans une vallée longue et étroite de la surface de perte, le gradient pointe surtout en travers de la vallée. SGD classique zigzague donc entre les parois tout en progressant lentement le long du fond. Le momentum conserve une vitesse cumulée, v ← μ·v + g, et avance dans sa direction, w ← w − η·v : les directions de gradient cohérentes accélèrent, tandis que les directions oscillantes s’annulent. La valeur par défaut habituelle du coefficient est μ = 0,9. Le momentum de Nesterov évalue le gradient après un pas d’anticipation dans la direction de la vitesse, ce qui atténue davantage le dépassement. Le SGD de PyTorch implémente les deux méthodes et applique weight_decay en ajoutant λ·w au gradient, ce qui, pour SGD, équivaut à une pénalité L2 sur les poids.

SGD et les autres optimiseurs#

  • Descente de gradient par lot : Calcule le gradient exact sur l’ensemble du jeu de données à chaque mise à jour. Chaque époque ne produit donc qu’un seul pas, et les besoins en mémoire augmentent avec la taille du jeu de données.
  • Adam : Attribue à chaque paramètre son propre pas à partir des moyennes mobiles de ses gradients et de leurs carrés, et stocke deux valeurs d’état par paramètre, contre une pour SGD avec momentum. Adam progresse plus vite au début et est moins sensible au taux d’apprentissage, tandis que SGD avec momentum, bien réglé, atteint souvent une précision finale équivalente ou supérieure sur les CNN. AdamW, sa variante avec décroissance des poids découplée, est l’optimiseur standard pour les transformers.
  • Muon : Orthogonalise la mise à jour du momentum de chaque matrice de poids dans son ensemble, et a été adapté à l’entraînement de grands modèles de langage.

L’entraînement Ultralytics YOLO construit SGD PyTorch avec l’impulsion de Nesterov lorsque optimizer="SGD" est défini, en utilisant lr0=0.01 et momentum=0.937 par défaut. Le paramètre optimizer="auto" par défaut ignore lr0 et choisit MuSGD, une méthode hybride qui combine les mises à jour SGD et Muon, pour les exécutions de plus de 10 000 itérations, et AdamW pour les plus courtes.

Utilisations de SGD#

SGD avec momentum a entraîné la plupart des célèbres CNN d’ImageNet. Les modèles ResNet d’origine utilisaient un momentum de 0,9, une décroissance des poids de 0,0001 et des mini-lots de 256 images, avec un taux d’apprentissage initial de 0,1, divisé par 10 chaque fois que l’erreur plafonnait. En dehors de l’apprentissage profond, les classes SGDClassifier et SGDRegressor de scikit-learn ajustent des modèles linéaires tels que la régression logistique et les machines à vecteurs de support linéaires avec SGD, et leur méthode partial_fit entraîne les modèles sur des jeux de données trop volumineux pour tenir en mémoire, un bloc à la fois.

Découvre les solutions

La vision par ordinateur dans le sport

La vision par ordinateur dans le sport

Découvre comment Ultralytics YOLO propulse la vision par ordinateur dans le sport grâce au suivi des joueurs et du ballon, aux analyses de performance, aux conseils d’entraînement et à la rééducation des athlètes.
En savoir plus
Vision par ordinateur pour les images aériennes

Vision par ordinateur pour les images aériennes

Transforme les images de drones et les images aériennes en informations exploitables en temps réel pour l’agriculture, l’aquaculture, la conservation et l’analyse géospatiale avec Ultralytics YOLO.
En savoir plus
Vision par ordinateur dans l’aérospatiale

Vision par ordinateur dans l’aérospatiale

Applique la vision par ordinateur dans l’aérospatiale avec Ultralytics YOLO pour l’inspection des aéronefs, la détection des corps étrangers sur les pistes, les opérations au sol des aéroports et la détection des défauts des matériaux composites.
En savoir plus
La vision par ordinateur dans la sécurité

La vision par ordinateur dans la sécurité

Protège chaque site avec les modèles Ultralytics YOLO. L’IA visuelle permet la surveillance des périmètres, la détection des menaces, la reconnaissance des plaques d’immatriculation et la sécurité au travail.
En savoir plus
La vision par ordinateur en robotique

La vision par ordinateur en robotique

Donne plus de capacités à tes machines grâce aux modèles Ultralytics YOLO. Dans la robotique, l’IA visuelle permet la navigation autonome, la perception, le suivi des objets et le contrôle en temps réel.
En savoir plus
La vision par ordinateur dans la logistique

La vision par ordinateur dans la logistique

Optimise la logistique avec les modèles Ultralytics YOLO. La vision par IA permet d’inspecter les colis, de les trier, de suivre les véhicules et de surveiller la sécurité des entrepôts en temps réel.
En savoir plus
La vision par ordinateur dans le commerce de détail

La vision par ordinateur dans le commerce de détail

Réinvente le commerce de détail avec les modèles Ultralytics YOLO. La vision par IA permet de suivre les stocks, de surveiller les rayons, de gérer les files d’attente et de mieux comprendre les clients.
En savoir plus
La vision par ordinateur dans le secteur de la santé

La vision par ordinateur dans le secteur de la santé

Crée des solutions de santé avec les modèles Ultralytics YOLO. La vision par IA dans le secteur de la santé accélère l’imagerie médicale, améliore les diagnostics et facilite la surveillance des patients.
En savoir plus
La vision par ordinateur dans l’industrie manufacturière

La vision par ordinateur dans l’industrie manufacturière

Optimise la fabrication avec les modèles Ultralytics YOLO. La vision par IA améliore le contrôle qualité, la détection des défauts, le respect des règles concernant les EPI et l’automatisation des chaînes de montage.
En savoir plus
La vision par ordinateur dans l’automobile

La vision par ordinateur dans l’automobile

Mets la vision par ordinateur au service de l’automobile avec les modèles Ultralytics YOLO. La vision par IA renforce la sécurité routière, l’aide à la conduite et l’automatisation des véhicules pour des routes plus intelligentes.
En savoir plus
Vision par ordinateur dans l’agriculture

Vision par ordinateur dans l’agriculture

Fais entrer l’IA de vision dans l’agriculture intelligente avec les modèles Ultralytics YOLO. Optimise le suivi des cultures et du bétail ainsi que l’agriculture de précision pour obtenir des rendements plus élevés et plus intelligents.
En savoir plus

Construisons ensemble l’avenir de l’IA !

Commence ton parcours vers l’avenir de l’apprentissage automatique