Perceptron multi-couche et langage C 

Introduction

Ces pages présentent un petit programme C très simple, mais très puissant (et utile). Il illustre le fonctionnement d'un perceptron multi-couche sur un exemple original : le Petit Chaperon Rouge.

bpsim est une implémentation en C d'un réseau de neurones contenant une seule couche cachée et qui utilise la règle delta de la rétro-propagation généralisée pour l'apprentissage. Une interface utilisateur texte rudimentaire est founie pour pratiquer des expériences avec ce réseau appliqué au Petit Chaperon Rouge. Ce programme est un excellent point de départ pour développer un Perceptron multi-couche en C pour n'importe quelle autre application.

Caractéristiques

En plus, bpsim contient des blocs utiles pour d'autres expériences avec des réseaux de neurones simple-couche et multi-couche. Les structures de donnée qui décrivent les neurones (processing units) permettent facilement de changer la fonction d'activation (output) et / ou la fonction d'erreur. La fonction create_link peut être utilisée pour créer des liens entre n'importe quels neurones avec votre propre fonction create_in_out_link. Cette flexibilité dans la création de neurones et de connexions selon vos besoins vous permet ainsi de modifier l'architecture du réseau selon le problème qui vous intéresse.

Quelques paramètres ont besoin d'être expliqués. Vous remarquerez que les valeurs cibles des neurones de sortie sont soit 0.1, soit 0.9, correspondant aux valeurs binaires 0 et 1. Avec la fonction sigmoïde utilisée dans out_f, les poids deviennent vite très grands si l'on choisit 0 et 1 comme valeurs cibles pour les neurones de sortie. La valeur ON_TOLERANCE est utilisée comme critère pour décider si un neurone de sortie est actif (on, proche de 0.9) ou inactif (off, proche de 0.1). Les variables learning_rate et momentum peuvent être changées selon vos besoins, elles doivent cependant en général rester inférieures à 1.0.

Auteur

L'applet original a été écrit par Josiah C. Hoskins (plus d'informations dans le code source).

Instructions

Télécharger ce programme C simple : bpsim.c. Compilez le en utilisant votre compilateur C favorit, par exemple gcc :

gcc -o bpsim bpsim.c -lm

Ensuite lancer bpsim dans un shell.

Questions

  1. Essayez de jouer avec programme pour qu'il apprenne à reconnaître tous les personnages.
  2. Quelles sont les caractéristiques du loup, de la grand-mère et du bucheron ?
  3. Quels sont les comportements associés au loup, à la grand-mère et au bucheron ?
  4. Est-ce un problème linéairement séparable ?
  5. Quelle est la structure du réseau (nombre d'entrées, sorties, neurones cachés, couches cachées) ?
  6. Essayez d'améliorer la performance du réseau en changeant le taux d'apprentissage (learning_rate), le momentum, le numbre de neurones cachés, le nombre de couches cachées. Obtenez-vous de meilleurs résultats ? Expliquez.