23 Sous le capot des algorithmes de Machine Learning IV: La descente de gradient illustrée - Blog Nexeo
Technologies/IT

Sous le capot des algorithmes de Machine Learning IV: La descente de gradient illustrée

18 octobre 2019

“En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que ça marche.”

[Proverbe Shadok]

 

On va maintenant s’intéresser à la reconnaissance de chiffres manuscrits avec le modèle des articles précédents.

 

Chaque chiffre est une image, que l’on peut représenter par une série de 784 pixels. En gros, on peut décrire un chiffre par un vecteur d’observations de 784 coordonnées.

Chacune de ces coordonnées est un niveau d’intensité de noir, plus il est sombre, plus sa valeur est élevée.

 

Le modèle

On souhaite donc obtenir un modèle qui va “reconnaitre” ces chiffres. Plus précisément, on va reconnaître un chiffre versus tous les autres.

Par exemple : on veut prédire si le chiffre présenté est un 0 ou pas 0.

 

De la même manière que le velcro s’inspire d’une plante observée dans la nature, le modèle que nous allons utiliser s’inspire de la nature et plus précisément du neurone.

(Modèle de neurone biologique)

 

Un neurone reçoit des signaux électriques d’intensités différentes au niveau des ses synapses et en fait la “ somme “. Pourvu que cette somme soit suffisamment “grande” le neurone s’active et renvoie un signal.

Sinon, il ne renvoie rien.

 

De manière similaire, on pourrait proposer le modèle suivant:

On prend chaque coordonnée et on lui associe un poids (correspondant à l’intensité), un niveau d’importance.

On fait la somme de ces coordonnées multipliées par leurs poids associés (la somme) auquel on ajoute un nombre, le biais.

Ce dernier permet de mieux ajuster le modèle: en effet, on autorise le modèle à ne pas entièrement dépendre de ce qu’il reçoit mais également d’un biais.

 

Si cette somme est positive, on prédit que c’est bien un 0 (le neurone s’active), sinon on prédit que c’est un autre chiffre (le neurone ne s’active pas).

L’activation correspond au renvoi d’un 1 par le neurone.

L’absence d’activation correspond au renvoi d’un -1 par le neurone.

 

On souhaite donc que le neurone envoie un 1 lorsqu’il voit une image de 0 et qu’il envoie 0 s’il voit une image d’un autre chiffre.

(Perceptron)

On appelle ce modèle le perceptron. C’est le “Hello World” des réseaux de neurones!

 

Maintenant il faut faire apprendre à ce perceptron la reconnaissance de chiffres.

En l’occurrence, que signifie faire apprendre ?

L’Homme apprend sur la répétition d’expériences ; à force d’essais, nos neurones “s’ajustent”, créent / défont des liens entre eux de manière à parvenir au résultat désiré.

 

Cet ajustement des paramètres du modèle (poids des connexions et du biais) se fait par la minimisation d’une fonction de coût qui dépend de ces paramètres.

 

 

Choix d’une fonction de perte et relaxation

Un premier choix naturel de fonction de perte est la 0-1 Loss:

C’est la mesure l’écart entre la prédiction et la valeur réelle.

Y correspond au cas où la prédiction est correcte, le neurone s’active et le chiffre présenté est bien un 0 ou au contraire, le neurone n’est pas activé et le chiffre présenté n’est en effet pas un 0.

Y correspond au cas où la prédiction est incorrecte, le neurone s’active et le chiffre présenté n’est pas un 0 ou au contraire, le neurone ne s’est pas activé, alors qu’il le devrait.

 

Problème, en 0 la 0-1 loss présente un problème de différentiabilité en 0 (on ne peut utiliser l’algorithme de descente de gradient stochastique vu précédemment).

Une manière de simplifier le problème est de modifier la fonction de perte. On appelle cela la relaxation du problème.

La fonction que l’on va donc utiliser est la hinge loss:

0-1 Loss et Hinge Loss

 

Maintenant que l’on dispose de notre fonction de perte à minimiser, il ne reste plus qu’à utiliser notre algorithme de descente de gradient stochastique pour trouver les poids et le biais optimaux de notre perceptron !

 

Descente de gradient stochastique

Résultats et illustrations

 

Dans l’illustration ci-dessus, on a représenté les poids associés à chaque pixel des images en nuances de gris.

Ainsi, plus le poids est important, plus le pixel apparaît blanc, au contraire, moins il est important, plus il apparaît noir.

 

Au fur et à mesure des itérations (l’algorithme “voit” des chiffres écrits) un 0 se dessine en blanc (ce sont ces pixels qui ont des poids associés élevés qui définissent le chiffre 0)

 

Au départ, l’algorithme propose un modèle qui se trompe souvent, et puis petit à petit, il “apprend” le concept du 0 et finit par ne plus se tromper :

 

Retrouvez le dernier article de cette série la semaine prochaine ! Je vous parlerai de la reconnaissance des schémas de Ponzis.

 

Ajouter un commentaire


Votre commentaire sera modifié par le site si besoin.

À lire également

On a précédemment vu un modèle simple de neurone, permettant de reconnaître des chiffres. À présent, plutôt…

“En essayant continuellement on finit par réussir. Donc: plus ça rate, plus on a de chance que…

“Quand on ne sait pas où l’on va, il faut y aller… Et le plus vite possible.”…