1. Principe
Mon réseau ne comporte qu'une seule couche, avec autant de neurones
que de formes à reconnaître, avec autant d'entrées
que de pixels des formes et donnant en sortie la probabilité (%)
qu'il s'agisse de la bonne forme. Il s'agit d'un apprentissage supervisé,
si la forme reconnue est la bonne on renforce l'apprentissage selon l'écart
avec la seconde forme reconnue, si le réseau s'est trompé
il renforce les valeurs de la forme qui aurait due être reconnue et
les baisse pour la forme reconnue.
2. Résultats
Mon ANN parvient à reconnaître parfaitement les 26 lettres
minuscules en une quarantaine d'apprentissages, en reconnaissant la lettre
en moyenne à 80%, avec une moyenne d'écart de 50% avec les
autres lettres, 20% avec la lettre arrivant en seconde position, et un écart
minimum entre la lettre reconnue et la seconde tournant autour de quelques
%.
On arrive à atteindre un écart moyen avec le second de 80%
et un écart minimum de plus de 70% au bout d'environ 300 apprentissages,
apprentissage automatique bien sûr :).
Il parvient également à identifier les lettres parmi trois
polices différentes avec un écart minimum supérieur
à 5% après quelques 1500 apprentissages, c'est à dire
qu'on lui présente un 'a' d'une police ou d'une autre il reconnaitra
un 'a'.
3. Utilisation du programme
Reconnaissance
On commence par charger dans "classes (ANN)" les formes qui consitueront
les types de formes à reconnaître (fichiers bitmap .bmp qui
doivent tous avoir les mêmes dimensions, possibilité d'ouvrir
plusieurs fichiers en une fois).
A chaque clic sur sur une forme, celle-ci se dessine et une reconnaissance
s'effectue automatiquement, les résultats pour chaque classe s'affichant
à gauche (probabilité en % pour qu'il s'agisse de la bonne
forme). La classe reconnue s'affiche en rouge et se focalise, et la seconde
classe reconnue s'affiche en bleu foncé.
On peut charger de même dans "formes" les formes que l'on souhaite,
qui seront identifiées par rapport aux classes.
Apprentissage
Après chaque reconnaissance, on peut choisir "apprendre", après
avoir éventuellement sélectionné la bonne classe dans
la liste déroulante sous le bouton, que le réseau se soit
trompé ou non .
Apprentissage automatique
Le programme comporte une fonction d'apprentissage automatique.
type :
- sequentiel : chaque
forme est reconnue dans l'ordre, si le réseau s'est trompé
on procède à un apprentissage puis on passe au suivant dans
tous les cas.
- suiv. si prec. :
chaque forme est reconnue dans l'ordre, mais si le réseau s'est trompé
on procède à un apprentissage puis on vérifie que
les formes précédentes sont toujours correctement reconnues.
Ce mode est légèrement plus long mais donne des résultats
un peu meilleurs.
arret :
- justes : l'apprentissage
s'arrête quand toutes les formes sont identifiées sans erreur.
- ecart 2° > :
l'apprentissage s'arrête quand toutes les formes sont identifiées
sans erreur et l'écart minimum entre une forme reconnue et la seconde
est supérieur à la valeur précisées.
initialiser ANN : précise
si une réinitialisation du réseau doit être effectuée
avant un apprentissage automatique
inclure formes : précise si les formes chargées dans
"formes" doivent être apprises. Il faut dans ce cas que leur nombre
soit multiple du nombre de classes, et chaque forme est supposée
comme appartenant à la classe correspondante dans "classes (ANN)".
Les formes sont alors prises en compte pour tous les paramètres et
dans l'évalutation de l'apprentissage.
n apprentissages, n reconnaissances : précise le nombre d'apprentissages
et de reconnaissances qui ont été effectuées lors
du dernier apprentissage automatique.
Si l'apprentissage ne se termine pas, par exemple parce que vous avez
chargé des formes identiques, ou exigé un écart avec
le second trop important, vous pouvez appuyer sur le bouton "stop" pour arrêter
immédiatement l'apprentissage automatique.
Evaluation apprentissage
Après chaque apprentissage, une évaluation est effectuée,
affichant plusieurs paramètres :
trouvé moy. : pourcentage moyen de reconnaissance des formes
ecart moy. : écart moyen entre la forme reconnue et les autres
ecart 2° moy. : écart moyen entre la forme reconnue et
la seconde
ecart 2° min : écart minimum entre une forme reconnue
et la seconde
Les paramètres les plus importants sont les deux derniers, et
surtout le dernier.
Si toutes les valeurs sont à 0, cela signifie qu'au moins une
forme n'a pas été correctement reconnue.
Autres
intervalle init [0,1] +- : précise l'intervalle d'initialisation
des poids du réseau.
continuite min ]0,2] : fait en sorte que la différence entre
deux poids de pixels voisins ne dépasse pas la valeur spécifiée.
Cette option est prévue pour de ne pas rendre un pixel trop décisif
afin d'optimiser les capacités de généralisation du
réseau, mais elle s'est révélée peu efficace.
4. Contacts
Ce programme fait partie d'un TIPE portant sur la Prévision de température
par réseaux neuronaux.
Le dossier est disponible en téléchargement à l'adresse
suivante :
www.crteknologies.fr.st/projets/tipe_reseaux_neuronaux/
Cyril
ROUSSILLON
cyril@crtek.fr.st
www.crteknologies.fr.st