Pour les Réseaux de Neurones, selon leur type et ce à quoi ils sont destinés, il existe plusieurs types d’apprentissage. Le modèle prédominant est l’apprentissage supervisé car il s’applique aussi bien à la séparation de classes (discrimination d’objets selon certains paramètres) qu’à la régression (trouver la fonction représentant le mieux un groupe d’objets) qui sont les usages les plus fréquents des réseaux de neurones.
Dans ce mode d’apprentissage, on fournit au réseau un jeu de test (une série d’exemples), qu’il utilise pour adapter ses paramètres. Il pourra ensuite, en utilisant ses paramètres « adaptés », effectuer des prédictions sur de nouveaux objets.
Mesurer l’erreur de façon continue, dérivable et convexe
Mais pour que cela fonctionne, il ne faut pas simplement pouvoir dire si le résultat proposé par le modèle est juste ou faux, il faut pouvoir faire une évaluation chiffrée de son degré d’erreur à l’aide d’une fonction continue, dérivable et si possible convexe (c.a.d. avec un seul minimum).
Dans notre exemple, nous utilisons la « Distance Moyenne » dont le graphe est une magnifique parabole parfaitement continue, dérivable et convexe , bref une fonction d’erreur parfaite !
Cette fonction d’erreur fait partie de la catégorie des fonctions d’erreur quadratique largement utilisées dans la résolution de problèmes de régression.
Pour la séparation de classe, on utilise plutôt des fonctions d’erreur de type « SoftMax » dont la formule est un peu plus complexe mais dont la convergence est également très bonne.
Le choix d’une fonction d’erreur représentative des données étudiées est essentielle à la qualité du réseau de neurones et, dans un espace de grande dimension, démontrer des propriétés comme la continuité, la dérivabilité et la convexité d’une fonction n’est pas si simple !
Cette question des fonctions d’erreur est un important sujet de recherche mathématique.
Le gradient en grandes dimensions
Vous aurez deviné que, dans un espace à deux dimensions, le gradient est tout simplement la dérivée de la fonction d’erreur.
Mais dans un espace à 3 dimensions ou plus, la tangente de la fonction en un point n’est plus une droite mais un plan (ou plutôt un hyperplan) et, dans ce cas, il y a autant de dérivées partielles que de dimensions dans l’espace en question.
On appelle alors « gradient » la matrice des dérivées partielles dans chacune des dimensions et « vecteur gradient » la combinaison linéaire de toutes ces dérivées partielles. Ce « vecteur gradient » pointe dans la direction de la plus forte pente et sa valeur absolue représente son angle d’inclinaison.
Pour illustrer mon propos, prenons l’analogie avec la randonnée : à l’endroit où se trouve le randonneur sur le flan d’une montagne, le vecteur gradient lui indique la direction de la montée la plus raide et la valeur de sa déclivité.
Ce sont cette matrice et ce vecteur qui vont nous intéresser dans une « descente de gradient multi-dimensionnelle ».
Attention au signe : Puisque le vecteur gradient pointe dans la direction de la montée et que nous souhaitons réduire l’erreur, nous devons faire évoluer nos paramètres dans le sens inverse du vecteur gradient. Donc, lorsqu’on indexe le pas d’évolution des paramètres du neurone, il faut bien penser à mettre un signe négatif sur la valeur absolue du gradient !
Alors, peut-être vous demandez-vous pourquoi je vous parle de multi-dimension, alors que deux voir trois dimensions semblent bien suffisantes pour nos problème du quotidien ? Et bien, tout simplement parce que, dans un réseau de neurones, chaque entrée représente une dimension et que leur nombre explose très vite.
Laissez moi prendre trois exemples pour vous donner une idée:
– Si vous souhaitez utiliser un réseau de neurone pour identifier une maladie à partir de ses symptômes, il vous faudra prendre en compte le poids et la taille du patient (axes X et Y), sa température (axe Z), son pouls et sa tension (+3 axes), … et vous vous retrouver très vite dans un espace de plusieurs dizaines de dimensions,
– Si maintenant vous voulez faire de la reconnaissance de caractères avec de petites images de 100px par 100px en noir et blanc, chaque pixel étant une dimension, vous voilà dans un espace à 10.000 dimensions,
– Enfin, si vous envoyez une image en haute définition à l’application « PlantNet » pour identifier une fleur que vous venez de voir le long d’un chemin, vous entrez dans un espace à 1920px par 1080px en 3 couleurs soit 6.220.800 dimensions !
Pourquoi et comment, dans ces environnements complexes, la descente de gradient continue-t-elle de converger alors que des milliers de minima locaux devraient la bloquer ? Cette question, sans réponse pour l’instant, est également un important sujet de recherche mathématique.
Pour aller au-delà :
Comme vous l’aurez compris, la descente de gradient est au cœur des réseaux de neurones et cache de nombreux détails d’une grande finesse.
Pour en poursuivre la découverte, je vous invite à lire le billet de blog concernant le « perceptron multi-couches » dans lequel j’aborde, entre autres, « la descente de gradient stochastique » et « la rétro-propagation du gradient » dans un réseau de neurones.