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