Vous êtes sur la page 1sur 15

Corrigé du

Devoir surveillé de Reconnaissance de Formes – I3 Informatique


Mardi 28 janvier 2003 - durée : 2 heures
Tous documents autorisés
Noté sur 30 points (/20)

Exercice 1 : Classification, d’un point de vue général (4 points)

On dispose d’un certain nombre de vecteurs d’exemples pour 2 classes. On souhaite


réaliser une classification en 2 classes, à l’aide d’un classifieur quelconque.
1) Donnez les différentes étapes à suivre, sous forme d’algorithme de haut niveau (mais avec
suffisamment d’informations pour permettre à une autre personne sans connaissance du
domaine mais sachant programmer, de les programmer), pour réaliser un apprentissage de
ces données, ainsi qu’un test de classification avec calcul des taux de classification
correcte, en mode d’apprentissage instantané. (2 points)
2) Même chose en mode d’apprentissage différé (ne donner que les parties différentes par
rapport à la question précédente). (1 point)
3) Précisez la fonction de classification, toujours sous forme algorithmique, dans le cas où le
type de classification utilisée est l’apprentissage compétitif supervisé (avec plusieurs
vecteurs représentatifs par classe). (1 point)

On peut par exemple écrire séparément les différentes parties de l’algorithme. On suppose
qu’avant la construction et l’utilisation du classifieur, deux étapes préalables ont été réalisées :
! Constitution d’une base d’apprentissage et d’une base de test
! Initialisation des paramètres du classifieur (exemple : initialisation des poids d’un
réseau de neurones à des valeurs aléatoires).
On considère le cas de l’apprentissage supervisé, pour lequel existent les modes
d’apprentissage instantané et différé. On s’intéresse d’abord au cas de l’apprentissage
instantané.

Apprentissage pour un cycle (1 cycle=présentation de tous les exemples d’apprentissage)


Pour chaque exemple de la base d’apprentissage
Début
Présentation de cet exemple au classifieur
Calcul de la sortie du classifieur
Calcul de l’erreur de sortie
Modification des paramètres du classifieur, en fonction de l’erreur
Fin

Test de classification
Initialisation d’un compteur à 0, pour chaque classe
Pour chaque exemple de la base de test
Début
Présentation de cet exemple au classifieur
Activation du classifieur
Si cet exemple est correctement reconnu
Début
Incrémentation du compteur de sa classe
Fin
Fin

Benoît Decoux 1
Calcul des taux de reconnaissance
Pour chaque classe
Début
Taux de reconnaissance de cette classe=
Compteur de cette classe / nombre d’exemples de cette classe (dans la base de test)
Fin

En mode d’apprentissage instantané, ces différentes parties de l’algorithme général


s’organisent de la façon suivante :

Construction et évaluation du classifieur


Pour chaque cycle d’apprentissage (*)
Début
Apprentissage pour un cycle
Test de classification
Calcul des taux de reconnaissance
Fin

(*) jusqu’à convergence d’un critère, ou pour un nombre d’itérations fixé par l’utilisateur

2)
Dans le cas de l’apprentissage en mode différé, le taux d’erreurs est cumulé sur
l’ensemble des exemples d’apprentissage. La partie de l’algorithme concernant
l’apprentissage est donc remplacée par une accumulation des erreurs :

Accumulation des erreurs sur un cycle


Pour chaque exemple de la base d’apprentissage
Début
Présentation de l’exemple au classifieur
Activation du classifieur
Calcul de l’erreur de sortie et accumulation de cette erreur
Fin

L’apprentissage proprement dit (modification des paramètres du classifieur) se produit


maintenant dans la fonction principale :

Construction et évaluation du classifieur


Pour chaque cycle d’apprentissage
Début
Accumulation des erreurs sur un cycle
Modification des paramètres du classifieur, en fonction de cette erreur
Calcul des taux de reconnaissance
Fin

3)
Avec la classification par apprentissage compétitif supervisé, dans le cas du mode
d’apprentissage instantané, la ligne "Modification des paramètres du classifieur, en fonction
de l’erreur", se détaille de la façon suivante :

Benoît Decoux 2
Modification des paramètres du classifieur, en fonction de l’erreur
j ← indice de la classe du représentant le plus proche de cet exemple
si j est l’indice de sa classe correcte
ajouter à wij : ∆w ij = +α.( x i − w ij ).y j
si j n’est pas l’indice de sa classe correcte
ajouter à wij : ∆w ij = −α.( x i − w ij ).y j

On peut détailler encore plus cette partie de l’algorithme pour faire apparaître le fait qu’il
peut exister plusieurs représentants par classe :

Recherche de la classe du représentant le plus proche de l’exemple à classer


Pour chaque classe
Début
Pour chaque représentant de cette classe
Début
Calcul de la distance entre l’exemple à classer et ce représentant
Mémorisation de cette distance si c’est la plus petite de toutes les distances
calculées auparavant
Fin
Fin
Affectation à l’exemple à classer de la classe du représentant le plus proche de lui

Exercice 2 : Fonctions radiales de base (6 points)

On considère un réseau à deux couches de neurones.


La première couche est composée de 4 neurones à fonctions radiales de base, dont la
fonction d’activation est définie par :
 ( x − x (jc ) )C −1 ( x − x (jc ) ) 
g j ( x ) = exp  , j=1, 2, 3, 4
 2 
 
où x est un vecteur d’entrée à 2 dimensions et x j le vecteur central de la fonction gj(x). C-1
(c)

est l’inverse d’une matrice de covariance, supposée égale à :


 1 0
C −1 =  
 0 1 
La seconde couche du réseau est composée de 2 neurones linéaires, c’est à dire dont la
fonction d’activation est définie par :
4
y k = ∑ w jk g j ( x ) , k=1, 2
j=1

où wjk est le poids de la connexion reliant le je neurone de la 1ère couche au ke neurone de la


couche de sortie.
On souhaite utiliser ce réseau pour classifier correctement les vecteurs des 2 ensembles A
et B suivants :
  0   1   1   1   2   5   5   6   6 
A = a 1  , a 2  , a 3  , a 4  , a 5  , a 6  , a 7  , a 8  , a 9  
  4   3   4   5   4   1   2   1   2 
et
  2   3   4 
B = b1  , b 2  , b 3  
  1   2   3 

Benoît Decoux 3
1) Rappelez le principe de la classification par un réseau à fonctions radiales de base, une
fois ses paramètres déterminés, par apprentissage ou non. (1 point)
2) Déterminez un ensemble de paramètres x (jc ) et wjk adéquats pour que le réseau classifie
correctement les vecteurs à 2 dimensions de la figure ci-dessus, appartenant aux 2 classes
A ou B (sans calculs, en utilisant un raisonnement géométrique). (1 point)
 2  4
3) On ajoute les vecteurs b 4   et b 5   à l’ensemble B. Modifiez en conséquence un ou
 3 1
plusieurs poids du réseau pour que la classification de tous les vecteurs de A et de B reste
correcte. (1 point)
4) On suppose les poids wjk tous fixés à 1. Modifiez une ou plusieurs matrice de covariance
pour que la classification de tous les vecteurs de A et B (avec ses 2 vecteurs ajoutés) soit
correcte. (1 point)
5) On suppose maintenant les poids de sortie du réseau initialisés aléatoirement. Proposez un
moyen d’ajuster ces poids à des valeurs adéquates, de manière automatique (sans faire de
calculs mais en décrivant les différentes étapes). (1 point)
6) Déterminer (sans calcul) des paramètres adéquats d’un réseau à fonctions radiales de base
capable de résoudre le problème du OU exclusif. (1 point)

1)
Après détermination des paramètres d’un réseau à fonctions radiales de base, un vecteur à
classifier est présenté en entrée du réseau, ce dernier est activé et la classe représentée par la
sortie dont la réponse est maximale, est associée à ce vecteur.
L’activation du réseau comporte 2 étapes successives : d’abord calcul des sorties des
neurones gaussiens puis calcul des sorties des neurones linéaires de sortie du réseau.

2)
Si l’on observe la répartition des points on s’aperçoit que les 2 classes ne sont pas
linéairement séparables. Ces points sont répartis en 3 groupes distincts. Il suffit donc de
centrer une gaussienne sur chacun des groupes.
Il y a 4 gaussiennes disponibles mais en fait 3 suffiraient à réaliser une classification
correcte.
Le premier groupe est constitué par les 5 premiers points de A. On calcule donc la
moyenne de ces 5 points :
x (Ac1) (1 4 )
t

De même pour les 4 derniers points de A :


x (Ac2) (5,5 1,5)
t

et les points de B :
x (Bc ) (3 2 )
t

Ces moyennes constitueront chacune le centre d’une gaussienne.

Pour le choix des wjk, il suffit de prendre la même valeur pour tous puisque tous les points
des 3 groupes sont plus proches du centre d’une gaussienne codant leur classe, que du centre
d’autres gaussiennes. On peut donc prendre par exemple wjk=1.

3)
Si on ajoute ces 2 points, on s’aperçoit que l’un d’entre eux est à égale distance du centre
de la 2e gaussienne (codant la classe B, sa classe), que de la 1ère gaussienne (codant la classe

Benoît Decoux 4
A). Il faut donc pondérer la gaussienne B de façon plus importante, pour le 2e neurone de
sortie (codant la classe B). Par exemple w22=1,1 (si la gaussienne B possède l’indice 2).

4)
Si on ne peut pas jouer sur les poids de sortie wjk pour réaliser une classification correcte,
on peut jouer sur l’étalement des gaussiennes. Par exemple en augmentant un peu l’étalement
de la gaussienne centrée sur les points de B, le point qui pose problème provoquera une
réponse plus importante du neurone gaussien correspondant, et par conséquent une réponse
plus importante du neurone de sortie codant la classe B.
On peut donc prendre par exemple :
1,1 0 
C B−1 =  
 0 1,1
5)
Pour ajuster automatiquement les poids de sortie du réseau, on peut utiliser la règle
d’apprentissage supervisé du perceptron.
Les étapes à suivre successivement sont alors les suivantes :
• Adaptation des centres et des étendues des gaussiennes, par apprentissage ou
manuellement (comme ci-dessus) ;
• Adaptation des poids des neurones de sortie par apprentissage supervisé, par exemple
en mode instantané (étapes répétées un certain nombre de fois) :
- Présentation d’un vecteur en entrée du réseau
- Activation du réseau (d’abord neurones gaussiens puis neurones de sortie)
- Calcul de l’erreur de sortie
- Adaptation des poids : on leur ajoute la variation
∆wij = α .( y (j d ) − y j ). x i

y (j d ) est la sortie désirée du neurone de sortie j, et
yj est la sortie effective de ce neurone.

6)
Comme ci-dessus on considère le cas à 2 dimensions, c’est à dire à 2 entrées.
Le principe est le même que pour les ensembles de points utilisés ci-dessus, sauf que dans
le cas du OU exclusif il n’y a que 4 points (les 4 combinaisons possibles d’entrée),
appartenant à 2 classes (0 ou 1).
On peut par exemple utiliser 4 gaussiennes, centrée chacune sur un point. Les centres de
ces gaussiennes seraient donc :
(0, 0), (0, 1), (1, 0), (1, 1)
L’étalement des gaussiennes n’a pas beaucoup d’importance (on peut prendre les mêmes
matrices de covariances que ci-dessus), et les poids de sortie peuvent être pris tous égaux, à 1
par exemple.

Exercice 3 : Perceptron monocouche (6 points)

On considère un neurone à seuil à 2 entrées, dont la fonction d’activation est définie par :
 2 
y = s ∑ w i x i 
 i=1 
avec s(x)=1 si x≥0
0 sinon.

Benoît Decoux 5
On souhaite déterminer des poids adéquats pour classifier correctement les 2 vecteurs à 2
dimensions suivants, appartenant à 2 classes, respectivement A et B :
1  2
a   et b 
 2 1
On impose que la classe A soit codée par l’état 1 du neurone, et la classe B par l’état 0. On
appelle x1 la 1ère coordonnée de ces points et x2 la 2e.
1) Donnez les caractéristiques de la droite de séparation du plan (x1,x2) réalisée par ce
neurone quand les valeurs initiales de ses poids sont w1=1 et w2=1. Ces 2 paramètres sont-
ils adéquats pour réaliser une classification correcte ? (1,5 point)
2) Etudiez l’évolution de ces poids lorsqu’on les modifie par la règle d’apprentissage
supervisée du perceptron, appliquée aux vecteurs a et b (avec plusieurs itérations
d’apprentissage). On prendra un coefficient d’apprentissage α égal à 0,1. (1 point)
3) Combien d’itérations d’apprentissage sont-elles nécessaires pour obtenir une classification
correcte de a et b (justifier la réponse) ? (1 point)
4) Conclure sur les propriétés de ce réseau et de la règle d’apprentissage. (1 point)
5) En général, dans une application de classification à réseau de neurones, on utilise un
neurone de sortie par classe. Donnez des poids adéquats d’un réseau de 2 neurones à seuil
ou linéaires (et dans ce dernier cas précisez comment sera prise la décision de
classification), permettant de réaliser cette opération, avec les mêmes vecteurs
d’apprentissage. (1,5 point)

1)
La sortie du neurone est définie par :
y=s(w1x1+w2x2)
L’équation de la droite de séparation du plan est :
w1x1+w2x2=0
w
x 2 = − 1 x1 = − x 1
w2
C’est l’équation d’une droite de pente –1 et passant par l’origine, dans le plan (x1, x2).
Cette droite ne réalise pas une classification correcte, car les 2 points sont situés du même
côté d’elle.

2)
La règle d’apprentissage supervisé du perceptron spécifie la variation à appliquer aux
poids d’un réseau monocouche à chaque itération d’apprentissage. Elle est définie par :
∆w ij = α.( y (jd ) − y j ).x i

wij et le poids reliant l’entrée i au neurone j,
y (jd ) est la valeur désirée de la sortie du neurone,
y j est la valeur réelle de cette sortie,
x i est l’entrée i,
α le taux d’apprentissage.
Ici il n’y a qu’un seul neurone, donc la règle se simplifie par
∆w i = α.( y ( d ) − y).x i , i=1,2

On présente le point a en entrée du neurone. On a y=s(1+2)=1 et y(d)=1 car on souhaite


que le neurone réponde 1 pour ce point. On applique alors la règle d’apprentissage :

Benoît Decoux 6
∆w 1 = α.(1 − 1).1 = 0 → w 1 = 1
∆w 2 = α.(1 − 1).2 = 0 → w 2 = 1
Pour le point b, on a y=s(2+1)=1 et y(d)=0 car on souhaite que le neurone réponde 0 pour
ce point.
∆w 1 = α.(0 − 1).2 = −2α = −0,2 → w 1 = 0,8
∆w 2 = α.(0 − 1).1 = −α = −0,1 → w 2 = 0,9
w 0,8
La pente de la droite − 1 = − a diminué.
w2 0,9

On réalise une 2e itération d’apprentissage :


! Présentation du point a →
y=s(0,8×1+0,9×2)=s(2,6)=1
(d)
or y =1, donc
∆w 1 = α.(1 − 1).1 = 0 → w 1 = 0,8
∆w 2 = α.(1 − 1).2 = 0 → w 2 = 0,9

! Présentation du point b →
y=s(0,8×2+0,9×1)=s(2,5)=1
or y(d)=0, donc
∆w 1 = α.(0 − 1).2 = −0,2 → w 1 = 0,6
∆w 2 = α.(0 − 1).1 = −0,1 → w 2 = 0,8
w 0,6
La pente de la droite − 1 = − diminue encore.
w2 0,8
On remarque que seul le point B provoque une modification des poids ; le point A est
correctement classé.

3)
Tant que a et b restent au dessus de la droite, l’évolution des poids, et donc de la pente de
cette droite, est la même. Elle prend successivement les valeurs suivantes :
0,4 0,2 0 0,2
3e itération : − ; 4e itération : − ; 5e itération : − = 0 ; 6e itération : ;
0,7 0,6 0,5 0,4
0,4
7e itération :
0,3
A ce stade le point b passe sous la droite et la classification devient correcte pour lui. On
peut le vérifier facilement en calculant y :
Point a → y=s(-0,4×1+0,3×2)=s(0,2)=1
Point b → y=s(-0,4×2+0,3×1)=s(-0,2)=0
donc
∆w i = 0 , i=1,2
L’apprentissage est alors terminé. 7 itérations ont été nécessaires.

4)
Dans cet exemple, l’apprentissage par la règle du perceptron converge vers une
classification correcte. Cet exemple est une illustration des propriétés de convergence de cette
règle d’apprentissage. Selon le théorème du perceptron, s’il existe un ensemble de poids wij
capables de résoudre un problème de classification, la règle d’apprentissage les trouve.

Benoît Decoux 7
5)
Pour le 1er neurone, on peut utiliser les poids obtenus ci-dessus.
Pour le 2e, il faudrait que le point b soit au dessus de la droite de séparation que ses poids
définissent, et le point a en dessous.
On est obligé d’ajouter une entrée à ce neurone, par exemple x0=1, associée aux poids w01
et w02.
Puisqu’on ne modifie pas le 1er neurone on peut prendre w01=0.
Le 2e neurone définit une droite d’équation :
w w
x 2 = − 12 x 1 − 02
w 22 w 22
Avec une ordonnée à l’origine égale à 6 et une pente égale à –3, on peut constater
(graphiquement) que le point a est bien au dessus de cette droite et le point b en dessous. On a
donc :
w w
− 12 = −3 et − 02 = 6
w 22 w 22
soit, en fixant par exemple w02 à 1, w22=-1/6 et w12=-1/2.

Exercice 4 : Rétropropagation du gradient (4 points)

On considère un réseau à 2 couches de neurones, avec 2 neurones dans la couche cachée


et 2 neurones dans la couche de sortie. Les neurones de la couche cachée possèdent les 2
mêmes entrées. Les neurones de la couche de sortie sont connectés aux 2 neurones de la
couche cachée.
Tous les neurones possèdent la même fonction d’activation non-linéaire :
1
f (x ) =
1 + e −x
On suppose les poids tous initialisés à 0.
1) Présentez au réseau le vecteur (1, 1) et le lui faire apprendre par l’algorithme de
rétropropagation du gradient, par une itération d’apprentissage (donnez les poids du
réseau obtenus). (3 points)
2) Montrez que cette itération d’apprentissage a permis d’améliorer la réponse du réseau. (1
point)
Remarque : pour faciliter les calculs on pourra utiliser la propriété suivante de la fonction f :
f ' ( x ) = f ( x )(1 − f ( x ))

1)
On utilise la règle d’apprentissage du perceptron, qui donne la variation à appliquer à
chaque poids, à chaque itération d’apprentissage :
∆w ij = α.δ (jc ) .y i( c−1)
avec δ (jc ) gradient local au neurone j (caché ou de sortie) :
( ) pour le neurone j de la couche de sortie
δ (jc ) = e j .f ' a (jc )
δ (jc ) = f ( c ) ' (a (jc ) ).∑ δ (kc +1) .w (jkc +1) pour le neurone j de la couche cachée
k

avec a j = ∑ w ij y i . "c" est l’indice de la couche (ici c=1 ou 2).


i

Benoît Decoux 8
L’algorithme de rétropropagation du gradient consiste à présenter une entrée au réseau, à
propager l’activité jusqu’aux neurones de sortie, à calculer l’erreur de sortie puis à propager
cette erreur à rebours pour corriger les poids à l’aide des formules ci-dessus.
On a :
1
f (x ) = avec x = a j = ∑ w ij y i
1 + e −x i
Les poids étant initialisés à 0, on va avoir aj=0 pour les neurones de la 1ère couche, ainsi
que pour les neurones de la 2e couche (couche de sortie), et donc initialement :
1
f (a (j2) ) = f (0) =
2
pour j=1 et 2. On cherche alors à calculer :
δ (j2) = e j .f ' a (j2)( )
avec :
e j = y (jd ) − y j et y j = f (a (j2) )
On décide arbitrairement que le 1er neurone de sortie (d’indice 1) code la classe correcte
du vecteur présenté en entrée. Il doit donc répondre 1 pour ce vecteur (dans l’idéal) et le 2e
neurone doit répondre 0. L’application numérique donne donc :
e1=1-1/2=1/2
e2=0-1/2=-1/2

On a :
f ' (a (j2 ) ) = f (a (j2 ) )(1 − f (a (j2) ))
pour j=1 et 2, soit :
f ' (0) = f (0)(1 − f (0))
1 1 1
= (1 − ) =
2 2 4
On en déduit les gradients locaux des 2 neurones de sortie :
( ) 1 1 1
δ1( 2 ) = e1 .f ' a 1( 2) = × =
2 4 8
( ) 1 1
δ (22 ) = e 2 .f ' a (22) = − × = −
2 4
1
8
puis la variation à appliquer aux 2 poids de chacun des 2 neurones de sortie :
1 1 0,1 0,1
∆w 11( 2)
= α.δ1( 2) .y1(1) = 0,1× × = → w 11
(2)
=
8 2 16 16
  1 1 0,1 0,1
∆w 12
( 2)
= α.δ (22) .y1(1) = 0,1×  −  × = − → w 12
(2)
=−
 8 2 16 16

1 1 0,1 0,1
∆w (212) = α.δ1( 2 ) .y (21) = 0,1× × = → w (212 ) =
8 2 16 16
 1 1 0,1 0,1
∆w (222) = α.δ (22) .y (21) = 0,1×  −  × = − → w (222 ) = −
 8 2 16 16
e
Pour les poids des neurones de la couche cachée on utilise la 2 formule d’apprentissage.
On a :
( )
δ (j1) = f ' (a (j1) ).∑ δ (k2) .w (jk2) = f ' (a (j1) ) × δ1( 2) .w (j12) + δ (22 ) .w (j22)
k
pour j=1,2. Pour les même raisons que pour la couche de sortie, on a :

Benoît Decoux 9
1
f ' (a 1(1) ) = f ' (a (21) ) =
4
Tous les autres paramètres sont déjà connus. On peut donc passer aux applications
numériques.
! 1er cas : j=1
1  1 0,1 1  0,1   0,1
(
δ1(1) = f ' (a 1(1) ) × δ1( 2) .w 11
(2)
)
+ δ (22) .w 12
( 2)
= ×  ×
4  8 16
+ − ×  −   =
8  16   256
e
! 2 cas : j=2
1  1 0,1 1  0,1   0,1
( )
δ (21) = f ' (a (21) ) × δ (22) .w (212 ) + δ (22) .w (222) = ×  ×
4  8 16
+ − ×  −   =
8  16   256
ère
Une fois les gradients locaux de la 1 couche connus, il ne reste plus qu’à calculer les
variations à appliquer aux poids de cette couche :
0,1 1 0,01 0,01
∆w 11 (1)
= α.δ1(1) .y1(1) = 0,1 × × = → w 11
(1)
=
256 2 512 512

0,1 1 0,01 0,01


∆w 12
(1)
= α.δ1(1) .y (21) = 0,1× × = → w 12
(1)
=
256 2 512 512
0,1 1 0,01 0,01
∆w (211) = α.δ (21) .y1(1) = 0,1× × = → w (211) =
256 2 512 512
0,1 1 0,01 0,01
∆w (221) = α.δ (21) .y1(1) = 0,1× × = → w (221) =
256 2 512 512
2)
Pour savoir si la réponse du réseau s’est améliorée, il faudrait présenter à nouveau le
même vecteur au réseau et propager l’activité jusqu’à sa sortie. Puis regarder si la réponse du
neurone 1 s’est rapprochée de 1 et celle du neurone 2 de 0.
Les poids des neurones de la 1ère couche n’étant pas encore différenciés, ce sont donc
forcément les poids des neurones de la couche de sortie qui ont commencé à apprendre le
problème.
Pour que le calcul soit plus rapide, prenons les sorties des 2 neurones de la couche cachée
tous les 2 égaux à 1 :
y1(1) = y (21) = 1
On a alors :
y1( 2 ) = f (w 11 .y1(1) + w (212) .y (21) ) = f  × 1 + × 1 = f   = 0,503
( 2)  0,1 0,1   0,1 
 16 16   8 

y (22 ) = f (w 12 .y (21) + w (222) .y (21) ) = f  − × 1 − × 1 = f  −  = 0,497 CQFD


( 2)  0,1 0,1   0,1 
 16 16   8 

Exercice 5 : Classification bayesienne (5 points)


Soient A et B deux ensembles de vecteurs à 2 dimensions appartenant à deux classes
différentes :
  2  3  3  4   1   2  2   3
A =  a1 , a2 , a3 , a4   et B =  b1 , b2 , b3 , b4  
  1   1  2  2   2  2  3   3
On souhaite modéliser chacune de ces 2 classes par une gaussienne.
1) Calculer le vecteur central pour chacune des 2 classes (démonstration géométrique
possible). (0,5 point)

Benoît Decoux 10
2) Calculer la matrice de covariance pour chacune des 2 classes, estimée à partir de ces
vecteurs. (1,5 point)
3) En déduire l’expression des 2 gaussiennes. (1 point)
4) Montrer que la classification pour une ressemblance maximale est correcte pour tous les
vecteurs des 2 classes. (1 point)
5) Le résultat aurait-il été le même si les gaussiennes avaient été isotropes ? Justifier la
réponse. (1 point)
a c
Rappels : soit la matrice 2×2 : A =  
 b d
• son déterminant est :
dét (A) = a × d − b × c
• son inverse est :
1  d − b
inv(A) =  
dét (A)  − c a 

1)
Pour calculer le vecteur central de chaque classe, on calcule la moyenne de la 1ère
coordonnée pour tous les points, et la moyenne de la 2e coordonnée, ce qui
donne respectivement pour les classes A et B :
3  2 
x (Ac )   et x (Bc )  
1,5   2,5 
L’indice c est mis pour "valeur centrale".

2)
Si l’on représente ces points dans un repère à 2 dimensions (x1, x2), on peut déjà deviner
que chacun des 2 ensembles va être modélisé par une gaussienne légèrement inclinée par
rapport aux axes du repère, et donc que les covariances entre les variables x1 et x2 ne vont pas
être nulles.
La matrice de covariance est définie par :
C = {cov(x i , x j ), i = 1,2; j = 1,2}
 cov(x1 , x 1 ) cov(x 1 , x 2 ) 
↔ C =  
 cov( x 2 , x 1 ) cov( x 2 , x 2 
)
 var(x1 ) cov(x 1 , x 2 ) 
↔ C =  
 cov(x 2 , x1 ) var(x 2 ) 
La covariance entre 2 variables xi et xj est définie par :
cov(x i , x j ) = ∑ (x i ,k − x i( c ) )(x j,k − x (jc ) ), i=1,…d et j=1,…,d
1 n
n k =1
où d est la dimension des vecteurs et n est le nombre de valeurs différentes pour les variables.
La covariance de la variable i avec elle-même est égale à la variance de cette variable,
définie par la somme des écarts aux carrés de cette variable par rapport à sa moyenne
(calculée sur toutes ses valeurs utilisées) :

Benoît Decoux 11
∑ (x − x i( c ) )
n
2
i,k
var(x ) = k =1

n
Application numérique : on calcule CA à partir des points de A :
var(x1)=(1/4)×[(2-3)2+(3-3)2+(3-3)2+(4-3)2]=1/2
De la même manière, pour x2 on obtient :
var(x2)=(1/4)×[(1-1,5)2+(1-1,5)2+(2-1,5)2+(2-1,5)2]=1/4

cov(x1, x2)=(1/4)×[(2-3)×(1-1,5)+(3-3)×(1-1,5)+(3-3)×(2-1,5) )+(4-3)×(2-1,5)]


=(1/4)×[(2-3)×(1-1,5)+(4-3)×(2-1,5)]
=(1/4)×[0,5+0,5]
=1/4
Et sans calcul on obtient :
cov(x1, x2)=cov(x2, x1)=1/4
(une matrice de covariance est symétrique).

Finalement :
1 / 2 1 / 4  1  2 1
C A =   =  
1 / 4 1 / 4  4  1 1
Remarque : on aurait pu utiliser cette 2e méthode :
1
C A = .A.A t
d
où A contient tous les vecteurs de données, auxquels on a soustrait leur moyenne (définie ci-
dessus), disposés en colonnes (et donc At contient les mêmes vecteurs mais disposés en
lignes).
Pour la classe B, on trouverait le même résultat car la disposition des points de cette classe
entre eux est la même que celle des points de la classe A :
CB=CA

3)
On utilise la formule d’une gaussienne de dimension n :
1  ( x − x c ) T C −1 ( x − x c ) 
G(x) = exp − 
(2π) d / 2 dét (C)  2 
où x est un vecteur de dimension d.

dét(CA)= dét(CB)=1/16
et
1  1 − 1
C A−1 =   = C B−1
4  −1 2 

Il reste à remplacer d par 2 et les vecteurs centraux par leur valeurs respectives pour que
les expressions des 2 gaussiennes soient complètes :

Benoît Decoux 12
  3  t  1/ 4 −1/ 4  3 
 ( x −  )  ( x −  ) 
G A ( x ) = 0,64 exp − 1,5   − 1 / 4 1/ 2  1,5  
 2 
 
 
  2  t  1/ 4 −1/ 4   2 
 ( x −  )  ( x −  ) 
G B ( x ) = 0,64 exp −  2,5   − 1 / 4 1/ 2   2,5  
 2 
 
 
4)
 2
Pour a 1   projeté sur la gaussienne obtenue avec les points de A, on obtient :
 1
  2   3  t  1/ 4 − 1 / 4   2   3  
 (  −  )  (  −  ) 
 1   1 ,5   − 1 / 4 1 / 2   1  1,5  
G A (a 1 ) = 0,64 exp −
 2 
 
 
  − 1   1 / 4 − 1 / 4  − 1  
t
  −1  
        (− 0,125 0)  
 − − −  −
= 0,64 exp −     = 0,64 exp −  
0.5 1 / 4 1 / 2 0 ,5 0,5
2   2 
   
   
 0,125 
= 0,64 exp − = 0,64 exp[− 0,0625] = 0,6
 2 
 2
Pour a 1   projeté sur la gaussienne obtenue avec les points de B, on obtient :
 1
  2   2  t  1/ 4 − 1/ 4   2   2  
 (  −  )  (  −  ) 
 1   2 ,5   − 1 / 4 1 / 2   1   2,5  
G B (a 1 ) = 0,64 exp −
 2 
 
 
  0   1 / 4 − 1 / 4  0  
t
  0 
        (0,75 − 1,5)  
 − − −  −
= 0,64 exp −     = 0,64 exp −  
1.5 1 / 4 1 / 2 1 ,5 1,5
2   2 
   
   
 1,125 
= 0,64 exp − = 0,64 exp[− 0,5625] = 0,36
 2 

GA(a1) > GB(a1) donc le vecteur a1 est associé à la classe A par la règle de ressemblance
maximale, ce qui correspond à une classification correcte.
Pour les autres points on aurait trouvé également une classification correcte. Il serait trop
long de faire le même calcul pour tous. Si vous l’avez fait, vous aurez un bonus au niveau des
points.

Benoît Decoux 13
5)
Avec des gaussiennes isotropes, c’est à dire avec des matrices de covariance diagonales, le
résultat aurait été le même car tous les vecteurs de la classe A sont plus près du centre de la
gaussienne calculée à partir de ces points (gaussienne A), que de la gaussienne calculée à
partir des vecteurs de la classe B (gaussienne B). Idem pour les vecteurs de B.
Mais ceci est dû à cette configuration particulière des vecteurs. On aurait très bien pu
avoir par exemple un point de la classe A plus près du centre de la gaussienne B que du centre
de la gaussienne A. Et dans ce cas il aurait été classé dans la classe B (donc mal classé) avec
des gaussiennes isotropes et dans la classe A (donc correctement classé) avec des gaussiennes
orientées (non-isotropes).

Benoît Decoux 14
Feuille à rendre à l’issue du devoir

II) Dites si les affirmations suivantes sont vraies ou fausses (en mettant une
croix dans le bon cercle) (5 points)

Bonne réponse : +0,5 point ; Pas de réponse : 0 point ; Mauvaise réponse : −0,5 point

1) En général, le fait de normaliser les données à apprendre en vue d’une classification,


améliore les résultats de cette dernière.
vrai Θ faux Ο

2) Dans le LVQ_PAK, les vecteurs-représentants initiaux des classes sont sélectionnés par la
méthode des K plus proches voisins.
vrai Θ faux Ο

3) Dans l’apprentissage compétitif supervisé de type LVQ, on peut initialiser le vecteur poids
des neurones à 0.
vrai Θ faux Ο

4) Un neurone linéaire (dont la sortie est une combinaison linéaire de ses entrées) à 2 entrées
peut séparer un plan en 2 parties par une droite.
vrai Ο faux Θ

5) Un réseau à fonctions radiales de base peut résoudre des problèmes non-linéairement


séparables.
vrai Θ faux Ο

6) Dans l’algorithme de rétropropagation, le fait d’augmenter le nombre de cycles


d’apprentissage à l’infini a tendance à amener le réseau à apprendre par cœur les données
d’apprentissage.
vrai Θ faux Ο

7) Dans l’algorithme de rétropropagation, les neurones peuvent avoir une fonction


d’activation linéaire.
vrai Ο faux Θ

8) Si la matrice de covariance d’une gaussienne à 2 dimensions est diagonale, l’étalement de


cette gaussienne est le même dans ces 2 dimensions.
vrai Ο faux Θ

9) Avec des variables aléatoires continues, on utilise des fonctions de densité de probabilité
et non pas des probabilités.
vrai Θ faux Ο

10) La règle d’apprentissage supervisé du perceptron (monocouche) peut être obtenue en


utilisant le principe de la descente de gradient.
vrai Θ faux Ο

Benoît Decoux 15