Aller au contenu
Kudos AI

Descente de gradient

Un algorithme d’optimisation itératif qui minimise une fonction en avançant de façon répétée dans la direction opposée à son gradient.

Aussi appelé : Descente la plus raide

Un point descendant la pente le long d’une courbe, la tangente redessinée à chaque arrêt et le pas rétrécissant à mesure que la pente s’aplatit.

Comprendre Descente de gradient

La descente de gradient répond à une question mécanique : étant donné une fonction qui mesure l’erreur d’un modèle, dans quelle direction déplacer les paramètres pour la réduire ? Le gradient de cette fonction de perte, le vecteur de ses dérivées partielles par rapport à chaque paramètre, pointe vers la direction où la perte croît le plus vite. Avancer exactement à l’opposé la réduit donc le plus vite, du moins localement.

L’algorithme est la boucle qui en découle : calculer le gradient au point courant, faire un petit pas à son opposé, recommencer. La taille du pas est fixée par un seul nombre, le taux d’apprentissage, dont le poids est considérable. Trop petit, le modèle exige un nombre de pas impraticable ; trop grand, les pas dépassent le minimum et la perte oscille ou diverge franchement.

La méthode est locale. Elle suit la pente sous le point courant sans vue d’ensemble du paysage, et converge donc vers un minimum local. Sur une surface convexe, qui ne possède qu’une cuvette, ce minimum local est le minimum global. Pour un réseau de neurones la surface n’est pas convexe, et le constat pratique est que cela compte bien moins que la théorie ne le laissait craindre : les minima atteints depuis des points de départ différents généralisent de façon comparable.

En pratique le gradient n’est presque jamais calculé sur l’ensemble des données, ce qui serait prohibitif. La descente de gradient stochastique l’estime à partir d’un mini-lot tiré au hasard. L’estimation est plus bruitée, mais chaque pas est bien moins coûteux, et le bruit lui-même est utile : il aide la trajectoire à s’échapper des points-selles et des vallées étroites. Les optimiseurs modernes comme le momentum et Adam reprennent ce squelette en y ajoutant une mémoire des gradients passés.

Comment calculer

θ ← θ − η ∇L(θ)

où

θ
les paramètres à optimiser
η
le taux d’apprentissage, la taille du pas
∇L(θ)
le gradient de la perte L par rapport à θ
←
affectation : la nouvelle valeur remplace l’ancienne à chaque itération

Exemple : Descente de gradient

Prenons la perte la plus simple possible, f(w) = (w − 3)², dont le minimum est évidemment en w = 3. Sa dérivée vaut f′(w) = 2(w − 3), d’où la règle de mise à jour w ← w − η · 2(w − 3). Partons délibérément loin, en w = 10, avec un taux d’apprentissage η = 0,1.

Les cinq premiers pas donnent w = 8,6000, 7,4800, 6,5840, 5,8672, 5,2938, la perte passant de 31,36 à 20,07, 12,85, 8,22 puis 5,26. Chaque pas comble 20 % de la distance restante jusqu’à 3 : la progression est rapide au début puis ralentit à mesure que le gradient diminue près du minimum.

Le taux d’apprentissage n’est pas un choix libre. Pour cette fonction, tout η compris entre 0 et 1 converge ; à η = 1 exactement l’itéré saute au point symétrique et oscille indéfiniment sans progresser ; au-delà de 1 il diverge. Toute surface de perte possède un seuil de stabilité analogue fixé par sa courbure, ce qui explique qu’un taux efficace sur un modèle puisse ruiner l’entraînement d’un autre.

Avantages et inconvénients

Avantages

  • N’exige que les dérivées premières, ce qui permet de traiter des modèles à des milliards de paramètres.
  • Économe en mémoire : nul besoin de construire ni d’inverser une matrice de dérivées secondes.
  • La variante par mini-lots fonctionne sur des jeux de données bien trop volumineux pour tenir en mémoire.

Inconvénients

  • Ne converge que vers un minimum local, sans garantie qu’il soit global pour une perte non convexe.
  • Très sensible au taux d’apprentissage, qui doit généralement être réglé empiriquement.
  • Peine dans les vallées étroites et allongées, où elle zigzague au lieu d’en suivre le fond.

Questions fréquentes

Pourquoi soustraire le gradient plutôt que l’ajouter ?

Le gradient pointe vers la plus forte croissance de la perte. Puisqu’on cherche à la diminuer, le pas se fait dans la direction opposée. L’ajouter reviendrait à effectuer une montée de gradient, ce qui est précisément le but lorsqu’on maximise un objectif au lieu de minimiser une erreur.

Quelle différence entre descente de gradient par lots, stochastique et par mini-lots ?

La version par lots calcule le gradient sur l’ensemble des données à chaque pas : précise mais lente. La version stochastique n’utilise qu’un seul exemple par pas : rapide mais très bruitée. Les mini-lots, typiquement de quelques dizaines à quelques centaines d’exemples, se situent entre les deux et constituent l’usage réel en apprentissage profond.

La descente de gradient reste-t-elle bloquée dans des minima locaux ?

Moins que ne le suggère l’intuition tirée des figures en basse dimension. Dans des espaces de paramètres de très grande dimension, les points-selles sont bien plus fréquents que les mauvais minima locaux, et le bruit des gradients par mini-lots aide la trajectoire à s’en éloigner.

En résumé

La descente de gradient est le moteur de presque tout ajustement de modèle moderne : mesurer la pente de l’erreur, avancer vers le bas, recommencer. Sa simplicité lui permet de passer à l’échelle sur d’énormes modèles, et ses deux difficultés persistantes, le choix du taux d’apprentissage et la géométrie ingrate de la perte, sont ce que la littérature sur les optimiseurs cherche à résoudre.