IA 101
Qu’est-ce que la descente de gradient ?

Qu’est-ce que la descente de gradient ?
Si vous avez lu comment les réseaux de neurones sont formés, vous avez presque certainement rencontré le terme « descente de gradient » auparavant. La descente de gradient est la méthode principale d’optimisation des performances d’un réseau de neurones, en réduisant le taux d’erreur du réseau. Cependant, la descente de gradient peut être un peu difficile à comprendre pour ceux qui sont nouveaux dans l’apprentissage automatique, et cet article tentera de vous donner une intuition décente de la façon dont la descente de gradient fonctionne.
La descente de gradient est un algorithme d’optimisation. Il est utilisé pour améliorer les performances d’un réseau de neurones en apportant des ajustements aux paramètres du réseau de telle sorte que la différence entre les prévisions du réseau et les valeurs réelles/attendues du réseau (appelées perte) soit aussi petite que possible. La descente de gradient prend les valeurs initiales des paramètres et utilise des opérations basées sur le calcul pour ajuster leurs valeurs vers les valeurs qui rendront le réseau aussi précis que possible. Vous n’avez pas besoin de connaître beaucoup de calcul pour comprendre comment la descente de gradient fonctionne, mais vous devez avoir une compréhension des gradients.
Qu’est-ce qu’un gradient ?
Supposons qu’il y ait un graphique qui représente la quantité d’erreur qu’un réseau de neurones commet. Le bas du graphique représente les points d’erreur les plus faibles, tandis que le haut du graphique est où l’erreur est la plus élevée. Nous voulons nous déplacer du haut du graphique vers le bas. Un gradient est simplement un moyen de quantifier la relation entre l’erreur et les poids du réseau de neurones. La relation entre ces deux choses peut être graphiquée sous forme de pente, avec des poids incorrects produisant plus d’erreurs. La pente de la pente/gradient représente à quel point rapidement le modèle apprend.
Une pente plus abrupte signifie que de grandes réductions d’erreur sont réalisées et que le modèle apprend rapidement, alors que si la pente est nulle, le modèle est sur un plateau et n’apprend pas. Nous pouvons nous déplacer le long de la pente vers une erreur moindre en calculant un gradient, une direction de mouvement (changement dans les paramètres du réseau) pour notre modèle.
Imaginons que nous changeons légèrement la métaphore et que nous imaginons une série de collines et de vallées. Nous voulons atteindre le bas de la colline et trouver la partie de la vallée qui représente la perte la plus faible. Lorsque nous commençons au sommet de la colline, nous pouvons prendre de grandes étapes vers le bas de la colline et être confiants que nous nous dirigeons vers le point le plus bas de la vallée.
Cependant, à mesure que nous nous rapprochons du point de perte le plus faible, nos étapes devront devenir plus petites, sinon nous pourrions dépasser le point de perte le plus faible et nous retrouver de l’autre côté. De même, il est possible que, lors de l’ajustement des poids du réseau, les ajustements puissent en fait éloigner le réseau du point de perte le plus faible, et donc les ajustements doivent devenir plus petits avec le temps. Dans le contexte de la descente d’une colline vers un point de perte le plus faible, le gradient est un vecteur/instructions détaillant le chemin que nous devons prendre et à quel point grandes nos étapes devraient être.
Maintenant que nous savons que les gradients sont des instructions qui nous disent dans quelle direction nous devons nous déplacer (quels coefficients doivent être mis à jour) et à quel point grandes les étapes que nous devons prendre sont (à quel point les coefficients doivent être mis à jour), nous pouvons explorer comment le gradient est calculé.
Calcul des gradients et de la descente de gradient

La descente de gradient commence à un endroit de perte élevée et, à travers de multiples itérations, prend des étapes dans la direction de la perte la plus faible, visant à trouver la configuration de poids optimale. Photo : Роман Сузи via Wikimedia Commons, CCY BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Gradient_descent_method.png)
Pour effectuer la descente de gradient, les gradients doivent d’abord être calculés. Pour calculer le gradient, nous devons connaître la fonction de perte/coût. Nous allons utiliser la fonction de coût pour déterminer la dérivée. En calcul, la dérivée fait référence à la pente d’une fonction à un point donné, nous calculons donc essentiellement la pente de la colline en fonction de la fonction de perte. Nous déterminons la perte en faisant passer les coefficients à travers la fonction de perte. Si nous représentons la fonction de perte par « f », nous pouvons alors dire que l’équation pour calculer la perte est la suivante (nous faisons simplement passer les coefficients à travers notre fonction de coût choisie) :
Perte = f(coefficient)
Nous calculons ensuite la dérivée, ou déterminons la pente. L’obtention de la dérivée de la perte nous indique dans quelle direction est en bas de la pente, en nous donnant le signe approprié pour ajuster nos coefficients. Nous allons représenter la direction appropriée par « delta ».
delta = fonction_dérivée(perte)
Nous avons maintenant déterminé dans quelle direction est en bas de la pente vers le point de perte le plus faible. Cela signifie que nous pouvons mettre à jour les coefficients dans les paramètres du réseau de neurones et espérer réduire la perte. Nous allons mettre à jour les coefficients en fonction des coefficients précédents moins le changement approprié de valeur tel que déterminé par la direction (delta) et un argument qui contrôle la grandeur du changement (la taille de notre étape). L’argument qui contrôle la taille de la mise à jour est appelé « taux d’apprentissage » et nous allons le représenter par « alpha ».
coefficient = coefficient – (alpha * delta)
Nous répétons simplement ce processus jusqu’à ce que le réseau ait convergé vers le point de perte le plus faible, qui devrait être proche de zéro.
Il est très important de choisir la bonne valeur pour le taux d’apprentissage (alpha). Le taux d’apprentissage choisi doit être ni trop petit ni trop grand. Rappelez-vous que, à mesure que nous nous rapprochons du point de perte le plus faible, nos étapes doivent devenir plus petites, sinon nous pourrions dépasser le point de perte le plus faible et nous retrouver de l’autre côté. Le point de perte le plus faible est petit et si notre taux de changement est trop grand, l’erreur peut finir par augmenter à nouveau. Si les tailles d’étape sont trop grandes, les performances du réseau continueront à osciller autour du point de perte le plus faible, le dépassant d’un côté puis de l’autre. Si cela se produit, le réseau ne convergera jamais vers la configuration de poids optimale.
En revanche, si le taux d’apprentissage est trop petit, le réseau peut potentiellement prendre un temps extrêmement long pour converger vers les poids optimaux.
Types de descente de gradient
Maintenant que nous comprenons comment la descente de gradient fonctionne en général, jetons un coup d’œil à certains des types de descente de gradient.










