T.P.  "RESEAUX DE NEURONES"

Fabien Moutarde
Centre de Robotique (CAOR), Mines ParisTech

Démarrage

Commencez par consulter (dans un onglet séparé) et effectuer les instructions de la section "Démarrage" du mode d'emploi de l'outil "Janet".
Ensuite, faites les 4 exos ci-dessous qui ne consistent qu'à effectuer des apprentissages (sans passer trop de temps sur les 3 premiers, car le dernier est + intéressant) et garder un peu de temps pour l'exo complémentaire où vous pourrez regarder/modifier du code de l'algo lui-même.

Canevas général de la première partie du TP

Le but de ce TP est de vous faire construire et entrainer des réseaux de neurones correspondant à plusieurs problèmes d'apprentissage listés ci-après. Pour chacun de ces problèmes, à traiter dans l'ordre indiqué ci-dessous, lisez le petit descriptif du problème, et ouvrez dans une fenêtre ou un onglet séparé(e) le lien fourni, qui donne plus de détails sur la nature du pb et la façon de le résoudre. Il est aussi nécessaire de conserver ouvert en permanence, dans un onglet ou une fenêtre séparé(e), le mode d'emploi de l'outil d'apprentissage de réseau de neurones, afin d'effectuer au fil des problèmes du TP l'ensemble des manipulations mentionnées dans ce mode d'emploi.
Enfin si vous effectuez ce TP dans le cadre de l'ES "Apprentissage Artificiel", nous vous suggérons (comme pour tous les TPs de cet ES), en vue de préparer le rapport sur le travail effectué en TPs à remettre lors de l'examen, de noter au fur et à mesure des informations sur ce que vous obtenez, ainsi que vos réponses aux questions posées et vos propres remarques/conclusions/interrogations (voire aussi des copies d'écran pour illustration des résultats).
  1. Essayer d'abord, pour se faire la main sur l'outil, le problème d'apprentissage de la fonction booléenne XOR (base d'apprentissage "xor.pat"), pour lequel on peut facilement "deviner" à l'avance le nombre (faible) de neurones nécessaires et suffisant sur la couche cachée ; toutefois, la présence de minima locaux peut parfois nécessiter un réglage fin des paramètres.
  2. Essayer ensuite le problème d'approximation/interpolation de fonction proposé (bases "fonc_app.pat" et "fonc_tst.pat").
  3. Passer alors (s'il vous reste assez de temps) au problème de classification correspondant aux bases "classif_app.pat" et "classif_tst.pat".
  4. Finalement, terminer avec le problème de reconnaissance de chiffres manuscrits correspondant aux bases "smallDigits_app.pat" et "smallDigits_tst.pat".

Note : ne passez pas à la suite sans avoir réussi un apprentissage AU MINIMUM sur les cas 1/, 2/ et 4/ (en particulier le dernier concernant la reconnaissance de chiffres manuscrits).

Exercice complémentaire (pour ceux qui s'intéressent à l'implémentation de l'algo d'apprentissage)

  1. Commencer par démarrer le logiciel : dans un terminal, placez-vous dans le répertoire contenant LevisMLP.jar et fr/, puis passez la commande suivante : java -cp ".:./LevisMLP.jar" fr.ensmp.caor.levis.Levis
  2. Dans l'interface, cliquez dans le champ de texte prévu pour "Directory", puis allez sélectionner le répertoire DB_panneaux.
  3. Cliquez ensuite dans le champ prévu pour "width", afin de faire apparaitre la fenêtre d'aide au choix de redimensionnement (à fermer une fois le choix de taille effectué)
  4. Une fois la taille de redmensionnement choisie, cliquez sur le bouton "Load", puis sur le bouton View pour vérifier visuellement les versions redimensionnées des panneaux
  5. Passez à l'onglet "MultilayerPerceptronLearner", et choisissez une topologie (dimensions des couches) compatible avec la base (nb d'entrées = width*height, nb de sorties = nb de classes), puis cliquez sur le bouton Learn : pour le moment, l'apprentissage stagne, car il vous faut compléter la méthode qui effectue la modification des poids :