1. Présentation

Le programme utilise un réseau multicouches et la méthode d'apprentissage de rétropropagation du gradient, ainsi que diverses améliorations. Le réseau est entièrement paramétrable, et le programme possède deux modes : régression et prévision.
Il donne de bons résultats puisqu'il parvient à approcher diverses fonctions avec une bonne précision, et pour la prévision de température à une échéance de trois heures à une erreur inférieure à 3 ou 4 °C dans les cas extrêmes, et inférieure à 1 ou 2 °C la plupart du temps.



2. Utilisation

Structure du réseau

On a la possibilité de totalement paramétrer le réseau, avec un maximum de trois couches cachées, ce qui laisse un large éventail de possibilités.

Pour chaque couche de neurone, on peut choisir :
- le nombre de neurones de la couche
- la fonction de transfert utilisée par les neurones de la couche ainsi que son paramètre (voir 1.1.2).
- le fait que les neurones de la couche possèdent un seuil, ajustable par l’apprentissage
- les coefficients d’apprentissage qui seront utilisés pour les neurones de cette couche

On peut également préciser si on veut qu’il existe une connexion entre les entrées et les neurones de la couche de sortie, ce qui peut permettre de traiter la partie linéaire d’un problème, ainsi qu’une borne qui délimite les valeurs possibles d’initialisation des poids lors de la création du réseau.

Il est aussi possible d’enregistrer sur le disque dur un réseau satisfaisant, puis de le recharger ultérieurement.

Enfin, il existe deux modes :
- régression : le réseau tente, quand on lui fournit une valeur d’abscisse, de fournir la valeur associée (le réseau comporte alors une seule entrée, modélisée par le nombre de neurones de la pseudo couche d’entrée).
- prévision : on fournit au réseau un certain nombre de valeurs consécutives de la fonction (le nombre d’entrées), et il tente de prédire la valeur suivante. Cette prévision peut être étendue à une plus grande échéance (précisée dans "Durée max prev." de la zone "Prévision"), en réutilisant des valeurs déjà prédites en entrée.


Fonction

On peut choisir ici dans la liste déroulante la fonction de son choix à utiliser pour l’apprentissage du réseau en régression ou prévision. Celle-ci est stockée avec son intervalle d’utilisation et le nombre d’échantillonnages à utiliser lors de son tracé, échantillonnages qui constituent la base d’exemples d’apprentissage du réseau. De plus, afin de simuler des données expérimentales, du bruit peut être ajouté à la fonction lors de son tracé.

Afin de pouvoir utiliser n’importe quelle fonction, j’ai écrit un interpréteur d’expressions arithmétiques. Le code source se trouve en annexe B : l’expression est analysée puis convertie en un arbre, qui permet le calcul de la fonction en n’importe quel point.

On peut donc ajouter une fonction, la supprimer de la liste, ou simplement modifier son intervalle d’utilisation (bouton "enregistrer"). Il est également possible d’obtenir les données à partir d’un fichier, sous le format décrit dans le paragraphe sur le capteur de température (3.2.2).


Evaluation

On peut dans cette zone définir l’intervalle d’évaluation du réseau, qui peut être avantageusement plus grand que celui d’utilisation de la fonction (et donc d’apprentissage), pour visualiser le comportement du réseau dans un domaine ou il n’a subit aucun apprentissage.

On peut ensuite évaluer le réseau sur tout l’intervalle d’évaluation ("evaluer série"), ou un seulement un indice précis de l’échantillonnage de la fonction en mode régression. S’affichent alors la valeur attendue et la valeur rendue.

Il est également possible de bruiter les poids du réseau pour dégrader l’apprentissage, afin de pouvoir examiner comment le réseau converge de nouveau.


Statistiques

Lors de chaque évaluation du réseau, l’erreur qu’il commet par rapport à la fonction est calculée : il s’agit de l’erreur relative (par rapport à l’amplitude de la fonction sur son intervalle d’utilisation) moyenne, ainsi que de l’erreur relative maximale.

Est également affiché le nombre d’apprentissages qu’à subit le réseau depuis son initialisation.

 
Apprentissage

Plusieurs algorithmes d’apprentissage sont disponibles :
- Gradient simple : Si aucune case à cocher n’est cochée, correspond à l’algorithme de base. Chaque exemple est soumis au réseau, l’erreur est calculée, rétropropagée, et les corrections sont stockées. Une fois que tous les exemples ont été traités, on applique la moyenne des corrections au réseau.
-    Gradient stochastique : Ici les corrections sont aussitôt appliquées après chaque exemple soumis. On peut également présenter les exemples dans un ordre aléatoire, ce qui peut améliorer la convergence mais aussi augmenter l’instabilité.
-    Gradient inertie : Un terme est ajouté à la correction, constitué du produit d’un coefficient alpha et de la correction précédente. Les coefficients eta et alpha peuvent être calculés automatiquement par l’algorithme présenté en 2.2.3.
- Manuel : Pour un réseau à une couche cachée de deux neurones, trace les applications partielles, permettant de localiser manuellement chaque minimum.

On peut alors effectuer l’apprentissage sur toute la base d’apprentissage, ou seulement sur un indice (l’indice est le même que celui de la zone Evaluation). On peut également n’utiliser qu’un exemple sur deux pour l’apprentissage, mais tous pour calculer l’erreur, ceci afin de vérifier la capacité de généralisation.

Il est finalement possible de visualiser en temps réel les poids du réseau, en cliquant sur le bouton "montrer poids".


3. Contacts

Ce programme fait partie d'un TIPE portant sur la Prévision de température par réseaux neuronaux.
Le dossier est disponible en téléchargement à l'adresse suivante :
  www.crteknologies.fr.st/projets/tipe_reseaux_neuronaux/


Cyril ROUSSILLON

cyril@crtek.fr.st
www.crteknologies.fr.st