Introduction aux réseaux de neurones artificiels
Transcription
Introduction aux réseaux de neurones artificiels
Introduction aux réseaux de neurones artificiels A. Introduction Le cerveau capable d’apprendre et de réaliser des raisonnements complexes est constitué d’un très grand nombre de neurones (environ 1015) reliés entre eux (entre 103 et 104 connexions par neurones). Les réseaux de neurones artificiels ont été développés avec pour objectifs principaux d’une part la modélisation et compréhension du fonctionnement du cerveau et d’autre part pour réaliser des architectures ou des algorithmes d’intelligence artificielle. Il existe de nombreuses applications pratiques de ces réseaux. Nous nous limitons ici à l’introduction des principes de fonctionnement de quelques exemples de réseaux et à deux applications importantes pour l’analyse de données, à savoir la classification et l’approximation de fonctions. Commençons par l’élément de base : le neurone. A.1. Neurone artificiel Le principe de fonctionnement d’un neurone artificiel peut être résumé par le schéma suivant : Fig. 7-1 : Schéma d’un neurone artificiel Un neurone artificiel est une unité de traitement qui dispose de n entrées {xi}i=1,…,n et d’une sortie y. Cette sortie correspond à la transformation par une fonction d’une somme pondérée des entrées : n y f ( v) avec v w 0 wi xi i 1 Les quantités {wi}i=0,…,n sont les poids du neurone. La fonction f est appelée fonction d’activation ou fonction de transfert du neurone. Les fonctions les plus communément utilisées sont la fonction échelon unité ou Heaviside, la fonction signe, la fonction linéaire ou semi-linéaire, la fonction tangente hyperbolique, ou la fonction sigmoïde. S. Tisserant – Eléments de Statistique – 2009 7-1 La fonction sigmoïde, dont l’allure est présentée sur la figure 7-2, est définie par : f (x) 1 1 e x Fig. 7-2 : Sigmoïde A.2. Premier exemple de classification à l’aide d’un neurone Reprenons l’exemple de l’analyse discriminante linéaire rencontrée dans le chapitre 5. Nous considérons des événements caractérisés par un ensemble de p mesures (nombres et types de particules, impulsions, énergies, etc.) que nous notons {xi}i=1,…,p. Nous souhaitons classer ces événements entre deux classes. Nous avons vu avec la méthode de Fisher qu’il est possible de déterminer un hyperplan séparant au mieux les deux classes dans l’espace de mesures. Un hyperplan peut être défini par une équation linéaire : p ai xi b i 1 La classification des événements par rapport à cet hyperplan est donnée par le signe de : p f ( x1 ,..., x p ) ai xi b i 1 Elle peut donc être réalisée par un neurone artificiel, tel que présenté dans le paragraphe précédent, avec p entrées si les coefficients {ai}i=1,…,p et b sont choisis comme poids et avec, par exemple la fonction échelon pour activation. La sortie de ce neurone est binaire. La méthode du discriminant de Fisher nous permet de calculer les poids à partir d’un lot d’événements d’apprentissage pour lesquels la classe d’appartenance est connue. Mais des méthodes d’apprentissage itératives simples ont été développées pour les réseaux de neurones. C’est une de leurs forces. S. Tisserant – Eléments de Statistique – 2009 7-2 Présentons une de ces méthodes pour l’exemple qui nous intéresse dans ce paragraphe. Nous supposons que nous disposons d’un échantillon d’apprentissage de n événements dont nous connaissons la classe d’appartenance ainsi que les mesures. Pour chaque événement d’apprentissage nous notons x l’ensemble de ses mesures et d sa classe (0 ou 1). Le principe de l’apprentissage peut être décrit par l’algorithme suivant : 1. Choix aléatoire des poids 2. Présentation d’un événement d’apprentissage en entrée et calcul de la sortie y(x) 3. Modification des poids : w 'i w i [d y(x)] x i w '0 w 0 [d y(x)] 4. Retour à l’étape 2 On peut montrer que si les deux classes sont séparées le processus converge, sinon il y a oscillation autour d’une position d’équilibre. La figure suivante illustre le résultat obtenu avec cette méthode pour des événements d’apprentissage relativement bien séparés. La droite en pointillés indique l’hyperplan de séparation. Fig. 7-3 : Exemple de classification obtenue avec un neurone L’ordre de présentation des événements d’apprentissage est important. Le résultat précédent a été obtenu avec un choix aléatoire des événements. Les deux résultats présentés sur la figure suivante ont été obtenus en présentant d’abord les événements d’une classe puis ceux de l’autre classe. La droite de séparation est visiblement sensible à l’ordre de ce choix. Celui-ci peut ainsi privilégier une classe. S. Tisserant – Eléments de Statistique – 2009 7-3 Fig. 7-4 : Importance de l’ordre de présentation des événements d’apprentissage. A gauche les événements rouges sont présentés avant les bleus. A droit c’est l’inverse. Même si ce premier exemple nous a permis d’illustrer l’efficacité d’un seul neurone binaire, il ne peut cependant pas traiter tous les problèmes de classification. Pour cela il faut associer des neurones en un réseau. B. Perceptron multicouches Il existe de nombreuses architectures de réseaux. Nous abordons ici une organisation des neurones en couches sans boucle ni rétroaction. Les perceptrons multicouches sont utilisés dans environ 50 % des applications pratiques de réseaux de neurones. B.1. Architecture en couches L’architecture qui nous intéresse est présentée sur la figure 7-5. Les neurones sont groupés en couches (trois sur la figure). Les données se propagent de la gauche vers la droite, de couche en couche. Les entrées sont transmises en parallèle aux neurones de la première couche. Les sorties de ceux-ci sont connectées en parallèle aux neurones de la deuxième couche et ainsi de suite. Il n’y a aucune connexion vers des couches précédentes, ni à l’intérieur d’une même couche. La dernière couche est souvent appelée couche de sortie alors que les autres constituent les couches cachées du réseau de neurones. Le réseau représenté sur la figure 7-5 a deux couches cachées. Chaque neurone dispose de son propre jeu de poids. Les neurones d’une même couche ont tous la même fonction d’activation. Celle-ci est en général une sigmoïde pour les couches cachées. Selon les applications, pour la couche de sortie ce peut être également une sigmoïde ou une fonction linéaire. S. Tisserant – Eléments de Statistique – 2009 7-4 Fig. 7-5 : Perceptron à trois couches B.2. Apprentissage L’objectif de l’apprentissage est d’optimiser l’ensemble des poids. Il repose sur un lot de données d’apprentissage pour lesquelles on connaît les sorties à obtenir. L’optimisation consiste à minimiser un coût. Dans nos applications ce coût est généralement une erreur quadratique. Considérons un réseau dont la couche de sortie est constituée de n neurones. Pour un événement d’apprentissage notons d le vecteur sortie attendu et y le vecteur sortie calculé par le réseau de neurone. L’erreur quadratique à minimiser est définie comme : 1 E 2 n y k d k 2 k 1 où yk et dk représentent les composantes des vecteurs y et d. L’optimum étant impossible à déterminer analytiquement on utilise des techniques numériques. La plus simple correspond à la descente de gradient présentée en annexe. Nous allons développer dans la suite de ce paragraphe cette méthode appliquée à un réseau à deux couches. Pour limiter les risques de confusion, commençons par expliciter nos notations : - n0 : nombre d’entrées - n1 : nombre de neurones de la couche cachée - n2 : nombre de neurones de la couche de sortie - x i : entrées du réseau avec i = 0,…,n0-1 - h i : sorties de la couche cachée avec i = 0,…,n1-1 - y i : sorties du réseau avec i = 0,…,n2-1 - w1 j i : poids de la couche cachée avec j = 0,…,n1-1 et i = 0,…,n0 - w 2 j i : poids de la couche de sortie avec j = 0,…,n2-1 et i = 0,…,n1 S. Tisserant – Eléments de Statistique – 2009 7-5 - f1 : fonction d’activation de la couche cachée - f2 : fonction d’activation de la couche de sortie - v1i : sommes pondérées de la couche cachée avec i = 0,…,n1-1 - v 2 i : sommes pondérées de la couche de sortie avec i = 0,…,n2-1 - d i : sorties attendues pour un événement d’apprentissage avec i = 0,…,n2-1 Avec ces notations nous avons pour les sorties de la couche cachée (0 j < n1) : n0 v1 j w1j i x i avec x n 0 1 i 0 et h j f 1 v1 j De même pour les sorties du réseau (0 j < n2) : n1 v2 j w2 ji hi avec h n1 1 i0 et y j f 2 v2 j L’erreur quadratique s’écrit : 1 E 2 n 2 1 y k d k 2 k 0 Commençons par l’optimisation des poids de la couche de sortie. Calculons le gradient de E par rapport à ces poids : E w 2 j i n 2 1 k 0 Or : y k f 2 v2 k y y k d k w 2kj i yk v2 k f 2' v2 k w 2 j i w 2 j i Avec : n1 v2 k w2k l h l l0 v2 k 0 si k j w 2 j i v2 j hi w 2 j i Ce qui nous donne : S. Tisserant – Eléments de Statistique – 2009 7-6 E y j d j f 2' v2 j h i w 2 j i Ce que nous pouvons écrire : E 2 j h i w 2 j i avec 2 j y j d j f 2' v2 j Cette dérivée s’écrit comme le produit d’une entrée (pour la couche de sortie) h i et d’un terme 2j faisant intervenir l’écart entre les sorties obtenue et attendue ainsi que la dérivée de la fonction d’activation de la couche de sortie. La correction à appliquer à chacun des poids de cette couche est alors : w 2 j i E 2 j h i w 2 j i où le paramètre est le paramètre d’apprentissage. Calculons maintenant le gradient par rapport aux poids de la couche cachée : E w1 j i n 2 1 yk y d k k w1 k 0 ji Or : y k f 2 v2 k yk v2 k f 2' v2 k w1 j i w1 j i n1 v2 k l0 w2k l h l h l f 1 v1l v2 k w1 j i hl n1 l0 w2k l hl w1 j i v1l f 1' v1l w1 j i w1 j i Avec : n0 v1l w1l m x m m0 v1l 0 si l j w 1 ji v1 j xi w 1 ji En reportant dans les expressions précédentes il vient : S. Tisserant – Eléments de Statistique – 2009 7-7 hl 0 si l j w1 j i hj f 1' v1 j x i w1 j i Ce qui donne : v2 k w1 j i Donc : yk w1 j i w 2 k j f 1' v1 j x i f 2' v2 k w 2 k j f 1' v1 j x i Soit pour le gradient : E w1 j i n 2 1 y k d k f 2' v2k w 2k j f1' v1j x i k 0 n 2 1 E y k d k f 2' v2 k w 2 k j f 1' v1 j x i w1 j i k 0 Nous retrouvons les quantités 2k introduites plus haut dans l’expression du gradient par rapport aux poids de la couche de sorties. Ce qui nous permet d’écrire : n 2 1 E 2 k w 2 k j f 1' v1 j x i w1 j i k 0 Nous pouvons écrire cette dérivée sous une forme similaire à celle obtenue pour la couche de sortie : n 2 1 E 1 j x i avec 1 j 2 k w 2 k j f 1' v1 j w1 j i k 0 Nous en déduisons la correction à appliquer à chacun des poids de la couche cachée : w1 j i E 1 j x i w1 j i La méthode se généralise à un nombre quelconque de couches cachées. Les corrections des poids peuvent ainsi se calculer de couche en couche en commençant par la couche de sortie. Cet algorithme est souvent appelé rétropropagation des erreurs. S. Tisserant – Eléments de Statistique – 2009 7-8 B.3. Un exemple de classification non linéaire Pour illustrer les capacités d’un réseau de neurone nous avons réalisé une simulation simple. Celle-ci consiste en un tirage uniforme sur une surface carrée au centre de laquelle nous avons défini deux cercles concentriques. A l’intérieur du cercle de plus petit rayon les événements sont de type 1 alors qu’ils sont du type 2 à l’extérieur de l’autre cercle. Dans la couronne intermédiaire le type de chaque événement est aléatoire avec une probabilité variant linéairement en fonction du rayon, pour assurer une continuité entre les deux zones pures. La figure 7-6 visualise le lot d’apprentissage comptant 6000 tirages. Fig. 7-6 : Lot d’apprentissage Ces événements ont été utilisés pour entrainer un réseau de neurones artificiels comprenant une couche cachée de 10 neurones et un neurone de sortie. Ces onze neurones ont tous pour fonction d’activation une sigmoïde. Les entrées du réseau correspondent évidemment aux deux coordonnées dans le plan. La sortie attendue est 1 pour des événements de type 1 et 0 pour le type 2. La phase d’apprentissage a permis de définir tous les poids. Ceux-ci peuvent ensuite être utilisés pour prédire le type de tout événement. La figure 7-7 présente la sortie du réseau de neurones après apprentissage en fonction des coordonnées dans le plan. Le code de couleur indiqué sur la droite de la figure correspond à la sortie du réseau de neurone. Les deux cercles utilisés lors du tirage sont indiqués, ce qui permet de vérifier le bon fonctionnement même si les zones ne sont pas parfaitement circulaires. La classification pourra se faire en définissant un seuil sur la sortie du réseau de neurones. La figure 7-8 présente les distributions de cette sortie pour les événements d’apprentissage. Ces distributions sont relativement bien piquées, vers 1 pour les événements de type 1 et vers 0 pour l’autre type. Le seuil peut être défini à l’aide de ces distributions en choisissant par exemple d’un niveau de confiance pour un type d’événements. S. Tisserant – Eléments de Statistique – 2009 7-9 Fig. 7-7 : Sortie du réseau de neurone en fonction des coordonnées. Fig. 7-8 : Distribution de la sortie du réseau de neurone pour les événements d’apprentissage de type 1 en rouge et de type 2 en bleu. Lorsque les événements se répartissent dans Q classes il est possible d’utiliser un réseau comportant Q-1 neurones en sortie pour les classer. Chacune des sorties sert à identifier (dépassement d’un seuil) une classe. Les événements pour lesquels aucune sortie ne dépasse son seuil sont rangés dans la dernière classe. Il existe un autre type d’applications des réseaux de neurones artificiels qui nous concerne en analyse de données, il s’agit de l’approximation de fonctions. S. Tisserant – Eléments de Statistique – 2009 7-10 C. Approximation de fonctions Le principe de l’approximation de fonctions avec un réseau de neurones repose sur le théorème de Cybenko. Pour toute fonction f(x) réelle définie sur un compact de ℝn et pour tout réel positif il existe une fonction F(x) définie par : i w i T x i N F(x) i 1 telle que : f (x) F(x) sur le domaine de définition de f. La fonction désigne une sigmoïde et les paramètres , w et sont des réels. Ainsi quelque soit la précision recherchée il est possible de représenter toute fonction par un réseau de neurones artificiels ayant une couche cachée, la fonction d’activation étant une sigmoïde pour ces neurones et linéaire pour le neurone de sortie. Le théorème ne permet pas de préciser a priori le nombre de neurones dans la couche cachée. Fig. 7-9 : Approximation d’une fonction par un réseau de neurones. La figure 7-9 correspond à l’approximation de la fonction sinus cardinal entre 0 et 20. La courbe verte représente sinc(x) et les cercles matérialisent les points utilisés pour l’apprentissage. Le réseau utilisé ici comporte 10 neurones dans la couche cachée. La courbe noire visualise la sortie du réseau de neurones. Elle se superpose parfaitement à la courbe théorique. S. Tisserant – Eléments de Statistique – 2009 7-11