Traitement d'une image par un réseau de neurones, modèle du perceptron
Le perceptron est pensé comme un modèle pour un seul neurone, qui reçoit une certaine entrée et réagit en fonction de cette entrée. Ici, l'entrée est une image, donc conceptuellement le neurone reçoit l'information d'autres neurones spécialisés de la rétine.
Chargement et représentation des images
Chaque image compte 50 * 50 pixels
On commence par quelques fonctions pour charger et tracer les images
Création de l'ensemble d'entrainement
On veut créer un neurone qui donne +1 lorsqu'on lui donne A et -1 lorsqu'on lui donne B.
On commence par collecter tous les A et tous les B qui vont servir d'exemple, puis on leur donne le score correspondant.
Si on veut voir toutes les images dans l'ensemble d'entrainement, on peut le faire comme ça:
Traitement de l'image par le neurone
Le neurone prend l'image sous la forme d'un vecteur en entrée, le multiplie par ses poids et regarde le signe du résultat.
L'image d'entrée est bicolore, formée de 50 pixels. On peut donc représenter l'image par des 0 et des 1 pour chacune des couleurs, on peut la transformer en un vecteur de taille 2500 contenant des 0 et des 1.
Si on appelle le vecteur d'exemple, les poids du neurone, et le résultat du traitement, alors le traitement de l'image par le neurone peut s'écrire en équations:
On peut voir qu'en donnant des poids aléatoires positifs ou négatifs, on obtient une réponse différente lorsque le neurone traite l'image.
Entrainement du neurone
On rappelle les étapes principales:
On commence par choisir des poids initiaux au hasard
Pour chaque exemple de notre ensemble d'entrainement:
on calcule le score prédit étant donné les poids actuels, le score qu'on aurait du trouver et l'erreur qui est la différence entre ces deux grandeurs
On met à jour les poids: nouveaux poids = poids actuels + erreur * entrée,
Et on recommence
Soit en équations:
Si les poids actuels sont , les poids mis à jour , le score de l'exemple est , la prédiction du neurone et l'exemple vectorisé est sous la forme , alors:
Quand s'arreter ?
Un critère peut etre de regarder quand le neurone cesse de progresser, c'est à dire que les erreurs qu'il fait cessent de diminuer.
Test de notre fonction
Maintenant une fonction pour tout l'apprentissage, on part d'un exemple aléatoire et on fait un nombre donné d'itérations. En sortie on obtiendra les poids finaux et l'évolution de l'erreur
Comment s'est passé l'apprentissage ?
On voit qu'après 20 itérations le système a fini d'évoluer.
Quel est maintenant le résultat de l'entrainement ? On peut regarder les poids finaux du neurone:
Qu'en pensez-vous ?
Test de reconnaissance d'image
Essayez de dessiner une image qui va donner un A, et une image qui va donner un B