EihiS

December 28, 2016

Neural nets,bases en C, part 9 : Features

Filed under: linux, neuron — Tags: , , , , — admin @ 7:42 pm

## ajout, le 25-03-2017 : les images de ce post proviennent de programmes compilés avec mes librairies ‘maison’ qui utilisent la sdl2.0. pour faciliter les exemples dans les posts qui vont suivre bientôt, j’ai mis a disposition ces librairies , ‘telles qu’elles sont’ , dans le répertoire ‘DATA’ de ce site ( INDEX )

Je vous invite a lire cette page pour les utiliser

Ou on on ré-apprend à faire un dessin :

Si on devait décomposer l’original ( un carré ) en éléments, on peut rapidement discerner qu’il est composé de :

  • traits verticaux
  • traits horizontaux
  • et éventuellement, d’angles ( notés c, c’ c” c”’ )

Ce travail de décomposition de l’image, c’est tout l’art de l’artiste peintre qui traduit sur sa toile une scène qu’il a sous les yeux : du peintre débutant au plus expérimenté, les deux sachant décomposer, de facon de plus en plus précise la scène en éléments importants et caractéristiques : géométrie, couleurs …
Mais la précision du rendu de la scène dépend de l’artiste : un voudra rendre le plus précisement possible la scene, un autre rendra une scene plus abstraite, voire completement abstraite , n’en retenant que l’essence .

On va prendre l’exemple ci dessus pour un réseau tels que ceux décrits dans les posts précédents, et utiliser le réseau pour analyser une image en entrée .

Comment faire apprendre au réseau les ‘features’ d’interet d’une image qu’on lui fournit en entrée ? ( et quels sont ces ‘features’ ? )

La réponse à la question , c’est un reseau de ce type :

N x Entrées -> R x Hidden -> N x Sorties

Le réseau à le même nombre d’entrées que de sorties, mais, dans la couche cachée, on limite la quantité de neurones à une valeur inférieure au nombre d’entrées.

Pour l’apprentissage, on demande au réseau de recomposer exactement l’information fournie en entrée, rien de plus : c’est un apprentissage sans supervision
Posons N=9 , R=3 :

Du fait que le nombre de neurones de la couche cachée et inférieur au nombre d’entrées , il va y avoir ‘compression’ des données par le réseau, au niveau de la couche cachée ( réduction d’une information à 9 variables en une information à 3 variables )
Mais, dans le même temps, l’apprentissage lui demande de restituer, sur ses sorties, la même information qu’a l’entrée ( ce qui équivaut à décompresser maintenant , une information composée de 3 variables vers une information composée de 9 variables , la sortie ) , on effectue l’opération : vecteur(9) vers vecteur(3) vers vecteur(9) pour l’information.

Ce reseau est auto-encodeur,
Et une fois l’apprentissage sans supervision terminé, il est capable d’extraire des éléments clé (features) de n’importe qu’elle sortes de données en entrée, et ceci, sans aucune supervision.

Pour traiter une image bitmap en entrée, un petit schéma descriptif :

Pour les besoins du post, on pose :

  • le bitmap est composé de valeurs 0.0 a 1.0 (float) , ou bien -1.0 / 1.0 ) , equivalent a la luminosité du pixel.
  • la grille (tile) d’entrée vers le réseau est composée de 3×3pixels = 9 entrées ( a,b,c,d,e,f,g,h,i)
  • La couche cachée est composée de 3 neurones, chacun entièrement connectés aux entrées ( il sont chacun 9 entrées + une de bias )
  • La couche de sortie comporte 9 neurones, entièrement connectés a la couche cachée ( + entrée bias pour chacun ) , notés A,B,C,D,E,F,G,H,I
  • Cette couche de sortie recompose l’entrée de 3×3 pixels , de sorte que, en terme de coordonnées spatiales (x,y)  : a correspond a A , b correspond à B etc
On fait donc l’apprentissage pour que :
A B C
D E F
G H I
reflète les valeurs d’entrées :
a b c
d e f
g h i
Pour mieux comprendre, une capture d’écran , en bas de ce post
  • IN MAP est le bitmap fourni en entrée au réseau. il est parcouru de haut en bas, et de gauche a droite, en faisant des incréments de 3 pixels a chaque itération. a chaque pas, on effectue un cycle d’apprentissage au reseau.
Ci dessous, IN MAP , zoomé : la grille rouge représent les surfaces de 3×3 pixels qui sont parcourues lors de l’apprentissage.elle ne se recouvrent pas et sont contigues :
  • OUT MAP est la réponse en sortie du réseau, au bout de l’apprentissage (erreur RMS <0.01)
  • La sortie est faite sur le canal rouge
Pour afficher les éléments clé utilisés (les features), il suffit d’utiliser les 3 neurones de la couche cachée. en effet, leur déclenchement est combiné par la couche de sortie pour refabriquer l’image a l’identique que l’original :
Il suffit donc de visualiser les poids déclencheurs de ces 3 neurones pour afficher l’aspect du ‘feature’ utilisé pour chacun des 3 neurones.
  • C’est ce qui est visible sur la capture d’écran, noté ‘FEATURE FEATURE FEATURE’
  • Chaque feature a été colorisé Rouge,Vert,Bleu afin de pouvoir le distinguer dans la zone ‘F USAGE’
La zone ‘FEAT GROUPS’ permet ,grace a une SOM (Self Organizing Map) , de créer des groupes de déclenchements pour ces 3 features et de les visualiser. La carte SOM présente des groupes purs de BLEU , VERT , ROUGE, qui correspondent aux usages d’une feature unique pour fabriquer une sortie determinée, tandis que les autres groupes représentent différents mixages des quantitées des 3 neurones (rouge,vert,bleu) pour certains autres états de sortie a générer : c’est le mixage des features , utilisé par le réseau
  • F USAGE est la carte d’utilisation des features : chaque couleur de cette carte traduit le mixage qui a été fait entre les 3 features (préléve de la carte SOM), pour recréer la sortie le plus correctement possible, grace a l’apprentissage.ils sont repositionnés aux coordonnées x,y correspondantes au bitmap d’entrée, afin de mettre en évidence OU ils ont été utilisés, par rapport a l’image d’entrée :

Pour faciliter la compréhension, un overlay :
Les couleurs représentent chaque mixage de features utilisé, en superposition sur le bitmap original.
(En blanc, les pixels a 1.0 du bitmap d’entrée)

Une capture sur un bitmap différent :

No Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

314159265358979323846264338327950288
419716939937510582097494459230781640
628620899862803482534211706798214808

cat{ } { post_1074 } { } 2009-2015 EIhIS Powered by WordPress