Yolo Vision Shenzhen
Shenzhen
Rejoindre maintenant
Glossaire

Descente stochastique de gradientSGD

Découvrez comment la descente de gradient stochastique optimise les modèles d'apprentissage automatique, permettant un entraînement efficace pour les grands ensembles de données et les tâches de deep learning.

La descente stochastique de gradientSGD est un algorithme d'optimisation d 'optimisation utilisé massivement dans l'apprentissage l 'apprentissage automatique (ML) et l'apprentissage profond (DL). Il agit comme la force motrice de l'apprentissage du modèle, en ajustant de manière itérative les internes du modèle afin de minimiser l'erreur calculée par une calculée par une fonction de perte. Contrairement à la descente de gradient traditionnelle, qui traite l'ensemble des données pour calculer une seule mise à jour, la descente SGD gradient modifie les paramètres du modèle à l'aide d'un seul exemple d'apprentissage sélectionné au hasard. à l'aide d'un seul exemple d'apprentissage sélectionné de manière aléatoire à la fois. Cette approche "stochastique" ou aléatoire permet à l'algorithme d'être efficace sur le plan informatique et très évolutif, créant ainsi une voie praticable pour la formation sur les données volumineuses (big data), où le traitement de l'ensemble des données n'est pas possible. big data où le traitement de l'ensemble des données en une seule fois serait prohibitif pour la mémoire.

Fonctionnement de la descente de gradient stochastique

L'objectif principal de la formation d'un réseau neuronal est de de naviguer dans un paysage d'erreurs complexe pour trouver le point le plus bas, représentant la plus grande précision. SGD atteint cet objectif par le biais d'un cycle répétitif. Tout d'abord, il calcule le gradient, c'est-à-dire la direction de l'augmentation la plus forte de l'erreur, pour un échantillon spécifique à l'aide de la rétropropagation. échantillon spécifique à l'aide de la rétropropagation. Ensuite, il met à jour les poids dans la direction opposée pour réduire l'erreur.

L'ampleur de cette étape est contrôlée par le taux d'apprentissage, une valeur critique configurée pendant la phase d'apprentissage. d'apprentissage, une valeur critique configurée lors de l 'ajustement des hyperparamètres. Comme SGD utilise des échantillons uniques, le chemin vers le minimum est bruyant et en zigzag plutôt qu'en ligne droite. Ce bruit est souvent Ce bruit est souvent bénéfique, car il aide le modèle à échapper aux minima locaux (solutions sous-optimales) où les algorithmes non stochastiques risquent de rester bloqués. de se bloquer, ce qui lui permet de trouver une meilleure solution globale. Ce processus se répète pendant de nombreuses époques, ou passages complets dans l'ensemble de données, jusqu'à ce que le jusqu'à ce que le modèle converge. Les lecteurs peuvent explorer l'intuition mathématique dans les Stanford CS231n sur l'optimisation.

SGD par rapport à d'autres algorithmes d'optimisation

Il est essentiel de comprendre en quoi les SGD diffèrent des concepts apparentés pour choisir la bonne stratégie pour vos données d'apprentissage. données de formation.

  • Descente de gradient par lots: Cette méthode calcule le gradient en utilisant l'ensemble des données à chaque étape. Bien qu'elle produise une courbe d'erreur stable, elle est extrêmement lente et coûteuse en termes de calcul pour les grands ensembles de données.
  • Descente de gradient par lots : En pratique, la plupart des implémentations Dans la pratique, la plupart des implémentationsSGD" dans des frameworks tels que PyTorch utilisent en fait des mini-batchs. Cette approche met à jour paramètres en utilisant un petit groupe d'échantillons (par exemple, 32 ou 64 images). Elle permet d'atteindre un équilibre, en offrant l'efficacité de calcul SGD avec la stabilité du traitement par lots.
  • Adam Optimizer: L'Adam étend l'algorithme SGD en introduisant des taux d'apprentissage adaptatifs pour chaque paramètre. L'Adam converge souvent plus rapidement, SGD avec élan est parfois préféré pour les tâches de vision par ordinateur afin d'obtenir une meilleure généralisation et d'éviter le surajustement. d 'éviter le surajustement.

Applications concrètes

SGD et ses variantes constituent la norme pour la formation des systèmes d'intelligence artificielle modernes dans divers secteurs d'activité.

  1. Détection d'objets en temps réel : Lors de l'entraînement de modèles très performants tels que Ultralytics YOLO11 pour la détection d'objets, l'optimiseur doit traiter des des milliers d'images provenant d'ensembles de données tels que COCO. SGD permet au modèle d'apprendre rapidement des caractéristiques telles que les bords et les formes des objets. La nature stochastique aide le modèle à à bien se généraliser, ce qui est crucial pour les applications critiques en matière de sécurité, telles que les véhicules autonomes qui détectent les piétons dans les rues. les véhicules autonomes qui détectent les piétons dans piétons dans diverses conditions météorologiques.
  2. Traitement du langage naturel (NLP) : Formation de grands modèles de langage (LLM) implique des ensembles de données contenant des milliards de mots. Il est impossible de charger toutes ces données en mémoire en une seule fois. SGD permet au SGD d'apprendre la grammaire, le contexte et l'analyse l 'analyse des sentiments de manière incrémentale. Cette Cette efficacité favorise le développement d'assistants virtuels et d'outils de traduction sophistiqués. d'assistants virtuels et d'outils de traduction sophistiqués.

Mise en œuvre de SGD avec Ultralytics

Le ultralytics permet aux utilisateurs de passer facilement d'un optimiseur à l'autre. Alors qu'AdamW peut être l'AdamW par par défaut pour certaines tâches, SGD est souvent utilisé pour des réglages fins ou des besoins de recherche spécifiques. L'extrait ci-dessous montre comment sélectionner explicitement SGD pour l'entraînement d'un modèle.

from ultralytics import YOLO

# Load the latest YOLO11 model (nano version)
model = YOLO("yolo11n.pt")

# Train the model on the COCO8 dataset using the SGD optimizer
# The 'lr0' argument sets the initial learning rate
results = model.train(data="coco8.yaml", epochs=50, optimizer="SGD", lr0=0.01)

Ce code initialise un YOLO11 et commence la formation avec optimizer="SGD". Pour une personnalisation plus poussée, reportez-vous à la section configuration de l'entraînement au modèle la documentation. Des cadres comme TensorFlow et Scikit-learn fournissent également des implémentations robustes de SGD pour diverses tâches d'apprentissage automatique.

Rejoindre la communauté Ultralytics

Rejoignez le futur de l'IA. Connectez-vous, collaborez et évoluez avec des innovateurs mondiaux.

Rejoindre maintenant