Question

Actuellement, j'apprends les réseaux de neurones et j'essaie de créer une application qui peut être entraînée à reconnaître les caractères manuscrits.Pour ce problème, j'utilise un réseau de neurones à rétroaction directe et cela semble fonctionner lorsque je l'entraîne à reconnaître 1, 2 ou 3 caractères différents.Mais lorsque j'essaie de faire en sorte que le réseau apprenne plus de caractères 3, il stagnera à un pourcentage d'erreur autour du 40 - 60%.

J'ai essayé avec plusieurs couches et moins/plus de neurones mais je n'arrive pas à bien faire les choses, maintenant je me demande si un réseau de neurones à rétroaction est capable de reconnaître autant d'informations.

Quelques statistiques:

Type de réseau: Réseau de neurones à rétroaction directe

Neurones d'entrée: 100 (une grille de 10 * 10) est utilisée pour dessiner les caractères

Neurones de sortie: La quantité de caractères à regocniser

Est-ce que quelqu'un sait quel est le défaut possible dans mon architecture?Y a-t-il trop de neurones d'entrée?Le réseau de neurones à rétroaction directe n'est-il pas capable de régénérer les caractères?

Était-ce utile?

La solution

Pour la reconnaissance manuscrite des caractères, vous avez besoin de

  1. de nombreux exemples d'entraînement (peut-être devriez-vous créer des distorsions de votre ensemble d'entraînement)
  2. fonction d'activation softmax dans la couche de sortie
  3. fonction d'erreur d'entropie croisée
  4. entraînement avec stochastique descente de gradient
  5. un biais dans chaque couche

Un bon problème de test est l'ensemble de données numériques manuscrites MNISTE.Voici des articles qui ont appliqué avec succès des réseaux de neurones sur cet ensemble de données:

Y.LeCun, L.Le Boutou, Y.Bengio et P.Haffner:Apprentissage Basé sur les Gradients Appliqué à la Reconnaissance de Documents, http://yann.lecun.com/exdb/publis/pdf/lecun-98.pdf

Dan Claudiu Ciresan, Ueli Meier, Luca Maria Gambardella et Jürgen Schmidhuber ont été invités à participer à la conférence.:Les Grands Réseaux Neuronaux Simples Profonds Excellent sur la Reconnaissance manuscrite des Chiffres, http://arxiv.org/abs/1003.0358

J'ai entraîné un MLP avec une architecture 784-200-50-10 et j'ai obtenu une précision >96% sur l'ensemble de tests.

Autres conseils

Vous voudrez probablement suivre les conférences 3 et 4 à http://www.ml-class.org.Le professeur Ng a résolu exactement ce problème.Il classe 10 chiffres (0...9).Certaines des choses qu'il a faites dans la classe qui lui permettent d'atteindre une précision d'entraînement de 95% sont :

  • Nuéron d'entrée :400 (20x20 pouces)
    • Couches Cachées :2
    • Taille des calques cachés :25
    • Fonction d'activation :sigmoïde
    • Méthode d'entraînement :descente de gradient
    • Taille des données :5000

J'ai eu un problème similaire il y a quelque temps en essayant d'identifier des chiffres manuscrits à l'aide de l'ensemble de données MNIST.Mon réseau neuronal de rétroaction donnait une précision d'environ 92% sur l'ensemble de validation, mais classait fréquemment mal les images que je lui donnais.

J'ai résolu ce problème en ajoutant une couche cachée dans mon réseau et en utilisant RMSProp.Le net donne maintenant une précision d'environ 97% et classe correctement les images que je lui donne.

De plus, si votre coût ne diminue pas, cela signifie probablement que votre taux d'apprentissage est trop élevé ou que votre réseau est probablement bloqué dans un minimum local.Dans une telle situation, vous pourriez essayer de diminuer votre taux d'apprentissage et vos poids initiaux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top