dimanche 1 juin 2014

1er TD sur les réseaux neuronaux



L'objectif de ce TD est de faire une première prise en main intuitive de l'utilisation de réseaux neuronaux (simpliste) avec une interface graphique puis une première mise en pratique via un programme en langage C.

Partie 1
Nous allons tout d'abord, utiliser cet applet : http://www.sund.de/netze/applets/BPN/bpn2/ochre.html de manière classique, c'est à dire, ce pour quoi il a été construit : reconnaître les chiffres de 0 à 9.
Dans un deuxième temps (une fois que vous aurez compris ce que ça fait et comment ça marche), vous allez modifier les donnés d'apprentissage pour que le réseau apprenne à reconnaître une croix (x) d'un rond (o). Vous pouvez modifier les données d'apprentissage en cliquant dessus (clic gauche ajoute un point, clic droit en supprime, 'c' remet le digit à 0. Voici les concepts qui seront illustré par cet exercice.
  • Notion d'apprentissage, et de mesure d'erreur via matrice de confusion
  • Notion de de généralisation. (essayer de faire reconnaître différent type de digit)
  • Notion de différent type de variabilité des données. (inter et intra-personnelle)
Partie 2
Nous allons ensuite apprendre à réaliser un apprentissage de réseau de neurone à partir d'un programme en langage C, utilisant une librairie. La librairie que nous allons utiliser FANN , elle est déjà installée dans les salles de TP. Pour commencer avec un exemple de base vous trouverez, presque tout, sur cette page. Une fois que vous aurez réussi à entraîner (et tester) un réseau sur la fonction XOR à 2 entrés, modifiez ces codes de manière a le faire avec un XOR à 3 entrés.
À l'issue de cet exercice vous aurez normalement compris ce qui est nécessaire pour construire un réseau, l'entrainer, et l'utiliser.

Partie 3
(Selon votre vitesse d'avancement , cette partie pourra être repoussée au TD suivant).
Attention : une erreur s'était glissé dans le lien vers les donnés, téléchargez à nouveau les donnés pour être sur d'avoir les bonnes valeurs.
En utilisant la libraire FANN, faites un programme qui détecte des cellules cancéreuse.Voir le contexte de l'étude ici, ainsi que la description des donnés. Vous trouverez les données nécessaire ici. Il y aura bien sûr une discussion pour savoir comment transformer ces données de manières à ce qu'elles soient utilisable par un réseau de neurones. Avec cet exercice vous aurez compris (normalement) la formalisation exigé par l'utilisation de réseaux de neurones.

Conclusion
à l'issue de de ce TD j'espère que avez une idée plus précise de ce qu'est un réseau de neurones par la pratique. Vous aurez peut être l'impression d'avoir tout vu, mais attention c'est une illusion car pour le moment on n'a pas encore réellement aborder les points critiques de cette technique : l'analyse d'erreur. Soyez en sûr les réseaux que nous avons crées ici sont finalement très très imprécis, malgré nos tests. Nous avons sauté un tas d'étapes qui sont primordiales à la création d'un réseau de neurone réellement fonctionnel. Nous verrons cela en cours et dans les TD suivants...

Annexe(s) :