La descente en gradient est sans doute la stratégie d’optimisation la plus reconnue utilisée dans l’apprentissage en profondeur et l’apprentissage machine. Les spécialistes des données l’utilisent souvent lorsqu’il y a une chance de combiner chaque algorithme avec des modèles d’apprentissage. La compréhension de l’algorithme de descente de gradient est relativement simple, et sa mise en œuvre l’est encore plus. Examinons le fonctionnement interne de la descente de gradient, ses différents types et ses avantages.

Qu’est-ce que la descente en gradient ?

Les programmeurs utilisent la descente de gradient comme algorithme d’optimisation lorsqu’ils forment des modèles d’apprentissage automatique. Basée sur des fonctions convexes, la descente de gradient ajuste itérativement certains de ses paramètres pour réduire au minimum une fonction particulière.
Les scientifiques utilisent la descente de gradient pour trouver les valeurs des paramètres d’une fonction qui réduisent le plus possible les coûts des fonctions. Ils commencent par établir les valeurs du paramètre de départ. La descente de gradient utilise le calcul pour ajuster itérativement les valeurs afin de minimiser une fonction de coût spécifique. Vous devez savoir ce que sont les gradients pour comprendre pleinement la descente de gradient.

Comprendre le gradient

La fonction première d’un gradient est de mesurer les variations de chaque poids par rapport à la variation des erreurs. Considérez les gradients comme la pente d’une fonction. La pente sera plus raide en fonction de la hauteur du gradient – c’est une condition favorable pour les modèles car ils peuvent apprendre rapidement. Cependant, le modèle cessera d’apprendre si la pente devient nulle. Mathématiquement parlant, un gradient pourrait être décrit comme une dérivée limitée par rapport à ses entrées.
Pensez à une personne aux yeux bandés qui veut gravir le sommet d’une colline avec un minimum d’effort. Il fera très probablement de longs pas vers la direction la plus raide possible. Cependant, les pas de cette personne deviendront plus petits pour éviter les dépassements. Vous pouvez utiliser le gradient pour décrire ce processus mathématiquement.
Les gradients commençant à X0 et se terminant à X1 sont sensiblement plus longs que ceux commençant à X3 et se terminant à X4. Pourquoi ? Parce que la pente/la raideur de la colline détermine la longueur du vecteur. Elle fournit une représentation idéale de l’analogie de la colline dont nous avons parlé plus haut, car elle devient moins raide à mesure que la personne monte plus haut.

Comment fonctionne la descente en pente ?

Plutôt que de monter une colline, imaginez que la descente d’une pente se fait vers le fond d’une vallée. La compréhension de cette analogie est plus simple, car il s’agit d’un algorithme de minimisation qui diminue une fonction spécifique. Comprenons la descente de pente à l’aide d’une équation :
b représente la prochaine position du grimpeur
a signifie sa position actuelle
Le moins fait référence à la partie de minimisation de la descente de la pente
Le gamma situé dans le centre représente un facteur d’attente
(Δf (a) ) signifie la direction de la descente la plus raide

Cette formule peut vous paraître confuse au départ, mais elle est plus simple que vous ne le pensez. Elle nous informe de la prochaine position que nous devons prendre : la direction de la descente.

Pourquoi le taux d’apprentissage est-il si important ?

Il est essentiel de fixer les taux d’apprentissage à des valeurs appropriées pour aider la descente des pentes à atteindre les minimums locaux. Il serait donc préférable de ne pas les fixer à des valeurs trop élevées ou trop basses. C’est essentiel car atteindre le minimum pourrait devenir compliqué avec des étapes trop longues. Par conséquent, si nous fixons les taux d’apprentissage à des valeurs plus faibles, la descente du gradient pourrait finir par atteindre ses minimums locaux. Cependant, cela peut prendre un certain temps.

Comment garantir un fonctionnement optimal

Un excellent moyen d’assurer le fonctionnement optimal de la descente de pente est d’organiser la fonction de coût pendant que l’optimisation est en cours. Entrez le nombre de répétitions sur l’axe X, et la valeur de la fonction de coût entrera sur l’axe Y. Cela vous aidera à voir la valeur de la fonction de coût après chaque itération de descente de gradient tout en vous permettant de repérer la précision du taux d’apprentissage. Vous pouvez également essayer différentes valeurs et les tracer ensemble.
La fonction de coût diminuera après chaque itération si la descente du gradient fonctionne de manière optimale. La descente de gradient converge lorsqu’elle ne parvient pas à réduire la fonction de coût et reste au même niveau. Le nombre d’itérations nécessaires à la descente de gradient pour la convergence varie considérablement. Parfois, il faut cinquante itérations, et d’autres fois, cela peut aller jusqu’à deux ou trois millions. Il est difficile d’estimer le nombre d’itérations à l’avance.
Certains algorithmes peuvent vous informer automatiquement s’il y a eu une convergence dans la descente de gradient. Cependant, il serait préférable d’établir un seuil de convergence à l’avance, qui est également assez difficile à estimer. C’est une raison importante pour laquelle les tracés simples sont les meilleurs pour les tests de convergence.

Différents types de descente de gradient

Vous trouverez trois types de descente bien connus. Examinons-les de près :

Descente en gradient par lots

Également connue sous le nom de descente de gradient vanille, la descente de gradient par lot calcule les erreurs pour chaque exemple de l’ensemble de données de formation. Cependant, elle ne le fait qu’après que chaque exemple de formation ait fait l’objet d’une évaluation rigoureuse. Il est juste de comparer ce processus à un cycle. Certaines personnes parlent également d’une époque de formation.
La descente par lots présente plusieurs avantages. Son efficacité de calcul, en particulier, est extrêmement pratique car elle développe une convergence stable et un gradient d’erreur stable. Cela dit, la descente de gradient par lots présente également quelques inconvénients. Parfois, son gradient d’erreur stable peut entraîner un état de convergence défavorable. En outre, il a également besoin de la présence de l’ensemble de données d’entraînement dans son algorithme et sa mémoire.

Descente de gradient stochastique

Le SGD fournit des mises à jour des paramètres individuels pour chaque exemple de formation. Il permet de prêter attention à chaque exemple, en s’assurant que le processus est exempt d’erreurs. Selon le problème, cela peut aider le SGD à devenir plus rapide par rapport à la descente de gradient par lots. Ses mises à jour régulières nous fournissent des taux d’amélioration détaillés.
Cela dit, ces mises à jour sont coûteuses en termes de calcul, surtout si on les compare à l’approche utilisée par la descente par paliers. De plus, la fréquence des mises à jour peut provoquer des gradients bruyants et pourrait empêcher le taux d’erreur de diminuer. Au lieu de cela, le taux d’erreur saute et devient problématique à long terme.

Mini-décroissance par lots

Les scientifiques utilisent la descente en gradient par mini lots comme méthode de départ. Pourquoi ? Parce que c’est un mélange parfait des concepts de descente stochastique et de descente par lots. Elle divise les ensembles de données (formation) en lots et effectue une mise à jour pour chaque lot, créant ainsi un équilibre entre l’efficacité de la DPBG et la robustesse de la CDD.
Les mini-batchs populaires varient entre cinquante et deux cent cinquante-six, mais comme plusieurs autres méthodes d’apprentissage machine, il n’y a pas de règles claires car cela varie d’une application à l’autre. Les gens l’utilisent comme une option de base pour la formation des réseaux neuronaux. C’est également un type de descente en pente populaire dans le paysage de l’apprentissage profond.