OCR avec un Perceptron 

Introduction

Cette applet illustre les possibilités de reconnaissance des formes des perceptrons multi-couches avec une application de reconnaissance optique de caractères (OCR, Optical Character Recognition). Une base de données est utilisée pour apprendre à reconnaitre les chiffres manuscripts allant de 0 à 9. L'utilisateur peut alors dessiner lui-même un chiffre et essayer de le faire reconnaitre au perceptron.

Auteur

L'applet originale a été écrite par Olivier Michel.

Instructions

A cause de raisons de sécurité (accès au fichier de bases de donnée de caractères), cette applet ne fonctionne que sur Netscape 4.04 et pas sur Netscape 4.05.

Une base de donnée de bitmaps est utilisée pour apprendre à reconnaitre des chiffres manuscripts entre 0 et 9. Chaque bitmap est une carte de 15x20 pixels représentant un chiffre manuscript. Les 100 exemples (10 pour chaque chiffre) ont été dessinés à la main avec une souris d'ordinateur. La couche d'entrée du réseau de neurones contient 80 neurones représentant une matrix de 8x10 qui est un sous-échantillonage de la matrice originelle (15x20). Pour chaque neurone d'entrée, un module de préprocessing calcule une valeur égale à la moyenne des quatres pixels d'entrée correspondant sur la matrice originelle. La sortie du réseau est faire de 10 neurones, chacun représentant une valeur symbolique pour chiffre reconnu.

Applet

 

Questions

  1. Apprentissage: Combien d'itérations sont nécessaires pour que l'erreur atteigne 0 sur l'ensemble d'apprentissage ? Quels paramètres (taux d'apprentissage, momentum, nombre de neurones cachés) donnent le compromis optimal entre performance et temps de convergence ?
  2. Apprentissage: Essayez de trouver les paramètres optimaux pour un réseau de neurone sans couche cachée (la valeur de H1 doit être fixée à zéro). Comparez la performance obtenue à celle de plus gros réseaux. Que pouvez-vous en conclure vis-à-vis de la séparabilité des classes de l'ensemble d'apprentissage ?
  3. Test: Essayez de dessiner des chiffres avec la souris et de tester la réponse du réseau de neurones. Pensez-vous qu'il a de bonnes propriétés de généralisation ? Comment expliquez-vous cela ?
  4. Amélioration de l'apprentissage: Dans le but d'obtenir de meilleurs résultata de test, comment peut-on changer l'apprentissage de manière que la généralisation soit améliorée ? La technique du "early stopping" donne-t-elle de bons résultats en généralisation ?