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
i0
 
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
l0
  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 

l0
w2k l h l
 
h l  f 1 v1l


 v2 k
w1 j i
 hl


n1


l0
w2k l
 hl
w1 j i
 v1l
 f 1' v1l
w1 j i
w1 j i
 
Avec :
n0
v1l 
 w1l m x m
m0
  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

Documents pareils