-- compléments pour le projet Meningix --

 

Bonjour à tous, voici quelques informations concernant le projet "Réseau de Neurones"

 
Valeurs initiales des poids pour le réseau :

l'ensemble des poids Wij associés aux liaisons synaptiques entre les neurones doit être intialisé avec des valeurs au hasard entre -0,5 et + 0,5
Normalisation des valeurs d'entrée et exemples pour l'apprentissage :

les valeurs fournies au réseau pour lui faire apprendre les différents exemples doivent être normalisées eentre 0 et 1. Pour cela, il vous est fourni (juste à la suite) un module nommé training set qui génère les points d'apprentissage et permet de récupérer des exemples. Vous pouvez modifier les équations des points fournis dans ce module pour commencer par quelque chose de plus simple qu'une spirale (par exemple 2 doites) afin de vérifier que le réseau est capable de traiter des situations plus simples.
Algorithme de rétropropagation du gradient :

une petite modification est nécessaire afin d'appliquer l'algorithme de correction des poids synaptiques :

Dans les formules de mise à jour des poids, il faut calculer pour cahque neurone la quantité di, qui indique le "delta" calculé pour modifier les poids. pour les neurones de la couche de sortie , il est indiqué :

di = si(1-si)(yi-si)

à remplacer par :

di = (1-si*si)*(yi-si)

pour les neurones des couches cachées :

di = oi(1-oi) * Somme [pour k appartenant aux indices des neurones prenant en entrée la sortie du neurone i] de dk*w_ki

à remplacer par:

 di = (1-oi*oi) * Somme [pour k appartenant aux indices des neurones prenant en entrée la sortie du neurone i] de dk*w_ki

Pour chaque neurone, il est également nécessaire de stocker cette valeur de di qui sert pour l'algorithme de rétropropagation
à suivre : des fichiers de ressources

 
#
Training set : génération des exemples pour l'apprentissage
# trainingset.c fichier texte
# trainingset.h fichier texte
#
module rview : visualisation de la réponse du réseau dans l'espace [0,1]x[0,1]
# rview.c fichier texte
# rview.h fichier texte
#
Un exemple de résultat obtenu pour la séparation de deux spirales

le réseau utilisé est un réseau à 3 couches cachées avec la structure suivante :

2 neurones en entrée, 3 couches cachées avec respectivement 10, 7 et 5 neurones, une couche de sortie avec 2 neurones.

au bout de 10 secondes, la réponse du réseau est la suivante :
# image résultat 