Suivez nous sur

Qu'est-ce que la descente de gradient ?

AI 101

Qu'est-ce que la descente de gradient ?

mm
Le kit de préparation mis à jour on

Qu'est-ce qu'une descente en dégradé ?

Si vous avez lu des informations sur la façon dont les rĂ©seaux neuronaux sont entraĂźnĂ©s, vous avez certainement dĂ©jĂ  rencontrĂ© le terme « descente de gradient ». Descente graduelle est la principale mĂ©thode d'optimisation des performances d'un rĂ©seau neuronal, rĂ©duisant ainsi le taux de perte/erreur du rĂ©seau. Cependant, la descente de gradient peut ĂȘtre un peu difficile Ă  comprendre pour ceux qui dĂ©couvrent l'apprentissage automatique, et cet article s'efforcera de vous donner une intuition dĂ©cente du fonctionnement de la descente de gradient.

La descente de gradient est un algorithme d'optimisation. Il est utilisé pour améliorer les performances d'un réseau de neurones en ajustant les paramÚtres du réseau de sorte que la différence entre les prédictions du réseau et les valeurs réelles/attendues du réseau (appelées perte) soit la plus petite 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 fonctionne la descente de gradient, mais vous devez avoir une compréhension des gradients.

Que sont les dĂ©gradĂ©s ?

Supposons qu'il existe un graphique qui reprĂ©sente la quantitĂ© d'erreurs commises par un rĂ©seau de neurones. Le bas du graphique reprĂ©sente les points oĂč l'erreur est la plus faible tandis que le haut du graphique correspond Ă  l'endroit oĂč l'erreur est la plus Ă©levĂ©e. Nous voulons nous dĂ©placer du haut du graphique vers le bas. Un gradient n'est qu'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 reprĂ©sentĂ© graphiquement comme une pente, avec des poids incorrects produisant plus d'erreurs. La pente de la pente/gradient reprĂ©sente la vitesse d'apprentissage du modĂšle.

Une pente plus raide 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. On peut descendre la pente vers moins d'erreur en calculant un gradient, un sens de déplacement (changement des paramÚtres du réseau) pour notre modÚle.

DĂ©plaçons lĂ©gĂšrement la mĂ©taphore et imaginons une sĂ©rie de collines et de vallĂ©es. Nous voulons arriver au 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 descendre la colline Ă  grands pas et ĂȘtre sĂ»rs que nous nous dirigeons vers le point le plus bas de la vallĂ©e.

Cependant, Ă  mesure que nous nous rapprochons du point le plus bas de la vallĂ©e, nos pas devront devenir plus petits, sinon nous pourrions dĂ©passer le vĂ©ritable point le plus bas. De mĂȘme, il est possible que lors de l'ajustement des pondĂ©rations du rĂ©seau, les ajustements puissent en fait l'Ă©loigner du point de perte le plus faible, et donc les ajustements doivent diminuer avec le temps. Dans le contexte de la descente d'une colline vers un point de plus faible perte, le gradient est un vecteur/instructions dĂ©taillant le chemin que nous devons emprunter et la largeur de nos pas.

Maintenant que nous savons que les gradients sont des instructions qui nous indiquent dans quelle direction se dĂ©placer (quels coefficients doivent ĂȘtre mis Ă  jour) et quelle est la taille des pas que nous devons prendre (de combien les coefficients doivent ĂȘtre mis Ă  jour), nous pouvons explorer comment le gradient est calculĂ©.

Calcul des dégradés et descente de dégradé

La descente de gradient commence Ă  un endroit de perte Ă©levĂ©e et, Ă  travers de multiples itĂ©rations, prend des mesures dans la direction de la perte la plus faible, dans le but de 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 une descente de gradient, les gradients doivent d'abord ĂȘtre calculĂ©s. En ordre calculer la pente, nous devons connaĂźtre la fonction perte/coĂ»t. Nous utiliserons la fonction de coĂ»t pour dĂ©terminer la dĂ©rivĂ©e. En calcul diffĂ©rentiel et intĂ©gral, la dĂ©rivĂ©e dĂ©signe simplement la pente d'une fonction en un point donnĂ© ; nous calculons donc simplement la pente de la pente Ă  partir de la fonction de perte. Nous dĂ©terminons la perte en appliquant les coefficients Ă  la fonction de perte. Si nous reprĂ©sentons la fonction de perte par « f Â», nous pouvons alors affirmer que l'Ă©quation de calcul de la perte est la suivante (nous exĂ©cutons simplement les coefficients Ă  la fonction de coĂ»t choisie) :

Perte = f(coefficient)

Nous calculons ensuite la dérivée, ou déterminons la pente. Obtenir la dérivée de la perte nous indiquera dans quelle direction est vers le haut ou vers le bas la pente, en nous donnant le signe approprié pour ajuster nos coefficients. Nous représenterons la direction appropriée par "delta".

delta = fonction_dérivé(perte)

Nous avons maintenant déterminé quelle direction descend vers le point de perte la plus faible. Cela signifie que nous pouvons mettre à jour les coefficients dans les paramÚtres du réseau neuronal et, espérons-le, réduire la perte. Nous mettrons à jour les coefficients en fonction des coefficients précédents moins le changement de valeur approprié tel que déterminé par la direction (delta) et un argument qui contrÎle l'ampleur du changement (la taille de notre pas). L'argument qui contrÎle la taille de la mise à jour est appelé "taux d'apprentissage" et nous le représenterons par " alpha ".

coefficient = coefficient – ​​(alpha * delta)

Nous rĂ©pĂ©tons ensuite ce processus jusqu'Ă  ce que le rĂ©seau ait convergĂ© autour du point de perte la 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 ne doit ĂȘtre ni trop petit ni trop grand. Rappelez-vous qu'Ă  mesure que nous approchons du point de perte la plus faible, nos pas doivent devenir plus petits, sinon nous dĂ©passerons le vĂ©ritable point de perte la plus faible et finirons de l'autre cĂŽtĂ©. Le point de plus petite perte est petit et si notre taux de variation est trop important, l'erreur peut finir par augmenter Ă  nouveau. Si les tailles de pas sont trop grandes, les performances du rĂ©seau continueront de rebondir autour du point de perte la 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 vĂ©ritable configuration de poids optimale.

En revanche, si le taux d'apprentissage est trop faible, le réseau peut potentiellement prendre un temps extraordinairement long pour converger vers les poids optimaux.

Types de descente de gradient

Maintenant que nous comprenons comment fonctionne la descente de gradient en général, examinons quelques-unes des différentes types de descente de gradient.

Descente de gradient par lots : cette forme de descente de gradient parcourt tous les Ă©chantillons d'apprentissage avant de mettre Ă  jour les coefficients. Ce type de descente de gradient est probablement la forme de descente de gradient la plus efficace en termes de calcul, car les poids ne sont mis Ă  jour qu'une fois que l'ensemble du lot a Ă©tĂ© traitĂ©, ce qui signifie qu'il y a moins de mises Ă  jour au total. Cependant, si l'ensemble de donnĂ©es contient un grand nombre d'exemples d'apprentissage, la descente de gradient par lots peut rendre l'apprentissage plus long.

Descente de gradient stochastique : dans la descente de gradient stochastique, un seul exemple d'apprentissage est traitĂ© pour chaque itĂ©ration de descente de gradient et de mise Ă  jour des paramĂštres. Cela se produit pour chaque exemple de formation. Étant donnĂ© qu'un seul exemple d'apprentissage est traitĂ© avant la mise Ă  jour des paramĂštres, il a tendance Ă  converger plus rapidement que Batch Gradient Descent, car les mises Ă  jour sont effectuĂ©es plus tĂŽt. Cependant, Ă©tant donnĂ© que le processus doit ĂȘtre effectuĂ© sur chaque Ă©lĂ©ment de l'ensemble d'apprentissage, il peut prendre beaucoup de temps si l'ensemble de donnĂ©es est volumineux, et donc l'utilisation de l'un des autres types de descente de gradient si vous prĂ©fĂ©rez.

Descente de gradient en mini-lot : La descente de gradient en mini-lot fonctionne en divisant l'ensemble des données d'apprentissage en sous-sections. Il crée des mini-lots plus petits qui sont exécutés sur le réseau, et lorsque le mini-lot a été utilisé pour calculer l'erreur, les coefficients sont mis à jour. La descente de gradient en mini-lots trouve un terrain d'entente entre la descente de gradient stochastique et la descente de gradient par lots. Le modÚle est mis à jour plus fréquemment que dans le cas de Batch Gradient Descent, ce qui signifie une convergence légÚrement plus rapide et plus robuste sur les paramÚtres optimaux du modÚle. Il est également plus efficace en termes de calcul que Stochastic Gradient Descent