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 >> Mise en pratique
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 Modélisation par réseaux de neurones Les étapes Les fonctions disponibles dans HYDROGR

3 Exemples

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

5 Installer HYDROGR Télécharger le fichier HYDROGRv01.zip ( Dezipper dans le répertoire C:\Program Files\Scilab 3.1.1\contrib\ et créer un répertoire HYDROGRv01 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 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
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 Ecrire un script
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( ) --> 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 5 1 10 -5 2 6 3 4 5 1 -1 2 -10 3 45 x = ?

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

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é… Réseau Entrée 1 Sortie calculée Entrée 2 ? Entrée 3 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 Les types de réseaux 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 / …

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 Sortie Entrée 2 Entrée 1

17 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 Poids 1 : PDcach(2) 0.4 Entrée 1 Tangente H x + x Sortie Biais : PDcach(1) 0.1 Poids : PDsortie(2) -0.1 Biais: PDsortie(1) 0.2 Poids 2 : PDcach(3) -0.3 x Entrée 2 Couche d’entrée Couche cachée Couche de sortie

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 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…) 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 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 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) 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. Nb de nœuds cachés poids initiaux Entrées Sortie

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): Normalisation des entrées et sorties Identification de 3 sous-échantillons (P1 = première moitié, P2 = deuxième moitié, P3 = ensemble) 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 Fichier contenant des nombres aléatoires [0..1]
Démarche complète Nb de nœuds cachés Sortie Entrées Fichier contenant des nombres aléatoires [0..1] Nb de répétitions --> // 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');

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
Ne = Nb entrée Nc = Nb nœud cach. Ns = 1 sortie La matrice des poids dans HYDROGR Deux matrices à 2 dimensions Nœud de la couche cach.1 Couche entrée >> cachée OUT 1 (sortie de la sigmoïde du nœud 1) IN 1 (somme pondérée des entrées du nœud 1) IN = Entrée 1 * Pe 1-1 + Entrée 2 * Pe Entrée 3 * Pe 3-1 + Be 1 OUT = tanh(IN) Biais Poids Couche cachée >> sortie 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 1-1 + OUT 2 * Ps OUT 3 * Ps 3-1 + Bs 1 FINAL1= CACH Biais Poids

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.'); ² A compléter, Cf. Fichier 2.MODELISATION RESEAU.sce N


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