Deep Learning, comment un modèle apprend ? Partie 2 – Gradient

Dans l’article précédent, nous avons montrer comment notre modèle de Deep Learning utilise la loss function pour évaluer ses poids.

Dans cette 2ème partie nous allons détailler comment calculer le gradient pour optimiser les poids du modèle.

L’idéal avant de lire cet article est de comprendre la notion de tenseur.

C’est une notion importante dans le domaine du Deep Learning. Si vous voulez en savoir plus nous avons écrit un article à ce sujet.

Avec ce concept en mains, vous pourrez aisément comprendre ce qui suit 🙂

Photo by Soon Santos on Unsplash

Gradient

Dans la première partie, nous avons vu que pour optimiser un modèle il faut minimiser sa loss function et donc par corrélation optimiser ses poids.

Le problème qui se pose ici est de savoir:

  • Si l’on doit augmenter ou diminuer les poids
  • À quel point ces poids doivent être modifier.

Augmenter ou diminuer ? – Approximation Locale

Pour résoudre ce problème on va utiliser le gradient !

Le gradient est à une opération de tenseur ce que la dérivée est a une fonction.

On va donc prendre l’exemple d’une fonction et d’une dérivée pour bien comprendre le principe du gradient.

La dérivée nous permet de calculer l’approximation locale d’un point.

C’est grâce cette approximation locale que l’on peut savoir si x doit être augmenté ou diminué pour minimiser f(x).

Voilà, l’équation de l’approximation locale d’un point a:

Approximation de f(x) en a

L’approximation locale d’une fonction permet de décrire l’évolution d’une fonction f(x) au voisinage de x.

Ainsi, si l’on veut réduire/minimiser f(x), il suffit de déplacer x dans la direction opposé à la croissance de la droite obtenue par approximation.

En fait, on va simplement se diriger vers le sens descendant de la pente.

Un exemple d’approximation locale de la fonction sinus en x = 2.

  • Fonction sinus
  • Approximation en 2

Sur ce schéma, l’approximation en 2 est une droite croissante si l’on se dirige à gauche du graphique.

On doit donc prendre la direction inverse.

Effectivement, f(x) est au minimum lorsque x = 5. Si l’on commence à x = 2, il faut donc se déplacer vers la droite, c’est-à-dire augmenter la valeur de x, pour minimiser f(x).

Grâce à l’approximation locale on détermine s’il faut augmenter ou réduire x. Mais il nous faut encore savoir

À quel point le modifier ? – Descente de Gradient

Certes, dans notre exemple, il faut déplacer x vers la droite pour se rapprocher du minimum de f(x) mais nombre d’entre vous auront remarqué que s’il on augmente trop x on peut dépasser, distancer le minimum de f(x).


CRÉER TON APPLICATION IA !

Reçois tes 5 JOURS De Formation GRATUITE Pour Apprendre À Créer Ton APPLICATION d’INTELLIGENCE ARTIFICIELLE !

Tous les fondamentaux de la création d’Application IA : les approches, les outils et techniques, les librairies et framework, et bien d'autres ! Découvres étape par étape la création d’application de Deep Learning (tu apprendras même à trouver des idées d’appli !). En bonus, tu recevras notre Guide Ultime du Deep Learning !


Si l’on augmente la valeur de x à x = 8 on se retrouve avec une valeur de f(x) supérieur à la valeur que l’on avait au début. Dans ce cas, on aura manqué notre optimisation.

C’est l’écueil qu’il faut éviter.

Optimiser nécessite d’être patient, ne pas viser la valeur optimal du premier coup. Il faut minimiser f(x) progressivement.

On va déplacer x graduellement vers le minimum et calculer l’approximation local après chaque déplacement. C’est ce qu’on appelle la descente de gradient.

De cette manière si on déplace x et qu’on se retrouve après le minimum de f(x) le calcul de l’approximation locale nous indiquera que l’on doit prendre la direction inverse pour se diriger à nouveau vers le minimum de f(x).

Pour effectuer la descente de gradient il faut déterminer deux paramètres :

  • le pas (ou learning rate), la valeur qu’on ajoute à x, c’est-à-dire la distance qu’on parcours lors d’un déplacement
  • le nombre d’itérations, le nombre de fois qu’on ajoute le pas à x, c’est-à-dire le nombre de fois que l’on déplace x

Il y a deux accrocs à éviter lors du choix des paramètres.

Si le pas est trop faible, la descente de gradient prendra de nombreuses itérations et il pourrait se bloquer dans un minimum local. Si le pas est trop grand, vos mises à jour peuvent finir par vous amener à des endroits complètement aléatoires de la courbe.

De même avec le nombre d’itérations, s’il est trop faible la descente de gradient n’aura pas le temps de se réaliser et le gradient ne sera pas optimiser. À l’inverse s’il est trop grand, cela rajoutera du temps aux calcul de l’optimisation du modèle et.. quand on fait du Deep Learning le temps est précieux.

Il est donc important de choisir des valeurs raisonnables pour ces deux paramètres afin qu’on optimise le calcul de la descente de gradient !

Backpropagation

Dans la pratique, une fonction de réseau de neurones est constituée de nombreuses opérations de tenseurs, chacune d’entre elles ayant une dérivée simple et connue.

Ces opérations de tenseurs sont composées, reliées entre elles pour former une fonction de réseau de neurones. C’est ce qu’on appelle une fonction composée.

Cette fonction composée peut être dérivée grâce à la règle de la chaîne. Il n’est pas nécessaire de connaître ce théorème pour comprendre ce qu’il se passe lors du Deep Learning mais pour les plus mathématiciens d’entre vous, il est expliqué sur cet article Wikipédia.

Appliquer la règle de la chaîne permet d’obtenir le gradient de la loss function par rapport à chaque poids. On calcule le gradient de chaque couche en commençant par la dernière couche et en finissant par la première. Cette application est appelée la Backpropagation.

Ainsi on peut calculer avec précision l’influence de chaque paramètre dans le résultat de la loss function et les modifier en conséquence.

Finalement, cela nous permet d’optimiser nos poids, minimiser la perte de la loss function et on peut enfin utiliser notre modèle de Deep Learning comme il se doit !

La Backpropagation se fait implicitement lors de l’entraînement d’un modèle et.. heureusement pour nous, il ne sera jamais nécessaire de l’implémenter !

On peut néanmoins implémenter un modèle typique de Deep Learning pour revoir concrètement les notions essentielles vu dans nos articles précédents.

C’est ce que je vous propose dans le prochain article ! 🙂

sources


CRÉER TON APPLICATION IA !

Reçois tes 5 JOURS De Formation GRATUITE Pour Apprendre À Créer Ton APPLICATION d’INTELLIGENCE ARTIFICIELLE !

Tous les fondamentaux de la création d’Application IA : les approches, les outils et techniques, les librairies et framework, et bien d'autres ! Découvres étape par étape la création d’application de Deep Learning (tu apprendras même à trouver des idées d’appli !). En bonus, tu recevras notre Guide Ultime du Deep Learning !


Tom Keldenich
Tom Keldenich

Data Engineer & passionné d'Intelligence Artificielle !

Fondateur du site Inside Machine Learning

Un commentaire

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.