Académique Documents
Professionnel Documents
Culture Documents
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é.
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
(*) 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 :
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 :
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
et les points de B :
x (Bc ) (3 2 )
t
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
où
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.
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
où
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
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
! 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.
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
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
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
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
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 Θ
9) Avec des variables aléatoires continues, on utilise des fonctions de densité de probabilité
et non pas des probabilités.
vrai Θ faux Ο
Benoît Decoux 15