Bonjour à tous,

Afin de mieux comprendre le fonctionnement des réseaux de neurones, je me suis lancé dans la création d'un réseau FC en langage C (juste parce que je suis plus familier avec le C qu'un autre langage). Le but étant d'apprendre, je réalise ce dernier sans librairie quelconque.

Après un premier résultat "fructueux" sur un sujet linéaire trivial : l'addition, j'ai alors continué mon chemin et je m'essaye alors à la reconnaissance d'écriture (de chiffres) sur les bases de données de MNIST. j'utilise donc un réseau de 784 entrées (les images sont de 28 * 28) pour une seule sortie linéaire et mes essais se font entre 300 et 1200 neurones pour entre 1 et 4 couches cachées. Mes fonctions sont sigmoïdes et / ou linéaires et / ou tanh. Fonction d'agrégation sommatrice standard.
La méthode d'apprentissage est réalisée par rétro propagation du gradient d'erreur. L'erreur de sortie est exprimée en RMS (0.5*(t - y)²) et le taux d'apprentissage alfa est fixé entre 0.05 et 0.5 selon les essais.

La base de données d'apprentissage (récupérée sur mnist) comprends 60000 images de chiffres compris entre 0 et 9 ; la base de test en fait 10000 si ma mémoire est bonne.


voici les résultats de mes premiers essais :

Lors de l'apprentissage, en général, je remarque que l'erreur (sur un chiffre particulier quelconque entre 0 et 9) ne fait qu'osciller entre 0.001<x<12
Dès lors que je lance les tests, la valeur de sortie est toujours la même (~ 5) sur toutes les images proposées.

Alors bien que je n'exclue pas de possibles erreurs de programmation, je me demandais tout de même si l'erreur ne venait pas plutôt de mon choix sur le type de sorties, et / ou de la configuration générale de mon réseau.


Selon vous, l'erreur pourrait-elle être liée au fait que je demande une seule fonction linéaire de sortie plutôt que 10 de type Heaviside voire même sigmoïdes ou soft-max (pour en revenir plutôt à un problème de classification) ?

Pour ceux qui ont déjà fait ce type d'exercice, quelle configuration du réseau me conseilleriez-vous pour un tel sujet ?

D'avance, je vous remercie pour vos retours ; n'hésitez pas à me demander plus de détails si besoin.