Accueil / Factory / Algos ML / Descente de gradient — factory / algos ML / optimisation

DESCENTE DE GRADIENT.

La méthode qui ajuste les paramètres d'un modèle en suivant la pente de l'erreur, pas à pas, jusqu'au point le plus bas. Elle entraîne tous les réseaux de neurones et une bonne partie des modèles classiques. Comprendre son pas et ses pièges suffit à diagnostiquer la plupart des apprentissages qui échouent.

OptimisationApprentissageDeep learningFondamentalNiveau : débutant

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceAtteint la solution exacte sur un problème convexe
InterprétabilitéLe principe tient en une image et une ligne de code
VitesseBeaucoup de petites étapes, accélérées par mini-lots
Facilité de réglageLe pas est délicat : trop grand diverge, trop petit traîne
Tolérance aux données brutesVariables à mettre à l'échelle, sinon elle zigzague
EN 30 SECONDES

Descendre une montagne dans le brouillard. On ne voit pas la vallée, seulement la pente sous ses pieds. On fait un pas dans le sens qui descend le plus, on regarde de nouveau, et ainsi de suite.

1. On part de paramètres quelconques

Ici, tous les coefficients à zéro. L'erreur de départ est grande.

2. On calcule la pente

Le gradient indique, pour chaque paramètre, dans quel sens et avec quelle force l'erreur augmente.

3. On fait un pas dans l'autre sens

Chaque paramètre bouge à l'opposé de la pente, multiplié par le pas (learning rate).

4. On répète jusqu'au plat

Quand la pente devient nulle, l'erreur ne baisse plus : on est au fond. Sur une régression linéaire, ce fond est unique et c'est la solution exacte.

LE CAS MÉTIER

retail · réseau de magasins / franchise
EN ENTRÉE

400 magasins et leur CA

Surface, budget publicitaire, nombre de concurrents et chiffre d'affaires annuel. On ajuste un modèle de CA sans formule toute faite, pour voir la descente à l'œuvre.

EN SORTIE

Les coefficients, trouvés pas à pas

Sur le jeu d'exemple, l'erreur moyenne passe de 792 k€ au départ à 124 k€ après 10 pas, puis se stabilise à 90 k€ dès 50 pas. Après 200 pas, les coefficients sont identiques, au dixième près, à la solution exacte des moindres carrés.

CE QU'ON MESURE

La courbe de l'erreur par étape

Elle doit descendre puis se stabiliser. Si elle remonte ou oscille, le pas est trop grand ; si elle descend à peine, il est trop petit ou les variables ne sont pas à l'échelle.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Entraîner un réseau de neurones : c'est la seule option réaliste à cette taille
  • Données trop volumineuses pour une formule exacte : on avance par mini-lots
  • Modèles sans formule directe : régression logistique, perte sur mesure
  • Comprendre et diagnostiquer un apprentissage qui échoue

NON

  • Régression linéaire de taille modeste : la formule exacte (lm, LinearRegression) est plus rapide et sans réglage
  • Fonction non dérivable ou modèle à base d'arbres : le gradient n'existe pas, voir le boosting
  • Beaucoup de minimums locaux et de plateaux : partir de plusieurs points ou passer à Adam
  • Variables d'échelles très différentes laissées brutes : la descente zigzague, standardiser d'abord
LES 3 RÉGLAGES QUI COMPTENT

Le reste est de l'ingénierie. Ces trois choix décident si la descente arrive en bas.

Le pas (learning rate)

Le réglage le plus important. Trop grand, l'erreur explose ; trop petit, il faut des milliers d'étapes. On teste des puissances de 10 (0,1 ; 0,01 ; 0,001) et on regarde la courbe.

La taille de lot

Toutes les données à chaque pas (batch), une seule ligne (stochastique, SGD) ou un paquet de 32 à 256 lignes (mini-lot). Le mini-lot est le standard : rapide, et son bruit aide à sortir des plateaux.

La mise à l'échelle

Si une variable va de 0 à 2 500 et une autre de 0 à 7, la pente est raide dans une direction et plate dans l'autre : la descente zigzague. Standardiser rend le problème rond et le pas facile à choisir.

LE CODE MINIMAL

jeu d'exemple : magasins.csv ↓
# CA des magasins : descente de gradient en R
magasins <- read.csv("magasins.csv")
# Mise à l'échelle : sans elle, la descente zigzague et il faut un pas minuscule
X <- scale(as.matrix(magasins[, c("surface_m2", "budget_pub_k", "nb_concurrents")]))
X <- cbind(constante = 1, X)
y <- magasins$ca_k

poids <- setNames(rep(0, ncol(X)), colnames(X))
pas <- 0.1
for (etape in 0:200) {
  erreur <- as.vector(X %*% poids - y)
  gradient <- 2 * as.vector(t(X) %*% erreur) / length(y)   # pente de l'erreur quadratique moyenne
  poids <- poids - pas * gradient
  if (etape %in% c(0, 10, 50, 200)) {
    cat("étape", etape, ": erreur moyenne (RMSE) =", round(sqrt(mean(erreur^2)), 1), "k€\n")
  }
}

# Contrôle : la solution exacte des moindres carrés
exact <- lm(y ~ X[, -1])
print(round(rbind(descente = poids, exacte = coef(exact)), 1))

QUESTIONS FRÉQUENTES

Qu'est-ce que le learning rate ?

C'est la taille du pas : de combien on déplace les paramètres à chaque étape, dans le sens opposé à la pente. Un learning rate trop grand fait rebondir l'erreur, voire la fait exploser. Trop petit, l'apprentissage est interminable. C'est le premier réglage à revoir quand un modèle apprend mal.

Quelle différence entre descente de gradient et SGD ?

La descente de gradient classique calcule la pente sur toutes les données avant chaque pas. La descente stochastique (SGD) la calcule sur une ligne ou un petit lot tiré au hasard : chaque pas est approximatif, mais beaucoup moins cher. Sur de gros volumes, c'est la seule approche praticable.

La descente de gradient trouve-t-elle toujours le meilleur modèle ?

Sur un problème convexe, comme une régression linéaire ou logistique, il n'y a qu'un fond et elle le trouve si le pas est bien réglé. Sur un réseau de neurones, il existe de nombreux creux. En pratique, ceux qu'elle trouve donnent souvent des modèles de qualité comparable.

LES ALGOS VOISINS

à comparer avant de choisir
le terrain d'essai

Régression linéaire

Le modèle ajusté ici. Sa formule exacte permet de vérifier que la descente arrive au bon endroit.

Voir la fiche →
la version moderne

Adam

Ajoute un élan et un pas propre à chaque paramètre. Le réglage par défaut pour les réseaux de neurones.

Voir la fiche →
le calcul de la pente

Rétropropagation

Donne le gradient de chaque poids d'un réseau. La descente de gradient s'en sert pour les corriger.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →