Si vous vous intéressez au domaine du machine learning (apprentissage automatique en français), vous avez sûrement déjà entendu parler de l’algorithme de descente de gradient. Et pour cause, il est au cœur même de quelques avancées majeures dans ce domaine.
C’est grâce à cette technique d’optimisation numérique que les modèles d’apprentissage peuvent faire des prédictions très précises ou encore ajuster automatiquement leurs paramètres pour réaliser des tâches spécifiques et complexes.
Il peut être intéressant de s’intéresser à l’algorithme de descente de gradient si vous souhaitez maîtriser les ficelles du machine learning ou peut-être contribuer à la mise en place de modèles d’intelligence artificielle vu son importance. Alors, qu’est-ce que c’est réellement ? Comment fonctionne-t-il ? Ou encore, à quoi sert-il ?
Découvrez dans cet article tout ce qu’il y a à savoir sur l’algorithme de descente de gradient en machine learning !
Qu’est-ce qu’un algorithme de descente de gradient ?
L’algorithme de descente de gradient, nous l’avons dit, est un algorithme d’optimisation numérique. Les algorithmes d’optimisation numérique, pour information, sont un type particulier d’algorithme qui aident les ordinateurs à trouver la meilleure solution possible à un problème donné.
L’algorithme de descente de gradient en ce qui le concerne permet de trouver le minimum de n’importe quelle fonction convexe. Il s’agit d’une fonction qui a la forme un arc orienté vers le haut et qui converge vers en un seul point et donc vers un seul minimum.
En machine learning, on va se servir de cet algorithme dans les problèmes d’apprentissage supervisé pour trouver le minimum de la fonction coût, qui justement est une fonction convexe.
L’objectif fondamental de l’algorithme de descente de gradient va être d’optimiser les paramètres d’un modèle d’apprentissage pour obtenir les meilleures prédictions possibles en minimisant l’erreur ou bien le coût associé.
À quoi sert la descente de gradient ?
La descente de gradient intervient précisément dans l’entraînement des réseaux de neurones et des modèles d’apprentissage automatique et permet de réaliser les tâches suivantes :
- Réglage des paramètres des modèles d’apprentissage automatique pour qu’ils puissent faire des prédictions plus précises.
- Entraînement des réseaux de neurones à partir des données d’entraînement pour qu’ils puissent réaliser des tâches spécifiques, comme la prédiction, la détection d’anomalies, la correction d’erreurs, la classification d’images, la modélisation de données complexes et plus encore.
- Conduite du processus d’apprentissage afin d’obtenir des résultats plus précis.
- Adapter les modèles aux nouvelles données et situations.
Un réseau de neurones artificiels, ou réseau neuronal artificiel, pour information, est un ensemble organisé de neurones interconnectés. Sa conception est inspirée du fonctionnement des neurones biologiques et il permet de résoudre des problèmes complexes tels que le traitement du langage naturel.
Comment fonctionne l’algorithme de descente de gradient ?
Imaginez que vous soyez perdu en pleine montagne. Votre but est de rejoindre le refuge qui se situe au point le plus bas dans la vallée dans laquelle vous vous situez. Le problème est que vous n’avez pas pris de carte avec vous. Vous ignorez donc complètement les coordonnées de ce refuge.
Vous allez devoir vous débrouiller tout seul donc, mais il existe toutefois une stratégie qui va vous permettre de vous en sortir. Depuis votre position initiale, vous allez chercher tout autour de vous, sur 360°, la direction de l’endroit où la pente descend le plus fort. Une fois que vous trouvez cette direction vous la suivez pendant une certaine distance, mettons 300m, sans vous arrêter.
Et une fois arrivé à ces 300m, vous recommencez le même procédé. Vous recherchez sur 360° l’endroit où la pente descend le plus fort, puis vous marchez 300 m dans cette direction. En adoptant cette méthode, vous finirez par converger vers le point le plus bas de votre vallée et trouverez votre refuge. On vient d’expliquer là le fonctionnement de l’algorithme de la descente de gradient !
Ces petits pas dans la direction qui vous fait descendre plus rapidement sont similaires aux ajustements que les ordinateurs font lorsqu’ils essaient d’apprendre à partir de données. Dans le monde de l’informatique, une « pente » est en réalité une mesure de la façon dont votre modèle (ou programme) se trompe dans ses prédictions par rapport à la réalité.
L’algorithme de descente de gradient va alors guider le modèle pour qu’il fasse des ajustements de manière à se rapprocher de prédictions plus précises au fil du temps.
Quels sont les différents types de descente de gradient ?
En tout, il existe trois types d’algorithmes d’apprentissage par descente de gradient : la descente de gradient par lots, la descente de gradient stochastique et enfin la descente de gradient par mini-lots.
➡️ La descente de gradient par lots (batch). La descente en gradient par lots procède en traitant l’ensemble des données d’entraînement à chaque itération. Cela signifie qu’elle ne divise pas les données en mini-lots ou bien les traiter un à un, mais va plutôt utiliser l’ensemble des données d’entraînement à chaque itération. Elle est plus stable, car le gradient est calculé sur l’ensemble des données. En revanche, elle présente l’inconvénient d’être plus lente sur de grands ensembles de données en raison du calcul complet du gradient qui peut prendre du temps.
➡️ La descente de gradient stochastique. Cette variante de l’algorithme de descente de gradient traite un seul exemple de données à la fois lors de chaque itération. On préfère cette approche aux deux autres pour sa capacité à traiter plus efficacement des ensembles de données volumineux étant donné que le calcul du gradient ne concerne qu’un exemple à la fois. Toutefois, elle présente l’inconvénient de présenter des mises à jour plus bruitées. Cela s’explique par la variabilité introduite par les exemples individuels.
➡️ La descente de gradient par mini-lots. Avec cette approche, les données sont divisées en petits groupes appelés lots (ou mini-lots). L’algorithme utilise ces lots pour calculer le gradient et mettre à jour les paramètres du modèle. Elle a l’avantage d’être plus rapide que la méthode de la descente par lots, car à chaque itération un sous-ensemble seulement des données est traité. Toutefois, notez qu’elle n’est pas aussi rapide que la descente stochastique vu qu’elle doit encore traiter des mini-lots.
Défis rencontrés dans l’exécution de la descente de gradient
L’exécution de la descente de gradient s’accompagne de quelques défis. Des défis qui soulignent finalement la complexité inhérente à l’optimisation des modèles. Et cette complexité serait plus importante dans les domaines de l’apprentissage automatique que dans les autres domaines qui utilisent l’algorithme de la descente de gradient selon les experts.
Voici les défis en question :
- L’absence de solution universelle pour tous les problèmes. Ce serait facile pour tout le monde s’il existait des paramètres qui permettraient de résoudre facilement tous les problèmes. Malheureusement, ce n’est pas le cas. À chaque nouveau problème, il faudra trouver les bons paramètres par itération.
- Les performances de l’algorithme dépendent fortement de la qualité des données d’entraînement. Pour faire simple, si les données d’entraînement sont mal prétraitées ou non représentatives, les résultats finaux pourraient ne pas être bons.
L’efficacité des calculs dépend des ressources informatiques. Si les ressources informatiques sont insuffisantes pour effectuer les calculs itératifs de manière efficace, l’optimisation peut ne pas être atteinte.