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

Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

Eléments d'algèbre linéaire
Corrélation Position du problème Définition covariance (X,Y) r =
Tris.
Présentation du prototype :
Chapitre annexe. Récursivité
AUTRES ASPECTS DU GPS Partie I : tolérance de Battement
Présentation de la société, des logiciels et des services
Portée des variables VBA & Excel
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
A Pyramid Approach to Subpixel Registration Based on Intensity
Autorisations Utilisation eCATT
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Analyse de la variance à un facteur
MATLAB Initiation à Matlab.
Initiation à la programmation et algorithmique cours 3
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
INTRODUCTION A MATLAB ENVIRONNEMENT MATLAB.
Microsoft Excel Avancé
Un neurone élémentaire
Calcul et programmation au lycée avec Scilab
Récursivité.
Application des algorithmes génétiques
Pourquoi les réseaux de neurones de type « perceptron multicouche » conviennent-ils à l’apprentissage Stéphane Canu, INSA de Rouen , PSI André Elisseeff,
ASI 3 Méthodes numériques pour l’ingénieur
Cours Corporate finance Eléments de théorie du portefeuille Le Medaf
Méthode des k plus proches voisins
Inversion / Res2dinv Thème 2 = « Organisation et fonctionnement hydrique des couvertures d’altération, des dépôts alluviaux et des sols » devient dans.
1 CLUB DES UTILISATEURS SAS DE QUÉBEC COMMENT TRANSFORMER UN PROGRAMME SAS EN TÂCHE PLANIFIÉE SOUS WINDOWS Présentation de Jacques Pagé STRiCT Technologies.
STATISTIQUES – PROBABILITÉS
1.Un rang de données multicolores 2. Deux permutations des n premiers entiers 3. b permutations des k premiers entiers 4. Choix de n points dans [0,1]
Algèbre linéaire (GCI –100)
Les réseaux de neurones
Courbes de Bézier.
Les modèles linéaires (Generalized Linear Models, GLM)
Corrélation Principe fondamental d’une analyse de corrélation
Mise en oeuvre des MMCs L'utilisation des MMCs en reconnaissance des formes s'effectue en trois étapes : définition de la topologie de la chaîne de Markov,
Initiation à la programmation en Python
Texture 2D en PGC++.
Les réseaux de neurones artificiels (RNA)
Chapitre 5 Prévisions.
ASI 3 Méthodes numériques pour l’ingénieur
1 GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 8 Filtres UNIX.
Animateur : Med HAIJOUBI
Présentation de la méthode des Eléments Finis
Utilisation avancée de linux
Question 1 Une série d'échantillons sont analysés dans un laboratoire. On constate que la teneur en carbone des différents échantillons varie d'un échantillon.
Régression linéaire multiple : hypothèses & interprétation. Partie 2.
Apprentissage avec un réseau de neurones artificiels
MatLab: Notions de Programmation Applications en Finance
PHP & My SQL.
ASI 3 Méthodes numériques pour l’ingénieur
- énergie bornée (tend vers 0 lorsque
Suites numériques Définitions.
Introduction.
Energie d’un signal, énergie d’interaction, analogie avec l’électrocinétique
Digitaliser des images
Rappels de statistiques descriptives
Université de Sherbrooke
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Christelle Scharff IFI 2004
STATISTIQUES – PROBABILITÉS
Les réseaux de neurones à réservoir en traitement d’images
Matlab (Matrix Laboratory)
TNS et Analyse Spectrale
Méthode des moindres carrés (1)
Scripts et fonctions Instructions de contrôle
A.Aarabi ´. ´ Objectifs Faciliter la prise en main du logiciel MATLAB Présenter les fonctionnalités utiles au travail scientifique.
Matlab (Matrix Laboratory) Langage de programmation évolué. Traitement direct d’opérations matricielles, dont l’inversion et l’analyse d’opérateurs ou.
Transcription de la présentation:

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

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

Exemples

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

Installer HYDROGR Télécharger le fichier HYDROGRv01.zip (http://lerat.julien.free.fr) 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

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

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 !

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')

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))

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 = ?

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

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

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

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 / …

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

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

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

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 = [ 0.28 0.87 1.35 0.97 0.86 0.06 -0.22 -0.81 -0.67 -0.09; 0.21 0.12 0.46 0.05 0.23 0.19 0.01 0.25 0.41 0.3 ]; --> // Poids --> PDcach = [0.1 0.4 -0.3]; --> PDsortie = [-0.1 0.2]; --> // 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');

Modélisation par réseaux de neurones

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 !

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

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

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 = [ 0.04 0.16 ; 0.72 0.95 ; --> // Réseau --> Ncach = 2; --> // Valeur des poids et biais pour la couche cachée --> Wini = [0.09 0.73 0.78; 0.07 0.77 0.21]; --> // Valeur des poids et biais pour la couche cachée --> Wini(:,:,2) = [0.34 0.62 0.45; 0.00 0.00 0.00]; --> // 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

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

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"

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)

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');

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);

Compléments

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

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 2-1 + 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 2-1 + OUT 3 * Ps 3-1 + Bs 1 FINAL1= CACH Biais Poids

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 = [ 0.04 0.16 ; ]'; --> // 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