La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Modélisation avec réseaux de neurones sous SCILAB Boîte à outil HYDROGR 23 novembre 2006.

Présentations similaires


Présentation au sujet: "Modélisation avec réseaux de neurones sous SCILAB Boîte à outil HYDROGR 23 novembre 2006."— Transcription de la présentation:

1 Modélisation avec réseaux de neurones sous SCILAB Boîte à outil HYDROGR 23 novembre 2006

2 Programme Introduction SCILAB  Installer HYDROGR  Fonctionnement de SCILAB  Quelques commandes importantes >> Mise en pratique Qu’est-ce qu’un réseau de neurones ?  Concepts de base  Application sur un réseau simple >> Mise en pratique Modélisation par réseaux de neurones  Les étapes  Les fonctions disponibles dans HYDROGR >> Mise en pratique

3 Exemples

4 Nom de l’événement + date Introduction à SCILAB

5 Installer HYDROGR 1. Télécharger le fichier HYDROGRv01.zip (http://lerat.julien.free.fr)http://lerat.julien.free.fr 2. Dezipper dans le répertoire C:\Program Files\Scilab 3.1.1\contrib\ et créer un répertoire HYDROGRv01 3. Supprimer le fichier loader.sce qui se trouve dans C:\Program Files\Scilab 3.1.1\contrib\ Remplacer par le fichier loader.sce qui se trouve dans le répertoire HYDROGRv01 4. Lancer SCILAB

6 Installer HYDROGR Dans SCILAB, l’écran doit être comparable au suivant (la liste des fonctions peut varier suivant les versions d'HYDROGR)

7 Fonctionnement de SCILAB SCILAB =  Prompteur en ligne de commande  Editeur de Script  Aide SCILAB est  Gratuit  Développé par l’INRIA  Comparable à MATLAB  Basé sur un langage interprété (proche du C en bcp plus simple)  CASE SENSITIVE !

8 Entrer une commande Utiliser le prompteur  Taper la commande  Valider par entrée Ecrire un script  Taper dans le prompteur >> écrire ses commandes dans l’éditeur de script (fichier.sce) L’exécuter.. pour cela on peut  Soit taper [Ctrl] + l dans l’éditeur de script  Soit taper exec( [ Nom du fichier contenant le script ] ) dans le prompteur --> a = ones(10,5) --> b = 10 * a’ --> scipad( ) --> exec('C:\MonScript.sce')

9 Quelques instructions importantes Ajouter des commentaires  // Lancer l’aide  help Eviter un affichage sur le prompteur  ; Transposée d’une matrice  ‘ Génération de vecteurs  : Fin de vecteur  $ Matrice  [ ] Faire un graph 2D  plot2d --> // Commentaire --> u = 1 --> u = 1; --> help plot2d --> a = 1:100 --> b = 1:0.01:100 --> c = 100:-1:1 --> a2= a’ --> u = a($-10) --> A = [[1 2];[3 4]] --> plot2d(sin(a))

10 Petits exercices pour pratiquer SCILAB Réaliser les produits matriciels suivants Faire le graph de exp(-x²/10) entre -5 et x = ?

11 Nom de l’événement + date Qu’est ce qu’un réseau de neurones ?

12 Un réseau de neurone c’est… Une méthode de régression non-linéaire (un "prolongement" non linéaire de la régression classique) Un modèle « boîte-noire » estimant une variable à expliquer à partir de variables explicatives Ce n’est pas…  un objet capable de pensée (terme trompeur « d’apprentissage »)  très compliqué… Entrée 1 Entrée 2 Entrée 3 Réseau Sortie calculée Observation ?

13 Vocabulaire Le vocabulaire des réseaux:  Apprentissage = Calage  Nœud = variable intermédiaire  Poids = Paramètre  Couche d’entrée= Ensemble des variables - explicatives  Couche cachée = Variables intermédiaires  Couche de sortie = Variable expliquée  Rétro-propagation = Une méthode de calage  Epoque = Itération de la méthode de - calage  Fonction d’activation = Fonction interne du réseau  Sigmoïde = tangente hyperbolique

14 Architecture générale d’un réseau « feed forward » Les grands types de réseaux  Feed-forward / Récurrents  Apprentissage supervisé / non-supervisé  Perceptron / fonction de base radiale / … Les types de réseaux

15 Comment marche un réseau ? 1. Sommation pondérée des entrées 2. Transformation sigmoïde ( = sortie de la couche cachée) 3. Sommation pondérée des sorties de la couche cachée

16 Pourquoi ça fonctionne ? Association de fonctions « seuils » Ne réagit efficacement qu’autour du seuil, En deçà et au-delà >> saturation Entrée 1 Entrée 2 Sortie

17 Réseau « feed-forward » à une couche cachée, deux entrées et un nœud dans la couche cachée Construction d’un premier réseau Entrée 1 Entrée 2 Sortie Couche cachée Tangente H + Biais : PDcach(1) 0.1 Couche d’entréeCouche de sortie Biais: PDsortie(1) 0.2 Poids 2 : PDcach(3) -0.3 Poids 1 : PDcach(2) 0.4 Poids : PDsortie(2) -0.1 x x x

18 Construction d’un premier réseau Réseau « feed-forward » à une couche cachée, deux entrées et un nœud dans la couche cachée --> // Entrées (convention: stockées en « ligne ») --> EN = [ ; ]; --> // Poids --> PDcach = [ ]; --> PDsortie = [ ]; --> // Mise en oeuvre du réseau (Couche cachée) --> CACH = tanh(PDcach(2:3)*EN + PDcach(1)); --> // Mise en oeuvre du réseau (Couche de sortie) --> SORT = PDsortie(2) * CACH + PDsortie(1); --> subplot(3,1,1),plot2d(EN'),xtitle('Entrees'); --> subplot(3,1,2),plot2d(CACH'),xtitle('Couche c'); --> subplot(3,1,3),plot2d(SORT'),xtitle('Sortie');

19 Modélisation par réseaux de neurones

20 Les étapes 1. Choisir ses variables d’entrée  Pas trop nombreuses (10 grand maximum, plutôt 5)  Vérifier leur pertinence par une analyse graphique (très facile avec Scilab…) 2. Normaliser les variables d’entrée et de sortie pour qu’elles restent dans l’intervalle [-1..1]  De manière classique on retranche la moyenne puis on divise par n fois l’écart-type  Parfois: Suppression de tendance  Attention >> étape importante !

21 Les étapes 3. Choisir une architecture de réseau  Une seule couche cachée  Une seule sortie  Un nombre de nœuds cachés le plus petit possible (faire un essai avec 3 voir 2, puis 4 si cela ne donne rien…)  Il faut être conscient du nombre de paramètres que l'on cale (il peut rapidement devenir plus grand que l'échantillon de calage… ): Ex: 9 entrées, 6 nœuds cachés, 1 sortie >> 67 paramètres

22 Les étapes 4. Lancer le calage plusieurs fois en faisant varier aléatoirement le point départ (i.e. répétitions)  Le nombre de répétitions nécessaire se situe généralement entre 5 (rapide) et 20 (plus sûr) 5. Retenir les paramètres issus de la meilleure répétition et valider le modèle obtenu sur des données indépendantes  De bons résultats en calage ne présument pas de la qualité du modèle

23 Utilisation d'un réseau avec HYDROGR Utiliser la fonction ANN_SIM  Cette fonction calcule la sortie d'un réseau à partir des entrées et des paramètres (matrice des poids) --> // Entrées normalisées --> EN = [ ; ; --> // Réseau --> Ncach = 2; --> // Valeur des poids et biais pour la couche cachée --> Wini = [ ; ]; --> // Valeur des poids et biais pour la couche cachée --> Wini(:,:,2) = [ ; ]; --> // Calcul --> [CIBc] = ANN_SIM(EN,Ncach,1,Wini); --> // Graph --> plot2d([EN' CIBc']);//Entrees sorties --> legends(['EN1' 'EN2' 'CALC'],1:3,'ur'); A compléter, Cf. Fichier 2.MODELISATION RESEAU.sce

24 Calage d'un réseau avec HYDROGR Utiliser la fonction ANN_LMBR  Cette fonction cale un réseau à partir des valeurs initiales des paramètres par la méthode "Levenberg- Marquardt" avec régulation bayesienne (LMBR) --> // Cible du calage du réseau --> // (fonction non lin. que le réseau doit trouver) --> CIB = exp(EN(1,:))+log(EN(2,:)+2); --> CIB = (CIB-2.4)./1.2; --> [W,CIBc,RMSE] = ANN_LMBR(EN,CIB,Ncach,Wini); --> // Graph --> subplot(2,1,1),plot2d([EN' CIB']);//Entrees sorties --> subplot(2,1,2),plot2d([CIB' CIBc']);//Obs. vs calc. Entrées Sortie Nb de nœuds cachés poids initiaux

25 Calage d'un réseau avec HYDROGR Utiliser la fonction ANN_LMBR  Fonctionnement du LMBR : Descente du gradient de l'erreur avec linéarisation au second ordre Composition entre deux fonctions objectif : minimisation de l'erreur et minimisation des paramètres Evolution de la RMSE au fil des itérations (époques) Evolution de la somme des poids Nombre de paramètres "utiles"

26 Démarche complète Utiliser la fonction ANN_REPET. Ce que fait la fonction (dans l'ordre): 1.Normalisation des entrées et sorties 2.Identification de 3 sous-échantillons (P1 = première moitié, P2 = deuxième moitié, P3 = ensemble) 3.Pour chaque partie de l'échantillon : Calage du réseau par LMBR avec répétition de la procédure NR fois (NR à définir, par défaut 30) Détermination de la simulation médiane parmi les NR simulations Renvoi du résultat ATTENTION, cette fonction n'autorise qu'une seule sortie (1 seule variable expliquée)

27 Démarche complète --> // Calage avec répétitions --> [W,CIBc,C,RMSE]=ANN_REPET(EN,CIB,Ncach,'C:\RAND.txt',10); --> // Graph des entrées et sorties --> subplot(2,1,1),plot2d([EN' CIB']); --> // Graph de comparaison observé / modélisé en validation --> subplot(2,1,2),plot2d([CIB' CIBc(:,3:4)]); --> legends(['OBS' 'CALCcal' 'CALCcont'],1:3,'ur'); Entrées Sortie Nb de nœuds cachés Fichier contenant des nombres aléatoires [0..1] Nb de répétitions

28 Démarche complète Analyser les sorties de ANN_REPET  W : 3 jeux de paramètres correspondant aux 3 sous- échantillons. Les paramètres sont stockés en colonne (cf. ANN_W_CONV)  CIBc : Matrice à 4 colonnes contenant les données modélisées: col. 1 = calage sur P1, col. 2 = calage sur P2, col.3 = calage sur P3, col. 4 = validation  C : ensemble de critères calculés sur CIBc(:,4) par rapport à CIB (cf. fonction CRIT)  RMSE :RMSE sur les 3 sous échantillons à l'issue du calage. --> [W,CIBc,C,RMSE]=ANN_REPET(EN,CIB,Ncach,'C:\RAND.txt',10);

29 Compléments

30 Quelques instructions utiles sous SCILAB size : taille d’une matrice for … end : boucle for if.. then … else : condition find : identifier des éléments dans une matrice mean : moyenne par colonne ou par ligne st_deviation : Ec. type par colonne ou par ligne zeros : générer une matrice de zeros ones : générer une matrice de 1 diag : matrice carrée à partir d’une diagonale rand : générer une matrice de nb aléatoires execstr : évaluer une expression SCILAB convol : convolution discrète (>> HU) corr : auto-corrélation, corrélation croisée gsort : trier les éléments d’une matrice linear_interpn : Interpolation linéaire

31 La matrice des poids dans HYDROGR Deux matrices à 2 dimensions Couche entrée >> cachée Couche cachée >> sortie Ne = Nb entrée Nc = Nb nœud cach. Ns = 1 sortie BiaisPoids Nœud de la couche cach.1 IN 1 (somme pondérée des entrées du nœud 1) OUT 1 (sortie de la sigmoïde du nœud 1) IN = Entrée 1 * Pe Entrée 2 * Pe Entrée 3 * Pe Be 1 OUT = tanh(IN) Nœud de sortie1 CACH (somme pondérée des couches cachées) FINAL 1 (sortie finale du nœud de sortie 1) CACH = OUT 1 * Ps OUT 2 * Ps OUT 3 * Ps Bs 1 FINAL1= CACH BiaisPoids

32 Normaliser les variables sous HYDROGR Utiliser la fonction ANN_NORM  Cette fonction normalise en retranchant la moyenne et en divisant par N fois l'écart-type.  Deux "sens" possibles: transformation de données brutes en normalisées ou l'inverse (en fournissant des moyennes et écart-type pour chaque variable) --> // Entrées non normalisées --> EN = [ ; ]'; --> // Normalisation --> [EN2,ENm,ENstd]=ANN_NORM(EN,'raw2norm',2); --> // Graph --> subplot(2,1,1),plot2d(EN'),xtitle('Entrees brutes'); --> subplot(2,1,2),plot2d(EN2'),xtitle('Entrees norm.'); ² N A compléter, Cf. Fichier 2.MODELISATION RESEAU.sce


Télécharger ppt "Modélisation avec réseaux de neurones sous SCILAB Boîte à outil HYDROGR 23 novembre 2006."

Présentations similaires


Annonces Google