http://www.gch.ulaval.ca/cgi-bin/nph-count?width=5&link=manual_nnfit_fr

NNFit Ver. 2.0

Par

Patrick Cloutier, Cristian Tibirna , Bernard Grandjean et Jules Thibault

Département de génie chimique , Université Laval

Sainte-Foy (Québec) CANADA G1K 7P4

 


Plan du manuel de l'utilisateur

 




1. Introduction et avertissement

 

Le logiciel NNFit (Neural Network based data Fitting) permet le développement de corrélations empiriques non-linéaires, utilisant les modèles de réseaux de neurones artificiels (de type Perceptron multi-couches). NNFit est donc un logiciel de régression permettant de relier un ensemble de variables d'entrée, Xi (1 < i < I), à un ensemble de variables de sortie Yk (1 < k < K) sachant que l'on dispose de N valeurs expérimentales pertinentes des couples [ Xi ,Yk ]n (1 < n < N). Comme dans toute approche empirique de modélisation, l'utilisateur de NNFit doit bien garder en mémoire que la qualité des modèles de régression Y=f(X) qu'il pourra obtenir, sera fonction entre autres de la pertinence et de la qualité des données expérimentales disponibles. De plus, l'obtention d'un modèle de régression permettant la bonne prédiction d'un ensemble donné de points, ne garantit absolument pas la capacité de généralisation d'un tel modèle, c'est à dire la capacité à prédire correctement un nouvel ensemble de couples [ Xi ,Yk ]m (N+1 < m < P).

Les auteurs et l'Université Laval ne peuvent être tenus responsables de l'utilisation des modèles développés par le logiciel NNFit.




2. Les équations des modèles

 

On renvoie le lecteur à la littérature pertinente pour une présentation exhaustive des modèles de réseaux de neurones (Voir Internet ftp://ftp.sas.com/pub/neural/FAQ.html) .

Pour le besoin de l'utilisateur, il suffit de considérer le modèle neuronal comme un modèle non-linéaire de régression permettant de relier un vecteur normalisé d'entrée U à un vecteur normalisé de sortie S. La transformation S=f(U) est représentée par un réseau de neurones à couches comportant une seule couche cachée dont les équations et le schéma sont illustrés ci-dessous.




Figure 1. Schéma d'un réseau de neurones à couches"

 

Le modèle utilise, en plus des variables du problème, une entrée constante, égale à 1 (le biais) qui est imposée aux couches d'entrée et cachée.

Pour les neurones de la couche cachée:

equation 1

Ui: vecteur des variables normalisées d'entrée, UI+1 =1

Hj: sortie du neurone, j, de la couche cachée, HJ+1=1




Pour les neurones de la couche de sortie: 

equation 2

f: fonction sigmoïde: f(z)=1/(1+e-z)

Sk: vecteur des variables normalisées de sortie




La transformation des variables réelles (X,Y) aux variables normalisées (U,S) s'exprime par 

equation 3
equation 3



Remarque: Dans le cas où la variable Xi (ou Yk) couvre plusieurs décades, il peut être avantageux d'utiliser plutôt log10 Xi (ou log10 Yk) et la normalisation s'écrit comme suit:

equation 4
equation 4



Comme tout modèle de régression, le modèle neuronal comporte plusieurs paramètres d'ajustement:

- la valeur J du nombre de noeuds de la couche cachée
- les valeurs des paramètres Wij et Wjk, appelés les poids

J, étant choisi empiriquement , le modèle comporte donc [(I+1).J + (J+1).K] paramètres d'ajustement que l'on détermine par régression sur un ensemble pertinent de N couples de données expérimentales [X,Y].

La méthode consiste à minimiser un critère quadratique (somme des carrés des erreurs de prédiction, erreurs absolues, Qa, ou relatives, Qr) en utilisant comme algorithme de minimisation une méthode de quasi-Newton de type BFGS ["Numerical Recipes, The art of Scientific Computing" Press W.H. et al. Cambridge University Press 1986.]. Cette étape de minimisation du critère quadratique, qui permet d'ajuster un modèle sur un ensemble de points, est appelé "apprentissage" et l'ensemble de points utilisés est ainsi appelé "fichier d'apprentissage".

Les critères quadratiques Qa ou Qr sur la somme des carrés des erreurs, absolues ou relatives, se définissent comme suit: 

equation 5
equation 5



Attention: Si on utilise le critère relatif, il faut s'assurer qu'il n'existe pas de valeur Skexp(n) nulle. Par construction les variables Sk étant normées entre [YMINk - YMAXk], l'utilisateur doit donc fixer une valeur de YMINk légèrement inférieure à la valeur minimale de Yk observée dans le fichier afin que la normalisation conduise à des valeurs de Sk >0.


3. Le problème du "surapprentissage"

 

Le problème du "surapprentissage" (overfitting) des modèles neuronaux est bien connu. En effet, à cause de leur grande plasticité, les modèles neuronaux peuvent dans certains cas prédire avec une grande précision l'ensemble des données sur lequel l'ajustement a été fait. Cependant, de très fortes erreurs de prédictions peuvent être constatées dès lors que les modèles sont utilisés pour prédire de nouvelles données.



surapprentissage


Pour faciliter la compréhension du problème de surapprentissage, considérons la variation Y=f(X) présentée ci-contre. On dispose d'un nombre limité de mesures expérimentales et supposons que un modèle physique (ou phénoménologique ou conceptuel) du problème étudié existe tel que présenté sur la figure. Le surapprentissage d'un modèle correspond à la situation pour laquelle le modèle neuronal est capable de prédire avec une grande précision les points expérimentaux disponibles, cependant, entre les points, le modèle neuronal va prédire des comportements tout à fait inacceptables. L'utilisation ultérieure d'un tel modèle pourrait être très risquée.

Une approche possible pour mettre en evidence le surapprentissage consiste à fractionner le fichier initial des données disponibles en deux parties. La première constitue le fichier d'apprentissage sur lequel la minimisation est conduite alors que le reste des données va servir à tester la capacité de généralisation du modèle. On rappelle que l'algorithme de minimisation met en oeuvre un processus itératif pour lequel différentes valeurs des poids (Wij et Wjk ) sont explorées dans le but de minimiser le critère quadratique. À chaque itération de l'algorithme d'optimisation, on peut donc tester les prédictions du modèle sur les données restantes (fichier de généralisation).


erreurs de generalisation


La figure ci-contre représente schématiquement la variation de la somme des carrés des erreurs sur le fichier d'apprentissage et le fichier de généralisation en fonction du nombre d'itérations. La remontée de cette sommme sur le fichier de généralisation est un indicateur du surapprentissage. Afin d'éviter ce problème, il sera préferable d'arrêter la minimisation après N1 itérations seulement au lieu de laisser l'algorithme atteindre la convergence après N2 itérations.

Cette procédure d'arrêt de la minimisation avant convergence (early stopping) est proposée dans NNFit.

4. Préparation des données



Les N données expérimentales disponibles doivent être sous la forme d'un fichier de chiffres de N lignes et P colonnes; ces dernières contenant les valeurs des X et des Y. L' ordre des colonnes peut être quelconque et éventuellement, certaines colonnes pourront ne pas être utilisées dans le développement des modèles.

Attention: utiliser le point et non la virgule pour les décimales des nombres.

N.B.
Pour faciliter l'apprentissage du logiciel NNFit, un fichier de données, demo.dat (441 lignes, 4 colonnes) est joint (données générées suivant: y1=2x1+3x2-4x1x2 et y2=-5x1+8x2+7x1x2) et sera utilisé pour illustrer les différentes fonctionalités. 

5. Utilisation du logiciel 



Lancer NNFit et la barre supérieure suivante s'affiche:


menu principal


5.1 Démarrer 


menu demarrer


Nouveau - pour résoudre un nouveau problème, bâtir le fichier de configuration (nom.cfg) et lancer une nouvelle simulation

Récupérer - pour récupérer un fichier de configuration existant et relancer une simulation

A propos de - pour afficher les noms et adresses des auteurs du logiciel

Cliquer Nouveau et choisir le fichier de données que l'on souhaite modéliser (exemple: demo.dat).

Une feuille de travail apparaît dans laquelle on entrera toutes les informations nécessaires au développement des modèles.

Dans l'encadré supérieur apparaît l' Information sur le fichier de données (demo.dat, 441 lignes et 4 colonnes) 

Le second encadré, intitulé Partition du fichier pour généralisation, permet à l'usager, s'il le désire, de fractionner le fichier initial de données en deux, afin d'identifier éventuellement les problèmes de surapprentissage. Pour faire cette partition, il faut indiquer le nombre de données retenues pour la généralisation, en fixant soit le % des données soit le nombre de lignes du fichier original. Deux méthodes de partition du fichier sont proposées:

- méthode aléatoire (et suivant cette méthode, le nombre des données dans les fichiers créés sera proche, mais pas forcément identique, à la valeur demandée)

- méthode par segment continu du fichier original (utiliser le curseur ou indiquer les bornes des lignes de début et de fin du segment).

Les informations requises étant indiquées, en cliquant sur Partitionner, deux nouveaux fichiers sont créés. Ces fichiers d'apprentissage et de généralisation sont identifiés respectivement par les extensions .axx et .gxx (xx pouvant varier de 01 à 99); la racine du nom étant celle du fichier de données initial (exemple: demo.a01 et demo.g01).

Dans le troisième encadré intitulé, Dimension du réseau, on doit rentrer l'information caractérisant les modèles à savoir les nombres d'entrées (biais exclus), de sortie et le nombre de noeuds cachés J (biais exclus). Celui-ci peut varier entre des valeurs minimale et maximale choisies (il faut se rappeler qu'il y aura un modèle pour chaque valeur de J et l'on choisira ultérieurement le meilleur modèle en utilisant la rubrique Comparaison des simulation de Divers ). Cliquer Validation pour enregistrer les informations.

( Exemple: pour le fichier demo.dat, le problème comporte 2 entrées, 2 sorties et on se propose de faire varier J de 1 à 6.)

Attention: Dans un problème de modélisation, les variables que l'on souhaite prédire ( c.a.d. les variables de sorties) sont connues. Par contre, la sélection (ou l'identification) des variables d'entrée pertinentes au problème est, quant à elle, souvent difficile. A défaut de connaissance spécifique sur son problème, l'utilisateur pourra calculer les coefficients de corrélation entre les différentes colonnes de variables contenues dans son fichier de données en utilisant la rubrique Matrice de corrélations de Divers. 



fenetre principale


Dans l'encadré inférieur, Affectation des Entrées/Sorties, on doit associer la structure du modèle à celle du fichier des données. Selectionner Entrées ou Sorties puis choisir le numéro de l'entrée (ou de la sortie) et associer la colonne correspondante.
(Exemple: demo.dat: le problème comporte 2 entrées, 2 sorties, toutes en mode de lecture normal: entrée 1 sur colonne 1, entrée 2 sur colonne 2,, sortie 1 sur colonne 3, sortie 2 sur colonne 4.)
Les minimum et maximum de la colonne du fichier de données s'affichent automatiquement mais l'utilisateur peut changer s'il le désire la gamme de normalisation des variables (attention: l'utilisateur devra changer nécessairement les valeurs des minima des sorties s'il souhaite utiliser le critère relatif de convergence, voir paragraphe 2.) . L'encadré Mode de Lecture permet d'utiliser comme grandeur non pas la valeur de la variable mais son logarithme décimal. Cette option est particulièrement recommandée dans le cas où le domaine de variation d'une variable couvre plusieurs ordre de grandeur. Pour chaque entrée (ou sortie) choisie, il faut enregistrer l'information en cliquant la touche Validation.

La touche Option, qui fait apparaitre la fenêtre ci-dessous, permet de selectionner certains paramètres nécessaire à l'algorithme de minimisation (par défaut, les valeurs utilisées seront celles fixées dans la rubrique Préférence de Divers):


dialogue Options


- choix du critère quadratique à minimiser: somme des carrés des erreur absolue ou relative

- choix du nombre maximum d'itérations de la routine d'optimisation et critère de convergence

Remarque: L'algorithme de minimisation s'arrête dès que l'un de ces deux critères est atteint

- choix des poids initiaux. L'option Utilisation s'ils existent permet, si une simulation a déjà été faite, d'initialiser les poids aux valeurs trouvées lors de cette dernière simulation. Sinon, les valeurs initiales des poids peuvent être soit choisies de façon aléatoire entre des valeurs Maxi et Mini fixées par l'usager, soit fixer alternativement à ces valeurs minimum et maximum (ex:W11=Min, W12=Max,W13=Min, W14=Max etc...).

Attention: Le choix des valeurs initiales des poids peut avoir un effet sur la convergence de la routine d'optimisation (avec la possibilité de rester bloquer dans des minima locaux).

Toutes les informations de la feuille de configuration étant entrées, cliquez Enregistrer. Cette opération permet la sauvegarde du fichier de configuration sous le nom choisi par l'utilisateur (l'extension .cfg est affectée automatiquement) (demo.cfg), ce nom sera ensuite utilisé pour identifier les résultats des simulations. Pour lancer les calculs, il suffit de cliquer Débuter. L'utilisateur peut ensuite soit poursuivre l'utilisation de NNFit, soit quitter le programme (cliquez Quitter) mais les simulations lancées étant en arrière plan, elles ne seront pas arrêtées.


5.2 Visualiser 

menu visualiser


Cette rubrique permet de visualiser les résultats des calculs. Itération s'intéresse à l'évolution du critère quadratique que l'on souhaite minimiser en fonction du nombre d'itération. Prédiction ou Validation permet la comparaisons entre les valeurs calculées et expérimentales sur les fichiers d'apprentissage, de généralisation ou sur un autre fichier sur lequel on souhaite valider un modèle déjà obtenu.

Après avoir cliqué sur Itération, il suffit de sélectionner les fichiers ayant les extensions *.ite dans le cas où il n'y a pas eu partition du fichier initial de données et *.ita ou *.itg dans le cas contraire. Pour cette dernière situation, l'affichage simultanée des deux variations permet à l'utilisateur d'identifier éventuellement le surapprentissage et de choisir ainsi le nombre optimal d'itération (déplacer le curseur situé entre les deux graphiques vers le nombre d'itérations choisi). En cliquant sur la touche Nouveau calcul, une deuxième simulation identique à celle affichée (les valeurs initiales des poids sont dans les fichiers *.win) sera effectuée mais la routine d'optimisation s'arrètera au nombre d'iteration choisi (on peut ainsi utiliser la technique d'arrêt avant convergence et éviter le surapprentissage). Le bouton Total permet d'afficher l'evolution du critère quadratique total Qa (ou Qr) que l'on souhaite minimiser. Le bouton Par Sortie permet l'affichage de l'évolution des critères Qa,k (ou Qr,k) associés à chacune des sorties (Les touches Précédent ou Suivant seront utilisées pour afficher les sorties k+1 ou k-1). La touche Imprimer permet de sortir le graphique sur imprimante ou sur fichier.



fenetre Iterations


Après avoir cliqué sur Prédiction ou Validation il suffit de selectionner les fichiers ayant respectivement les extensions *xx.pre, *xx.pra ou *xx.prg (xx indique le nombre de noeuds cachés J du modèle, biais exclus) ou *.vyy.

L'affichage des résultats comprend un graphique et un tableau peuvent être imprimés directement ou sauvés dans des fichiers pour une sortie ultérieure sur imprimante.

Le tableau intitulé Information sur les erreurs de prédictions donne diverses informations sur les performances de prédiction du modèle:

- Erreur de prédictions, moyenne, minimale, maximale, écart type. On peut utiliser les erreurs absolue, relative ou la valeur absolue de l'erreur relative: 

equations des erreurs



- coefficients de corrélation et de détermination définis ci-après (qu'on espère proches de 1 !):


coefficient de correlation


coefficient de determination


fenetre Predictions

fenetre Predictions (compar)



fenetre Erreurs de prediction


L'encadré Apprentissage <--> Généralisation va permettre à l'utilisateur de commuter directement du fichier *.pra au fichier *.prg correspondant (ou reciproquement).


L'affichage dans la feuille intitulée Visualisation des prédictions permet la comparaison entre les valeurs calculées et expérimentales . Deux options d'affichage sont disponibles:


Quand le modèle a plusieurs sorties, utiliser les touches Precedent ou Suivant pour afficher les résultats des sorties k+1 ou k-1.



5.3 Tester

menu Tester


Cette rubrique permet d'utiliser les modèles construits dans des simulations antérieures. Pour chacune de ces options, on invite l'utilisateur à choisir le fichier de poids nomxx.w caractérisant le modèle à tester.


fenetre Validation du modele


- Valider sur fichier permet de tester le modèle sur un nouvel ensemble d'entrée/sortie du problème.

Par défaut, ce nouveau fichier est supposé être structuré comme indiqué dans le fichier de configuration associé au fichier poids si il est présent. Sinon, l'utilisateur devra procéder à l'affectation des Entrées/Sorties (comme cela a été fait dans la section 5.1). Cliquer Débuter pour lancer le calcul et les résultats sont écrits dans un fichier nomxx.vyy (yy variant de 01 à 99, un nouveau numéro étant affecté automatiquement pour chaque nouveau test utilisant le fichier de poids nomxx.w). Les fichiers *.vyy pourront être visualiser dans la rubrique Validation de Visualiser (voir section 5.2).

- Simuler sur fichier correspond à un cas où seules les entrées sont connues et l'on souhaite prédire les sorties. Les résultats sont écrits dans un fichier nomxx.syy.

- Simuler sur entrées permet d'utiliser un modèle de façon singulière en faisant à l'écran l'entrée des variables.


dialogue Simuler sur entrees


5.4 Processus 

Cette rubrique permet d'identifier les simulations en cours et éventuellement de les détruire.


dialogue Processus


Remarque: Suite à une interruption anormale d'une simulation, le numéro PID de celle-ci va apparaître dans cette fenêtre bien que le processus n'existe plus.


5.5 Divers 

menu Divers


Matrice de corrélation permet le calcul des coefficients de corrélation, entre toutes les colonnes d'un fichier de données: Entre les colonnes p et q les coefficients de corrélation apq sont définis par:

équation de corrélation


fenetre Matrice de correlation



Comparaison des simulation permet de quantifier l'effet du nombre de noeuds cachés (J) sur l'ajustement des modèles au fichier de données (apprentissage ou validation). L'utilisateur selectionne le nom du fichier de configuration (*.cfg) et le tableau ci-dessous s'affiche.


fenetre Comparaison des simulations


Il regroupe, pour toutes les valeurs de J explorées (J=nombre de noeuds dans la couche cachée), les valeurs des erreurs moyennes, de l'écart type des erreurs et du coefficient de corrélation pour chaque sortie (K), autant pour les fichiers d'apprentissage que de généralisation.

Ce tableau devrait faciliter le choix du meilleur modèle à retenir.


Préférences:
cette option permet de fixer les valeurs par défaut de certains paramètres de la modélisation.



dialogue Preferences

6. Informations sur les fichiers générés par NNFit



6.1 nomxx.ite: (fichier des itérations)



6.2 nomxx.pra, ou . prg ou .pre ou .vyy: (fichier des prédictions quand les sorties sont connnues).


6.3 nomxx.w(fichier des poids)


6.4 nomxx.syy (fichier de prédiction quand les sorties ne sont pas connues)



6.5 nom.cfg (fichier de configuration)

Fichier de donnees: /dosd/demo/demo.dat
Nombre de lignes dans le fichier de donnees: 441
Nombre de colonnes dans le fichier de donnees: 4
Partition: OUI
Partition aleatoire OUI
lignes dans le fichier generalisation 125
Fichier d'apprentissage /dosd/demo/demo.a01
Fichier de generalisation /dosd/demo/demo.g01
Maximum colonne no 1: 1.000000e+01
Minimum colonne no 1: ­1.000000e+01
Maximum colonne no 2: 1.000000e+01
Minimum colonne no 2: ­1.000000e+01
Maximum colonne no 3: 4.100000e+02
Minimum colonne no 3: ­4.500000e+02
Maximum colonne no 4: 7.300000e+02
Minimum colonne no 4: ­8.300000e+02
I: 2
K: 2
Jmin: 1
Jmax: 6
Critere relatif: non
Nbr d'iterations maximum: 200
Convergence: 1.000000e­03
Utilisation des fichiers de poids initiaux ? non
Maximum des poids: 1.000000e­01
Minimum des poids: ­1.000000e­01
Type de distribution des poids: Aleatoires
Colonne d'entree no 1: 1
Colonne d'entree no 2: 2
Colonne de sortie no 1: 3
Colonne de sortie no 2: 4
Norm_entree_max( 1): 1.000000e+01
Norm_entree_min( 1): ­1.000000e+01
Mode de lecture( 1): Normale
Norm_entree_max( 2): 1.000000e+01
Norm_entree_min( 2): ­1.000000e+01
Mode de lecture( 2): Normale
Norm_sortie_max( 1): 4.100000e+02
Norm_sortie_min( 1): ­4.500000e+02
Mode de lecture( 1): Normale
Norm_sortie_max( 2): 7.300000e+02
Norm_sortie_min( 2): ­8.300000e+02
Mode de lecture( 2): Normale
Mode de lecture( 2): Normale


6.6 Fichiers cachés 

Le programme crée les fichiers cachés suivants:

.nnFit, .nnfit_gnuplot; .nnfit_preferences; .nnfit_impression

7. Utilisation d'un modèle sans recours à NNFit.

Un modèle étant bâti, il est possible de l'utiliser indépendamment de NNFit, grâce au fichier de poids correspondant. L'utilisateur pourra s'inspirer du programme fortran donné ci-contre.


program freso
real wij(100,100),wjk(100,100),xmin(2,100),xmax(2,100)
real x(100),xmod(2,100),y(100)
* le fichier nomxx.w contient les parametres du modeles:
open(1,file="nomxx.w",status="old")
read(1,*) ii,jj,kk
do 10 i=1,ii
read(1,*) xmax(1,i),xmin(1,i),xmod(1,i)
10 continue
do 20 i=1,kk
read(1,*) xmax(2,i),xmin(2,i),xmod(2,i)
20 continue
do 30 i=1,ii+1
read(1,*) (wij(i,j),j=1,jj)
30 continue
do 40 j=1,jj+1
read(1,*) (wjk(j,k),k=1,kk)
40 continue
* initialiser le vecteur x des entrees: x(i)= ? , de i=1 a ii
call fctreso(ii,jj,kk,wij,wjk,xmax,xmin,xmod,x,y)
* les sorties sont dans le vecteur y*
write(6,*) (y(k),k=1,kk)
end
subroutine fctreso(ii,jj,kk,wij,wjk,xmax,xmin,xmod,x,y)
real wij(100,100),wjk(100,100),xmin(2,100),xmax(2,100)
real x(100),u(100),h(100),s(100),xmod(2,100),y(100)
* les equations du reseau
do 100 i=1,ii
if (xmod(1,i).eq.0.) then
u(i)=(x(i)­xmin(1,i))/(xmax(1,i)­xmin(1,i))
else
u(i)=(log10(x(i))­xmin(1,i))/(xmax(1,i)­xmin(1,i))
endif
100 continue
u(ii+1)=1.
do 110 j=1,jj
h(j)=0.
do 120 i=1,ii+1
120 h(j)=h(j)+wij(i,j)*u(i)
110 h(j)=1./(1.+exp(­h(j)))
h(jj+1)=1.
do 130 k=1,kk
s(k)=0.
do 140 j=1,jj+1
140 s(k)=s(k)+wjk(j,k)*h(j)
s(k)=1./(1.+exp(­s(k)))
y(k)=xmin(2,k)+s(k)*(xmax(2,k)­xmin(2,k))
if(xmod(2,k).eq.1.) then
y(k)=10.**(y(k))j
endif
130 continue
return
end




8. Installation de NNFit



Les versions du programme sont disponibles sous UNIX pour les environnements X de HP, IBM-AIX, SUN ainsi que sous LINUX.

NNFit utilise le système X-Window et le programme GNUPLOT disponibles gratuitement sur le réseau.

9. Remerciements et crédits

L'interface graphique de NNFit utilise la librairie du domaine publique XForms, écrite par Dr. T. C. Zhao and Mark Overmars. Cette librairie et la documentation pertinente sont disponibles sur WWW: http://bragg.phys.uwm.edu/xforms

Le tracé des courbes utilise GNUPLOT, qui fait partie du projet GNU

Le développement de NNFit a été conduit sur un PC compatible IBM avec Linux.

Les professeurs Grandjean et Thibault remercient le Conseil de Recherches en Sciences Naturelles et en génie du Canada pour son soutien financier.