SlideShare une entreprise Scribd logo
1  sur  88
Télécharger pour lire hors ligne
GIND5439
Systèmes Intelligents
Chapitre 6: Réseaux de neurones.
2
GIND5439 – Gabriel Cormier, Université de Moncton
Apprentissage machine
„ Comprend des mécanismes adaptifs qui permettent
à un ordinateur:
‰ D’apprendre par expérience
‰ D’apprendre par exemples
‰ D’apprendre par analogie
„ Les capacités d’apprentissage peuvent améliorer la
performance d’un système intelligent au fil du
temps.
„ Les deux approches populaires sont:
‰ Réseaux de neurones
‰ Algorithme génétique
3
GIND5439 – Gabriel Cormier, Université de Moncton
Qu’est-ce qu’un réseau de neurones?
„ C’est un modèle de raisonnement basé sur le
cerveau humain.
„ Le cerveau est constitué d’un ensemble de cellules
nerveuses, ou unités de traitement d’information,
appelés neurones.
„ Cerveau
‰ Près de 10 milliards de neurones
‰ 60 trillions de connexions, des synapses, entre eux.
„ Un neurone est constitué de:
‰ Un corps de cellule, le soma
‰ Un nombre de fibres appelés dendrites
‰ Un fibre long appelé axone.
4
GIND5439 – Gabriel Cormier, Université de Moncton
Réseau de neurones biologique
Soma Soma
Synapse
Synapse
Dendrites
Axon
Synapse
Dendrites
Axon
5
GIND5439 – Gabriel Cormier, Université de Moncton
Qu’est-ce qu’un réseau de neurones?
„ C’est un ensemble de processeurs très simples,
appelés neurones.
„ Les neurones sont branchés ensemble à l’aide de
liens pondérés qui passent des signaux d’un
neurone à un autre.
„ Le signal de sortie est transmis à travers la
connexion de sortie du neurone.
„ La sortie se divise en un nombre de branches qui
transmettent tous le même signal.
„ Les branches de sortie se terminent à l’entrée de
d’autres neurones dans le réseau.
6
GIND5439 – Gabriel Cormier, Université de Moncton
Qu’est-ce qu’un réseau de neurones?
„ Chaque neurone reçoit un nombre de
signaux d’entrée xi à travers ses connexions.
„ Un ensemble de poids réels wi sont utilisés
pour décrire la force de la connexion.
„ Le niveau d’activation Σxiwi détermine la
force cumulative des signaux d’entrée.
„ Une fonction seuil f calcule l’état final de la
sortie. Ça simule le comportement ON/OFF
de neurones réels.
7
GIND5439 – Gabriel Cormier, Université de Moncton
Qu’est-ce qu’un réseau de neurones?
„ Chaque neurone produit une seule sortie.
„ Le signal de sortie est transmis à travers la
connexion de sortie du neurone.
„ La connexion de sortie se sépare en un
nombre de branches
‰ Le même signal se propage sur chaque branche.
„ Les branches de sortie se terminent aux
connexions d’entrée de d’autre neurones.
8
GIND5439 – Gabriel Cormier, Université de Moncton
Qu’est-ce qu’un réseau de neurones?
„ Chaque réseau est aussi caractérisé par des
propriétés globales tel que:
‰ Topologie du réseau
‰ Algorithme d’apprentissage
‰ Technique d’encodage
9
GIND5439 – Gabriel Cormier, Université de Moncton
Architecture typique d’un réseau de
neurones.
Niveau d’entrée Niveau de sortie
Niveau intermédiaire
Signaux
d’entrée
Signaux
de
sortie
10
GIND5439 – Gabriel Cormier, Université de Moncton
Équivalences
Réseau de neurones
biologique
Réseau de neurones
artificiel
Soma Neurone
Dendrite Entrée
Axon Sortie
Synapse Poids
11
GIND5439 – Gabriel Cormier, Université de Moncton
Neurone McCulloch-Pitts
„ Les entrées sont excitatrices (+1) ou inhibitrices (-1)
„ La fonction d’activation multiplie chaque entrée par
son poids correspondant et fait la somme du
résultat.
„ Si le résultat est > 0, la sortie du neurone est 1;
sinon -1.
„ On a démontré que ces neurones peuvent être
construites pour calculer n’importe quelle fonction
logique.
„ On a démontré qu’un système de ces neurones
peut produire un modèle informatique complet.
12
GIND5439 – Gabriel Cormier, Université de Moncton
Le neurone
Entrées Poids Sorties
Neurone Y
x1
x2
xn
Y
Y
Y
w2
w1
wn
13
GIND5439 – Gabriel Cormier, Université de Moncton
Calcul de la sortie
„ Le neurone calcul la somme pondérée des entrées et compare le
résultat avec la valeur seuil θ.
„ Si l’entrée nette est moins que la valeur seuil, la sortie du neurone
est -1.
„ Si l’entrée nette est plus grande que la valeur seuil, le neurone est
activé et la sortie est +1.
„ La fonction d’activation (ou fonction de transfert) du neurone est:
„ Ce type de fonction est la fonction sign.
∑
=
=
n
i
i
iw
x
X
1 ⎩
⎨
⎧
θ
<
−
θ
≥
+
=
X
X
Y
si
,
1
si
,
1
14
GIND5439 – Gabriel Cormier, Université de Moncton
Fonctions d’activation
Stepfunction Signfunction
+1
-1
0
+1
-1
0
X
Y
X
Y
+1
-1
0 X
Y
Sigmoidfunction
+1
-1
0 X
Y
Linearfunction
⎩
⎨
⎧
<
≥
=
0
if
,
0
0
if
,
1
X
X
Ystep
⎩
⎨
⎧
<
−
≥
+
=
0
if
,
1
0
if
,
1
X
X
Ysign
X
sigmoid
e
Y
−
+
=
1
1
X
Ylinear
=
15
GIND5439 – Gabriel Cormier, Université de Moncton
Apprentissage d’un neurone
„ Est-ce qu’un seul neurone peut apprendre
une tâche?
‰ Le Perceptron
„ 1958, Frank Rosenblatt
„ Basé sur le modèle de McCulloch-Pitts
„ Un algorithme d’apprentissage qui a produit la première
procédure pour entraîner un réseau de neurones.
‰ La forme la plus simple d’un réseau de neurones.
‰ Est constitué d’un seul neurone avec des poids
ajustables et un limiteur brusque: fonction échelon
ou sign.
16
GIND5439 – Gabriel Cormier, Université de Moncton
Perceptron à un seul niveau, 2 entrées
Entrées
Seuil
x1
x2
Sortie
Y
∑
Limiteur
brusque
w2
w1
Combineur
linéaire
θ
17
GIND5439 – Gabriel Cormier, Université de Moncton
Perceptron
„ La somme pondérée des entrées est
appliquée au limiteur brusque qui produit une
sortie de +1 si l’entrée est positive et -1 si
l’entrée est négative.
„ Le but est de classifier les entrées, les stimuli
externes x1, x2, …, xn, en l’une de deux
classes A1 et A2.
18
GIND5439 – Gabriel Cormier, Université de Moncton
Perceptron
„ Comment le perceptron apprend-t-il sa tâche de
classification?
‰ On utilise une forme d’apprentissage supervisé.
‰ De faibles ajustements sont fait aux poids pour réduire la
différence entre la sortie réelle et la sortie désirée.
‰ Les poids initiaux sont assignés de façon aléatoire,
typiquement entre -0.5 et +0.5.
‰ Après un essai pour résoudre le problème, un
« enseignant » donne le résultat correct.
‰ Les poids sont ensuite modifiés pour réduire l’erreur.
19
GIND5439 – Gabriel Cormier, Université de Moncton
Apprentissage du perceptron
„ Si, à une itération p, la sortie réelle est Y(p)
et la sortie voulue est Yd(p), alors l’erreur est:
„ L’itération p représente le pième exemple
d’entraînement présenté au perceptron.
„ Si l’erreur e(p) est positive, il faut augmenter
la sortie Y(p) du perceptron; si l’erreur est
négative, il faut diminuer la sortie.
( ) ( ) ( ) K
3
,
2
,
1
où =
−
= p
p
Y
p
Y
p
e d
20
GIND5439 – Gabriel Cormier, Université de Moncton
Règle d’apprentissage du perceptron
)
(
)
(
)
(
)
1
( p
e
p
x
p
w
p
w i
i
i ⋅
⋅
+
=
+ α
Où p = 1, 2, 3, …
α est le taux d’apprentissage, 0 < α < 1
En utilisant cette règle, on peut construire un
algorithme d’apprentissage pour des tâches de
classification.
21
GIND5439 – Gabriel Cormier, Université de Moncton
Algorithme d’apprentissage
„ Étape 1: initialisation
‰ On crée les poids initiaux w1, w2, …, wn et le seuil
θ à des valeurs aléatoires dans l’intervalle [-0.5,
0.5].
‰ Rappel: Si l’erreur e(p) est positive, il faut
augmenter la sortie Y(p) du perceptron; si l’erreur
est négative, il faut diminuer la sortie.
22
GIND5439 – Gabriel Cormier, Université de Moncton
Algorithme d’apprentissage
„ Étape 2: activation
‰ On active le perceptron en y appliquant les
entrées x1(p), x2(p), …, xn(p), et la sortie voulue
Yd(p). On calcule la sortie réelle à l’itération p = 1.
où n est le nombre d’entrées du perceptron, et
step est une fonction d’activation échelon.
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
θ
−
= ∑
=
n
i
i
i p
w
p
x
step
p
Y
1
)
(
)
(
)
(
23
GIND5439 – Gabriel Cormier, Université de Moncton
Algorithme d’apprentissage
„ Étape 3: Mise à jour du poids
‰ On met à jour le poids du perceptron:
où ∆wi est la correction au poids à l’itération p.
‰ La correction au poids est:
„ Étape 4: Prochaine itération (p = p + 1), on retourne
à l’étape 2, et on continue jusqu’à ce qu’on
converge.
)
(
)
(
)
1
( p
w
p
w
p
w i
i
i ∆
+
=
+
)
(
)
(
)
( p
e
p
x
p
w i
i ⋅
⋅
=
∆ α
24
GIND5439 – Gabriel Cormier, Université de Moncton
Est-ce qu’un perceptron peut réaliser les
opérations logiques de base?
Entrée
x1
Entrée
x2
AND
x1 ∩ x2
OR
x1 ∪ x2
XOR
x1 ⊕ x2
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
25
GIND5439 – Gabriel Cormier, Université de Moncton
Apprentissage du perceptron: AND
Entrées Poids initial Poids final
Époch
x1 x2 w1 w2 w1 w2
1 0
0
1
1
0
1
0
1
0
0
0
1
0.3
0.3
0.3
0.2
-0.1
-0.1
-0.1
-0.1
0
0
1
0
0
0
-1
1
0.3
0.3
0.2
0.3
-0.1
-0.1
-0.1
0.0
2 0
0
1
1
0
1
0
1
0
0
0
1
0.3
0.3
0.3
0.2
0.0
0.0
0.0
0.0
0
0
1
1
0
0
-1
0
0.3
0.3
0.2
0.2
0.0
0.0
0.0
0.0
3 0
0
1
1
0
1
0
1
0
0
0
1
0.2
0.2
0.2
0.1
0.0
0.0
0.0
0.0
0
0
1
0
0
0
-1
1
0.2
0.2
0.1
0.2
0.0
0.0
0.0
0.1
4 0
0
1
1
0
1
0
1
0
0
0
1
0.2
0.2
0.2
0.1
0.1
0.1
0.1
0.1
0
0
1
1
0
0
-1
0
0.2
0.2
0.1
0.1
0.1
0.1
0.1
0.1
5 0
0
1
1
0
1
0
1
0
0
0
1
0.1
0.1
0.1
0.1
0.1
0.1
0.1
0.1
0
0
0
1
0
0
0
0
0.1
0.1
0.1
0.1
0.1
0.1
0.1
0.1
Sortie
réelle Y
Erreur
Sortie
voulue Yd
Seuil: θ = 0.2; Taux d’apprentissage: α = 0.1
26
GIND5439 – Gabriel Cormier, Université de Moncton
Représentation des opérations de base
x1
x2
1
(a) AND (x1 ∩ x2)
1
x1
x2
1
1
(b) OR (x1 ∪ x2)
x1
x2
1
1
(c) Exclusive -OR
(x1 ⊕ x2)
0
0 0
Un perceptron peut apprendre AND et OR, mais pas XOR.
27
GIND5439 – Gabriel Cormier, Université de Moncton
Pourquoi?
„ Ça provient directement de l’équation
„ La sortie Y est 1 seulement si la somme
pondérée totale X est plus grande ou égale à
la valeur seuil θ.
„ L’espace d’entrée doit être divisé en deux le
long d’une frontière définie par X = θ.
⎩
⎨
⎧
θ
<
−
θ
≥
+
=
X
X
Y
si
,
1
si
,
1
∑
=
=
n
i
i
iw
x
X
1
28
GIND5439 – Gabriel Cormier, Université de Moncton
Fonctions d’activation
„ Est-ce qu’une fonction sigmoïde ou linéaire
permettrait de réaliser XOR?
‰ Un perceptron à un seul niveau fait des décisions
de la même façon peu importe la fonction
d’activation.
‰ Minsky et Papert (1969) ont démontré que le
perceptron de Rosenblatt ne peut pas faire des
généralisations globales basé sur des exemples
locaux.
29
GIND5439 – Gabriel Cormier, Université de Moncton
Réseaux de neurones multi-niveau
„ Un perceptron à plusieurs niveaux est un
réseau à réaction directe ayant un ou
plusieurs niveaux cachés.
„ Le réseau est constitué de:
‰ Un niveau d’entrée
‰ Au moins 1 niveau intermédiaire ou caché de
neurones
‰ Un niveau de sortie
„ Les entrées se propagent vers l’avant (la
sortie) niveau par niveau.
30
GIND5439 – Gabriel Cormier, Université de Moncton
Réseau de neurones à 2 niveaux
31
GIND5439 – Gabriel Cormier, Université de Moncton
Niveau intermédiaire
„ Que cache le niveau intermédiaire?
‰ Les neurones dans le niveau intermédiaire
„ Ne peuvent pas être observés à partir du comportement
entrée/sortie du réseau.
„ Les poids des neurones intermédiaires représentent des
entités cachées.
„ Les entités sont utilisés dans le niveau de sortie pour
déterminer la sortie.
32
GIND5439 – Gabriel Cormier, Université de Moncton
Apprentissage dans réseaux multi-niveau
„ Propagation arrière (Bryson et Ho, 1969)
„ Un ensemble d’entrées est présenté au
réseau.
„ Le réseau calcule les sorties, et s’il y a une
erreur (une différence entre la sortie réelle et
la sortie voulue), les poids sont ajustés pour
réduire cette erreur.
33
GIND5439 – Gabriel Cormier, Université de Moncton
Apprentissage dans des réseaux multi-
niveau
„ L’apprentissage est déterminé par:
‰ Connexions entre les neurones (architecture)
‰ Les fonctions d’activation utilisées par les
neurones.
‰ L’algorithme d’apprentissage qui spécifie la
procédure pour ajuster les poids.
34
GIND5439 – Gabriel Cormier, Université de Moncton
Apprentissage dans réseaux multi-niveau
„ Dans un réseau de neurones à propagation arrière,
l’algorithme d’apprentissage a deux phases:
‰ Un ensemble d’entrées d’entraînement est présenté au
niveau d’entrée.
‰ Le réseau propage ces entrées niveau par niveau jusqu’à
ce qu’une (ou des) sortie soit générée.
‰ Si la sortie est différente de la sortie voulue, une erreur est
calculée et puis propagée dans le réseau de la sortie vers
l’entrée.
‰ Les poids sont ajustés au fur et à mesure que l’erreur se
propage.
35
GIND5439 – Gabriel Cormier, Université de Moncton
Réseaux à 3 niveaux, propagation arrière
Niveau d’entrée
xi
x1
x2
xn
1
2
i
n
Niveau de sortie
1
2
k
l
yk
y1
y2
yl
Entrées
Erreurs
wjk
Niveau caché
wij
1
2
j
m
36
GIND5439 – Gabriel Cormier, Université de Moncton
Apprentissage dans réseaux multi-niveau
„ On calcule le poids net comme avant:
„ On passe ensuite cette valeur à la fonction
d’activation: fonction sigmoïde.
θ
−
= ∑
=
n
i
i
i w
x
X
1
X
sigmoïde
e
Y −
+
=
1
1
37
GIND5439 – Gabriel Cormier, Université de Moncton
Apprentissage dans réseaux multi-niveau
1. Présenter les entrées et déterminer les valeurs
des niveaux cachés et du niveau de sortie.
2. Comparer les résultats du niveau de sortie aux
résultats corrects.
3. Modifier les poids du niveau d’entrée et des
niveaux cachés pour réduire l’erreur.
4. La règle utilisée pour modifier les poids se nomme
règle delta, parce qu’elle change chaque poids
selon sa pondération par rapport à la sortie.
1. Le delta, ou dérivée partielle de la sortie par rapport au
poids.
38
GIND5439 – Gabriel Cormier, Université de Moncton
Apprentissage dans réseaux multi-niveau
„ La plupart des réseaux de neurones multi-niveau
fonctionnent avec des entrées qui varient de 0 à 1.
„ Les poids varient à chaque itération d’une fraction
du changement nécessaire pour corriger l’erreur à la
sortie. Cette fraction, α, est le taux d’apprentissage.
‰ Si le taux d’apprentissage est trop élevé, l’algorithme prend
des grands pas et risque de manquer le point d’erreur
minimale, ou même osciller autour du minimum.
‰ Des petits pas, qui viennent d’un taux d’apprentissage
petit, trouveront éventuellement un minimum, mais risquent
de prendre beaucoup de temps.
39
GIND5439 – Gabriel Cormier, Université de Moncton
Paramètres d’apprentissage
„ Taux d’apprentissage
‰ Contrôle l’amplitude des pas utilisés pour ajuster les poids. Dans
certains réseaux de neurones, diminue avec le nombre
d’itérations.
„ Momentum
‰ Propagation arrière
‰ Lissage de l’effet des ajustements aux poids au fil des itérations.
„ Tolérance (erreur)
‰ Propagation arrière
‰ Spécifie la différence acceptable entre la sortie réelle et la sortie
voulue.
„ Fonction d’activation
‰ La fonction utilisée à chaque neurone pour générer la sortie à
partir des entrées pondérés. La fonction la plus commune est la
fonction sigmoïde.
40
GIND5439 – Gabriel Cormier, Université de Moncton
Algorithme d’apprentissage, propagation
arrière
„ Étape 1: Initialisation
‰ On règle tous les poids et seuils du réseau à une
valeur aléatoire dans l’intervalle:
‰ Où Fi est le nombre total d’entrées au neurone i
dans le réseau. L’initialisation des poids n est faite
neurone par neurone.
⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛
+
−
i
i F
F
4
.
2
,
4
.
2
41
GIND5439 – Gabriel Cormier, Université de Moncton
Algorithme d’apprentissage, propagation
arrière
„ Étape 2: Activation
‰ On active le réseau de neurone à propagation arrière en y
appliquant les entrées x1(p), x2(p), …, xn(p), et les sorties
voulues yd1(p), yd2(p), …, ydn(p),
‰ On calcule les sorties des neurones dans les niveaux
cachés
„ Où n est le nombre d’entrées au neurone j dans le niveau
caché, et sigmoid est la fonction sigmoïde.
⎥
⎦
⎤
⎢
⎣
⎡
θ
−
⋅
= ∑
=
j
n
i
ij
i
j p
w
p
x
sigmoid
p
y
1
)
(
)
(
)
(
42
GIND5439 – Gabriel Cormier, Université de Moncton
Algorithme d’apprentissage, propagation
arrière
„ Étape 2 (suite)
‰ On calcule la sortie des neurones du niveau de
sortie:
où m est le nombre d’entrées du neurone k dans
le niveau de sortie.
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
θ
−
⋅
= ∑
=
k
m
j
jk
jk
k p
w
p
x
sigmoid
p
y
1
)
(
)
(
)
(
43
GIND5439 – Gabriel Cormier, Université de Moncton
Algorithme d’apprentissage, propagation
arrière
„ Étape 3: Poids
‰ On ajuste les poids dans le réseau à propagation arrière
qui propage vers l’arrière les erreurs.
‰ Calculer le gradient d’erreur pour les neurones du niveau
de sortie:
où
‰ Calculer les corrections aux poids.
‰ Ajuster les poids aux neurones de sortie.
[ ] )
(
)
(
1
)
(
)
( p
e
p
y
p
y
p k
k
k
k ⋅
−
⋅
=
δ
)
(
)
(
)
( , p
y
p
y
p
e k
k
d
k −
=
)
(
)
(
)
( p
p
y
p
w k
j
jk δ
α ⋅
⋅
=
∆
)
(
)
(
)
1
( p
w
p
w
p
w jk
jk
jk ∆
+
=
+
44
GIND5439 – Gabriel Cormier, Université de Moncton
Algorithme d’apprentissage, propagation
arrière
„ Étape 3 (suite)
‰ Calculer le gradient d’erreur pour les neurones
dans le niveau caché:
‰ Calculer les corrections aux poids:
‰ Ajuster les poids aux neurones cachés:
)
(
)
(
)
(
1
)
(
)
(
1
]
[ p
w
p
p
y
p
y
p jk
l
k
k
j
j
j ∑
=
⋅
−
⋅
= δ
δ
)
(
)
(
)
( p
p
x
p
w j
i
ij δ
α ⋅
⋅
=
∆
)
(
)
(
)
1
( p
w
p
w
p
w ij
ij
ij ∆
+
=
+
45
GIND5439 – Gabriel Cormier, Université de Moncton
Algorithme d’apprentissage, propagation
arrière
„ Étape 4: Itération
‰ On augmente l’itération p de 1 (p = p + 1), on
retourne à l’étape 2 et on refait le processus
jusqu’à ce que le critère d’erreur soit satisfait (ex:
erreur plus petite que 0.1%).
46
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple: propagation arrière
„ On utilise ici un réseau simple à 3 niveaux
pour apprendre la fonction XOR:
Entrée 1 Entrée 2 Sortie
0 0 0
0 1 1
1 0 1
1 1 0
C’est l’exemple p.178 – 181 du manuel.
47
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple: propagation arrière
-1
1
2
3
4
5
θ3
-1
w13
x1
x2
w24
w23
w14
w35
w45
-1
θ5
y5
θ4
Dans ce réseau, les neurones 1 et 2
du niveau d’entrée n’ont aucun effet
et ne font que passer l’entrée au
niveau 2.
48
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple: propagation arrière
„ Les poids initiaux et niveaux seuils sont créés
aléatoirement. Pour cet exemple, on obtient:
‰ w13 = 0.5, w14 = 0.9, w23 = 0.4, w24 = 1.0,
w35 = -1.2, w45 = 1.1
‰ θ3 = 0.8, θ4 = -0.1, θ5 = 0.3
‰ On suppose un taux d’apprentissage α = 0.1
„ On prend ici un exemple d’entraînement où
les deux entrées x1 et x2 sont 1. La sortie
voulue yd,5 est donc 0 (fonction XOR).
49
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple: propagation arrière
„ On calcul maintenant la sortie des neurones
3 et 4 (puisque 1 et 2 n’ont aucun effet):
„ Et la sortie réelle du neurone 5:
( ) 5250
.
0
1
1
)
( 8
.
0
4
.
0
1
5
.
0
1
3
23
2
13
1
3 =
+
=
−
+
= −
×
+
×
−
e
w
x
w
x
sigmoid
y θ
( ) 8808
.
0
1
1
)
( 1
.
0
0
.
1
1
9
.
0
1
4
24
2
14
1
4 =
+
=
−
+
= +
×
+
×
−
e
w
x
w
x
sigmoid
y θ
( ) 5097
.
0
1
1
)
( 3
.
0
1
.
1
8808
.
0
)
2
.
1
(
5250
.
0
5
45
4
35
3
5 =
+
=
−
+
= −
×
+
−
×
−
e
w
y
w
y
sigmoid
y θ
50
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple: propagation arrière
„ L’erreur peut maintenant être calculée:
„ La prochaine étape est de propager cette
erreur vers l’arrière pour modifier les poids et
niveaux seuils.
5097
.
0
5097
.
0
0
5
5
, −
=
−
=
−
= y
y
e d
51
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple: propagation arrière
„ On calcule en premier le gradient d’erreur δ:
„ On modifie maintenant les poids et le niveau
seuil:
( ) ( )( ) 1274
.
0
5097
.
0
5097
.
0
1
5097
.
0
1 5
5
5 −
=
−
−
=
−
= e
y
y
δ
( )( )( )
( )( )( )
( ) ( )( )( ) 0127
.
0
1274
.
0
1
1
.
0
1
0112
.
0
1274
.
0
8808
.
0
1
.
0
0067
.
0
1274
.
0
5250
.
0
1
.
0
3
5
5
4
45
5
3
35
−
=
−
−
=
×
−
×
=
∆
−
=
−
=
×
×
=
∆
−
=
−
=
×
×
=
∆
δ
α
θ
δ
α
δ
α
y
w
y
w
52
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple: propagation arrière
„ On calcule maintenant le gradient d’erreur
pour les neurones 3 et 4:
„ Ces valeurs seront maintenant utilisées pour
ajuster les poids des neurones 3 et 4.
( ) ( )( )( ) 0381
.
0
2
.
1
1274
.
0
5250
.
0
1
5250
.
0
1 35
5
3
3
3 =
−
−
−
=
−
= w
y
y δ
δ
( ) ( )( )( ) 0147
.
0
1
.
1
1274
.
0
8808
.
0
1
8808
.
0
1 45
5
4
4
4 −
=
−
−
=
−
= w
y
y δ
δ
53
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple: propagation arrière
„ On calcule les variations des poids pour les
neurones 3 et 4:
( )( )( )
( )( )( )
( ) ( )( )( )
( )( )( )
( )( )( )
( ) ( )( )( ) 0015
.
0
0147
.
0
1
1
.
0
1
0015
.
0
0147
.
0
1
1
.
0
0015
.
0
0147
.
0
1
1
.
0
0038
.
0
0381
.
0
1
1
.
0
1
0038
.
0
0381
.
0
1
1
.
0
0038
.
0
0381
.
0
1
1
.
0
4
4
4
2
24
4
1
14
3
3
3
2
23
3
1
13
=
−
−
=
×
−
×
=
∆
−
=
−
=
×
×
=
∆
−
=
−
=
×
×
=
∆
−
=
−
=
×
−
×
=
∆
=
=
×
×
=
∆
=
=
×
×
=
∆
δ
α
θ
δ
α
δ
α
δ
α
θ
δ
α
δ
α
x
w
x
w
x
w
x
w
54
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple: propagation
„ La dernière étape est de mettre à jour les poids:
„ On répète le processus jusqu’à ce que la somme
des erreurs au carré soit plus petite que 0.001.
3127
.
0
0127
.
0
3
.
0
0985
.
0
0015
.
0
1
.
0
7962
.
0
0038
.
0
8
.
0
0888
.
1
0112
.
0
1
.
1
2067
.
1
0067
.
0
2
.
1
9985
.
0
0015
.
0
0
.
1
4038
.
0
0038
.
0
4
.
0
8985
.
0
0015
.
0
9
.
0
5038
.
0
0038
.
0
5
.
0
5
5
5
4
4
4
3
3
3
45
45
45
35
35
35
24
24
24
23
23
23
14
14
14
13
13
13
=
+
=
∆
+
=
−
=
+
−
=
∆
+
=
=
−
=
∆
+
=
=
−
=
∆
+
=
−
=
−
−
=
∆
+
=
=
−
=
∆
+
=
=
+
=
∆
+
=
=
−
=
∆
+
=
=
+
=
∆
+
=
θ
θ
θ
θ
θ
θ
θ
θ
θ
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
w
55
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple: propagation arrière
On obtient une solution après 224 époch.
56
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple: propagation arrière
„ Résultats:
‰ w13 = 4.7621, w14 = 6.3917, w23 = 4.7618,
w24 = 6.3917, w35 = -10.3788, w45 = 9.7691
‰ θ3 = 7.3061, θ4 = 2.8441, θ5 = 4.5589
„ Il a fallu entraîner le réseau pour 224
époques (epoch) avec les 4 entrées, pour
obtenir la solution.
57
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple: propagation arrière
Entrées Sortie
voulue
Sortie
réelle
Erreur
x1 x2 yd y5 e
0 0 0 0.0155 -0.0155
0 1 1 0.9849 0.0151
1 0 1 0.9849 0.0151
1 1 0 0.0175 -0.0175
0.0010
Somme
des
erreurs
58
GIND5439 – Gabriel Cormier, Université de Moncton
Overfitting
„ Le « overfitting » arrive quand le réseau de
neurones apprend les détails spécifiques des
entrées et non pas leur caractéristique générale
trouvée dans les données présentes et futures.
„ Deux causes possibles:
‰ Entraînement trop long. Solution:
„ Tester contre un ensemble de données différentes de temps
en temps.
„ Arrêter quand les résultats commencent à devenir pires.
‰ Trop de nœuds cachés
„ Un nœud peut modéliser une fonction linéaire.
„ Plusieurs nœuds peuvent modéliser des fonctions d’ordre
supérieur, ou plusieurs ensembles d’entrées.
„ Trop de nœuds vont modéliser les données trop près,
empêchant donc la généralisation.
59
GIND5439 – Gabriel Cormier, Université de Moncton
Récolte de données
„ Les données d’apprentissages contiennent
un nombre de cas:
‰ Contient des valeurs pour une gamme de
variables d’entrées et de sorties.
„ On doit décider
‰ Combien de variables utiliser
‰ Combien (et quels) de cas à récolter.
60
GIND5439 – Gabriel Cormier, Université de Moncton
Récolte de données
„ Les réseaux de neurones traitent des
données numériques dans une gamme assez
limitée.
„ Données manquantes?
‰ On substitue la valeur moyenne des autres
ensembles de données (ou une autre statistique).
„ Données non-numériques
‰ On assigne une valeur nominale
61
GIND5439 – Gabriel Cormier, Université de Moncton
Récolte de données
„ On choisit des variables qu’on pense être critiques.
„ Des variables numériques et nominales peuvent être traitées.
‰ On convertit d’autres variables en l’une de ces formes.
„ Des centaines ou milles cas sont nécessaires; plus il y a de
variables, plus il faut de cas.
„ Des cas ayant des données manquantes peuvent être utilisés, si
nécessaire, mais des données aberrantes peuvent causer des
problèmes.
‰ Enlever les données aberrantes si possible.
‰ Si on a assez de données, éliminer les cas ayant des données
manquantes.
„ Si la quantité de données disponibles est petite, on peut
considérer l’utilisation d’ensemble.
62
GIND5439 – Gabriel Cormier, Université de Moncton
Réseau Hopfield
„ Les réseaux de neurones furent développés par
analogie au cerveau humain.
„ La mémoire du cerveau, cependant, fonctionne par
association.
„ Par exemple, on peut reconnaître des visages
familiers dans un environnement nouveau dans
100-200ms. On peut aussi se souvenir d’une
expérience sensorielle, incluant des sons et scènes,
quand on entend que quelques notes de musique.
Le cerveau associe régulièrement une chose à une
autre.
63
GIND5439 – Gabriel Cormier, Université de Moncton
Réseau Hopfield
„ Les réseaux de neurones à niveaux multiples
entraînés par l’algorithme de propagation
arrière sont utilisés dans des problèmes de
reconnaissance de formes.
„ Pour simuler le comportement de la mémoire
humaine, on a besoin d’un différent type de
réseau: un réseau de neurones récurrent.
„ Un réseau de neurones récurrent a des
boucles de feedback entre les sorties et les
entrées.
64
GIND5439 – Gabriel Cormier, Université de Moncton
Réseau Hopfield à 1 niveau, n neurones
xi
x1
x2
xn
1
2
i
n
y1
y2
Sorties
Entrées
yi
yn
65
GIND5439 – Gabriel Cormier, Université de Moncton
Réseau Hopfield
„ Utilise des neurones du type McCulloch-Pitts
avec une fonction d’activation sign.
‰ Si l’entrée pondérée < 0 alors la sortie = -1
‰ Si l’entrée pondérée > 0 alors la sortie = +1
‰ Si l’entrée pondérée = 0 alors la sortie ne change
pas.
⎪
⎩
⎪
⎨
⎧
=
<
−
>
+
=
0
0
1
0
1
X
si
Y
X
si
X
si
Y sign
66
GIND5439 – Gabriel Cormier, Université de Moncton
Réseau Hopfield
„ L’état présent du réseau Hopfield est
déterminé par la sortie présente de tous les
neurones, y1(p), y2(p), …, yn(p).
„ Donc, pour un réseau à un seul niveau ayant
n neurones, l’état peut être défini par un
vecteur d’état:
⎥
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎢
⎣
⎡
=
n
y
y
y
M
2
1
Y
67
GIND5439 – Gabriel Cormier, Université de Moncton
Réseau Hopfield
„ Dans un réseau Hopfield, les poids entre les
neurones sont typiquement représentés sous forme
de matrice:
où
‰ M est le nombre d’états à être mémorisés par le réseau
‰ YM est le vecteur binaire de dimension n
‰ I est la matrice identité de dimension n x n
‰ L’indice T veut dire la transposée
I
Y
Y
W M
M
m
T
m
m −
= ∑
=1
68
GIND5439 – Gabriel Cormier, Université de Moncton
États possibles, réseau Hopfield
y1
y2
y3
(1, −1, 1)
(−1, −1, 1)
(−1, −1, −1) (1, −1, −1)
(1, 1, 1)
(−1, 1, 1)
(1, 1, −1)
(−1, 1, −1)
0
69
GIND5439 – Gabriel Cormier, Université de Moncton
Utilité des réseaux de neurones
„ Analyse des investissements
‰ Pour prédire le mouvement des actions (stocks),
monnaies, etc à partir de données précédentes.
„ Analyse de signature
‰ Comme mécanisme pour comparer des
signatures sur des chèques.
„ Prévision de la quantité de pluie
‰ Permet aux fermiers d’optimiser la récolte;
prévisions de sécheresse, niveau d’eau dans des
rivières.
70
GIND5439 – Gabriel Cormier, Université de Moncton
Utilisation des réseaux de neurones
„ Industrie
‰ Prévision de la demande des consommateurs;
permet de réduire l’entreposage.
„ Surveillance
‰ Surveillance des défaillances dans les moteurs
d’avions.
71
GIND5439 – Gabriel Cormier, Université de Moncton
Utilisation des réseaux de neurones
„ Quand est-il utile d’utiliser un réseau de neurones?
‰ Un des avantages principaux des réseaux de neurones par
rapport aux autres systèmes (règles, logique floue, etc.) est
qu’ils nécessitent moins d’input des experts.
„ Dans certains cas il peut être très difficile de parler à un
expert; ex: on ne peut pas passer 2 heures à parler avec un
expert en échanges d’obligations ; ça coûterait des millions de
dollars à son employeur.
‰ Un bénéfice des réseaux de neurones est qu’ils trouvent
souvent des relations entre les données sans avoir besoin
d’input d’un expert, si on a des données appropriées.
72
GIND5439 – Gabriel Cormier, Université de Moncton
Utilisation des réseaux de neurones
„ Les réseaux de neurones sont excellents lorsqu’il
s’agit de modéliser des données incomplètes ou
contenant du bruit, comme c’est souvent le cas avec
des données réelles. Les réseaux de neurones
traitent ce sorte de problèmes souvent mieux que
les méthodes statistiques.
„ Cependant, ceci ne veut pas dire qu’il suffit juste de
ramasser de l’information et entraîner le réseau pour
obtenir de bons résultats.
„ Il faut s’assurer que l’information récoltée est bien
inspectée et présentée de façon convenable au
réseau.
73
GIND5439 – Gabriel Cormier, Université de Moncton
Utilisation des réseaux de neurones
„ Les réseaux de neurones sont excellents pour
trouver des relations subtiles entre les données, ce
qui peut être un avantage et un désavantage.
‰ Ex: une équipe de recherche voulait entraîner un réseau de
neurones à détecter des chars d’assaut dans des photos.
Le réseau devait détecter s’il y avait des chars ou non dans
des photos. Des photos furent prises avec des chars et
sans des chars, puis converties en format lisible par le
réseau de neurones. Le réseau fut entraîné, et fonctionnait
à merveille pour distinguer entre les deux groupes de
photos. Cependant, le réseau donnait de très mauvais
résultats quand de nouvelles photos étaient présentées.
74
GIND5439 – Gabriel Cormier, Université de Moncton
Utilisation des réseaux de neurones
‰ Finalement, les chercheurs se sont aperçus que
les photos avec des chars furent prisent quand il
faisait soleil, tandis que les photos sans chars
furent prisent quand le temps était nuageux. Le
réseau avait apprit à distinguer entre des jours
ensoleillés ou nuageux, et non entre des photos
avec chars ou pas.
75
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
„ On fera ici un exemple d’utilisation des
réseaux de neurones pour distinguer des
formes, plus spécifiquement des chiffres.
„ On utilisera la boîte à outil Neural Networks
de Matlab.
76
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
„ On doit reconnaître 3 chiffres (1, 2 et 3):
77
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
„ Il faut rendre ces données disponibles de
façon informatique: on va faire une
pixelisation des images:
78
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
„ On a choisit une grille 5×4 pour pixeliser les
images. On aurait pu choisir quelque chose
avec plus de pixels, mais ceci augmente le
nombre d’entrées.
„ Avec cette grille 5×4, comme entrée, un point
noir représentera un 1, et un point jaune
représentera un 0. On a donc 20 entrées au
réseau de neurones.
79
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
„ L’entrée sera donc composée de 20 « bits »,
de valeur 0 ou 1.
„ Exemple, entrée 1:
‰ input1 = [ 0; 0; 1; 0; 0; 0; 1; 0; 0; 0; 1; 0; 0; 0; 1; 0; 0; 0; 1; 0;];
Bit 1
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
Les pixels 3, 7, 11, 15
et 19 ont la valeur 1.
Les autres ont la
valeur 0.
80
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
„ On refait le processus de pixelisation pour les deux
autres entrées:
‰ input2 = [ 1; 1; 1; 1; 0; 0; 0; 1; 1; 1; 1; 1; 1; 0; 0; 0; 1; 1; 1; 1;];
‰ input3 = [ 1; 1; 1; 1; 0; 0; 0; 1; 1; 1; 1; 1; 0; 0; 0; 1; 1; 1; 1; 1;];
„ Il faut maintenant créer le réseau de neurones:
‰ net = newff([0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0
1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1],[5 2],{'logsig','logsig'});
‰ On crée un réseau à deux niveaux, où les entrées varient
entre 0 et 1. Le premier niveau a 5 neurones, le deuxième
niveau en a 2 (2 sorties). La fonction d’activation utilisée
est « logsig ».
81
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
„ Pourquoi y a-t’il 2 sorties?
‰ On va coder la sortie de façon binaire:
„ 00 représente un 0 (le réseau détecte un « 0 »)
„ 01 représente un 1 (le réseau détecte un « 1 »)
„ 10 représente un 2 (le réseau détecte un « 2 »)
„ 11 représente un 3 (le réseau détecte un « 3 »)
‰ On aura aussi pu utiliser un autre codage à la
sortie:
„ 000 représente 0
„ 001 représente 1
„ 010 représente 2
„ 100 représente 3
82
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
„ On spécifie quelques paramètres:
‰ net.trainParam.goal = 1e-10;
‰ net.trainParam.epochs = 200;
‰ Soit le but (somme des erreurs = 1e-10) et le
nombre maximal d’époques: 200.
„ On entraîne maintenant le réseau:
‰ input = [input1 input2 input3];
‰ target = [1 0 1; 0 1 1];
‰ net = train(net,input,target);
83
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
0 2 4 6 8 10 12 14 16 18 20
10
-10
10
-8
10
-6
10
-4
10
-2
10
0
21 Epochs
Training-Blue
Goal-Black
Performance is 2.96561e-011, Goal is 1e-010
Entraînement du réseau de neurones.
84
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
„ On vérifie la sortie réelle avec les entrées
d’entraînement:
‰ output = sim(net,input)
„ On obtient:
‰ output =
1.0000 0.0000 1.0000
0.0000 1.0000 1.0000
« 01 » veut dire que le
réseau détecte un 1
85
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
„ On vérifie maintenant la performance du
réseau avec des entrées un peu différentes:
86
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
„ On obtient comme résultat:
‰ test1 = [ 0; 0; 1; 0; 0; 1; 1; 0; 0; 0; 1; 0; 0; 0; 1; 0; 0; 1; 1; 1;];
‰ output1 = sim(net,test1)
‰ test2 = [ 1; 1; 1; 0; 0; 0; 0; 1; 0; 1; 1; 0; 1; 0; 0; 0; 1; 1; 1; 1;];
‰ output2 = sim(net,test2)
‰ test3 = [ 1; 1; 1; 1; 0; 0; 0; 1; 0; 1; 1; 0; 0; 0; 0; 1; 1; 1; 1; 0;];
‰ output3 = sim(net,test3)
„ Résultats:
‰ output1 = 0.0002 1.0000 “c’est comme un 1”
‰ output2 = 1.0000 0.0001 “c’est comme un 2”
‰ output3 = 0.9999 1.0000 “c’est comme un 3”
87
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
„ Si on entraîne le réseau avec d’autres
données, est-ce que la performance sera la
même?
88
GIND5439 – Gabriel Cormier, Université de Moncton
Exemple d’application
„ Dans ce cas-ci, on obtient la même performance:
‰ output1 =
1.0000
0.0016
‰ output2 =
0.0000
1.0000
‰ output3 =
1.0000
1.0000

Contenu connexe

Similaire à GIND5439_Chapitre6.pdf

Exposé réseaux des neurones (NN) - (RN)
Exposé réseaux des neurones (NN) - (RN)Exposé réseaux des neurones (NN) - (RN)
Exposé réseaux des neurones (NN) - (RN)Soumia Elyakote HERMA
 
Introduction to Machine learning
Introduction to Machine learningIntroduction to Machine learning
Introduction to Machine learningQuentin Ambard
 
Rapport projet Master 2 - Intelligence Artificielle
Rapport projet Master 2 - Intelligence ArtificielleRapport projet Master 2 - Intelligence Artificielle
Rapport projet Master 2 - Intelligence ArtificielleYanis Marchand
 
Presentation - Automated Variable Weighting in k-Means Type Clustering
Presentation - Automated Variable Weighting in k-Means Type ClusteringPresentation - Automated Variable Weighting in k-Means Type Clustering
Presentation - Automated Variable Weighting in k-Means Type ClusteringFranck Dernoncourt
 
Fondements du machine learning
Fondements du machine learningFondements du machine learning
Fondements du machine learningFrederic Simard
 
chap 3 complexité (3).pdf
chap 3 complexité (3).pdfchap 3 complexité (3).pdf
chap 3 complexité (3).pdfdonixwm
 
Le Reseau De Neurones
Le Reseau De NeuronesLe Reseau De Neurones
Le Reseau De Neuronesguestf80d95
 
La programmation par contraintes avec Choco3 (Java)
La programmation par contraintes avec Choco3 (Java)La programmation par contraintes avec Choco3 (Java)
La programmation par contraintes avec Choco3 (Java)Aline Figoureux
 
Performances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicalesPerformances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicalesEL-Hachemi Guerrout
 

Similaire à GIND5439_Chapitre6.pdf (14)

Exposé réseaux des neurones (NN) - (RN)
Exposé réseaux des neurones (NN) - (RN)Exposé réseaux des neurones (NN) - (RN)
Exposé réseaux des neurones (NN) - (RN)
 
Introduction to Machine learning
Introduction to Machine learningIntroduction to Machine learning
Introduction to Machine learning
 
Rapport projet Master 2 - Intelligence Artificielle
Rapport projet Master 2 - Intelligence ArtificielleRapport projet Master 2 - Intelligence Artificielle
Rapport projet Master 2 - Intelligence Artificielle
 
Presentation - Automated Variable Weighting in k-Means Type Clustering
Presentation - Automated Variable Weighting in k-Means Type ClusteringPresentation - Automated Variable Weighting in k-Means Type Clustering
Presentation - Automated Variable Weighting in k-Means Type Clustering
 
Fondements du machine learning
Fondements du machine learningFondements du machine learning
Fondements du machine learning
 
chap 3 complexité (3).pdf
chap 3 complexité (3).pdfchap 3 complexité (3).pdf
chap 3 complexité (3).pdf
 
Le Reseau De Neurones
Le Reseau De NeuronesLe Reseau De Neurones
Le Reseau De Neurones
 
rl-01.pdf
rl-01.pdfrl-01.pdf
rl-01.pdf
 
La programmation par contraintes avec Choco3 (Java)
La programmation par contraintes avec Choco3 (Java)La programmation par contraintes avec Choco3 (Java)
La programmation par contraintes avec Choco3 (Java)
 
Classifieur d'entropie maximale (MaxEnt)
Classifieur d'entropie maximale (MaxEnt)Classifieur d'entropie maximale (MaxEnt)
Classifieur d'entropie maximale (MaxEnt)
 
Cours cluster si2e
Cours cluster si2eCours cluster si2e
Cours cluster si2e
 
Performances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicalesPerformances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicales
 
Chapitre 0.pdf
Chapitre 0.pdfChapitre 0.pdf
Chapitre 0.pdf
 
Comparaison
ComparaisonComparaison
Comparaison
 

GIND5439_Chapitre6.pdf

  • 2. 2 GIND5439 – Gabriel Cormier, Université de Moncton Apprentissage machine „ Comprend des mécanismes adaptifs qui permettent à un ordinateur: ‰ D’apprendre par expérience ‰ D’apprendre par exemples ‰ D’apprendre par analogie „ Les capacités d’apprentissage peuvent améliorer la performance d’un système intelligent au fil du temps. „ Les deux approches populaires sont: ‰ Réseaux de neurones ‰ Algorithme génétique
  • 3. 3 GIND5439 – Gabriel Cormier, Université de Moncton Qu’est-ce qu’un réseau de neurones? „ C’est un modèle de raisonnement basé sur le cerveau humain. „ Le cerveau est constitué d’un ensemble de cellules nerveuses, ou unités de traitement d’information, appelés neurones. „ Cerveau ‰ Près de 10 milliards de neurones ‰ 60 trillions de connexions, des synapses, entre eux. „ Un neurone est constitué de: ‰ Un corps de cellule, le soma ‰ Un nombre de fibres appelés dendrites ‰ Un fibre long appelé axone.
  • 4. 4 GIND5439 – Gabriel Cormier, Université de Moncton Réseau de neurones biologique Soma Soma Synapse Synapse Dendrites Axon Synapse Dendrites Axon
  • 5. 5 GIND5439 – Gabriel Cormier, Université de Moncton Qu’est-ce qu’un réseau de neurones? „ C’est un ensemble de processeurs très simples, appelés neurones. „ Les neurones sont branchés ensemble à l’aide de liens pondérés qui passent des signaux d’un neurone à un autre. „ Le signal de sortie est transmis à travers la connexion de sortie du neurone. „ La sortie se divise en un nombre de branches qui transmettent tous le même signal. „ Les branches de sortie se terminent à l’entrée de d’autres neurones dans le réseau.
  • 6. 6 GIND5439 – Gabriel Cormier, Université de Moncton Qu’est-ce qu’un réseau de neurones? „ Chaque neurone reçoit un nombre de signaux d’entrée xi à travers ses connexions. „ Un ensemble de poids réels wi sont utilisés pour décrire la force de la connexion. „ Le niveau d’activation Σxiwi détermine la force cumulative des signaux d’entrée. „ Une fonction seuil f calcule l’état final de la sortie. Ça simule le comportement ON/OFF de neurones réels.
  • 7. 7 GIND5439 – Gabriel Cormier, Université de Moncton Qu’est-ce qu’un réseau de neurones? „ Chaque neurone produit une seule sortie. „ Le signal de sortie est transmis à travers la connexion de sortie du neurone. „ La connexion de sortie se sépare en un nombre de branches ‰ Le même signal se propage sur chaque branche. „ Les branches de sortie se terminent aux connexions d’entrée de d’autre neurones.
  • 8. 8 GIND5439 – Gabriel Cormier, Université de Moncton Qu’est-ce qu’un réseau de neurones? „ Chaque réseau est aussi caractérisé par des propriétés globales tel que: ‰ Topologie du réseau ‰ Algorithme d’apprentissage ‰ Technique d’encodage
  • 9. 9 GIND5439 – Gabriel Cormier, Université de Moncton Architecture typique d’un réseau de neurones. Niveau d’entrée Niveau de sortie Niveau intermédiaire Signaux d’entrée Signaux de sortie
  • 10. 10 GIND5439 – Gabriel Cormier, Université de Moncton Équivalences Réseau de neurones biologique Réseau de neurones artificiel Soma Neurone Dendrite Entrée Axon Sortie Synapse Poids
  • 11. 11 GIND5439 – Gabriel Cormier, Université de Moncton Neurone McCulloch-Pitts „ Les entrées sont excitatrices (+1) ou inhibitrices (-1) „ La fonction d’activation multiplie chaque entrée par son poids correspondant et fait la somme du résultat. „ Si le résultat est > 0, la sortie du neurone est 1; sinon -1. „ On a démontré que ces neurones peuvent être construites pour calculer n’importe quelle fonction logique. „ On a démontré qu’un système de ces neurones peut produire un modèle informatique complet.
  • 12. 12 GIND5439 – Gabriel Cormier, Université de Moncton Le neurone Entrées Poids Sorties Neurone Y x1 x2 xn Y Y Y w2 w1 wn
  • 13. 13 GIND5439 – Gabriel Cormier, Université de Moncton Calcul de la sortie „ Le neurone calcul la somme pondérée des entrées et compare le résultat avec la valeur seuil θ. „ Si l’entrée nette est moins que la valeur seuil, la sortie du neurone est -1. „ Si l’entrée nette est plus grande que la valeur seuil, le neurone est activé et la sortie est +1. „ La fonction d’activation (ou fonction de transfert) du neurone est: „ Ce type de fonction est la fonction sign. ∑ = = n i i iw x X 1 ⎩ ⎨ ⎧ θ < − θ ≥ + = X X Y si , 1 si , 1
  • 14. 14 GIND5439 – Gabriel Cormier, Université de Moncton Fonctions d’activation Stepfunction Signfunction +1 -1 0 +1 -1 0 X Y X Y +1 -1 0 X Y Sigmoidfunction +1 -1 0 X Y Linearfunction ⎩ ⎨ ⎧ < ≥ = 0 if , 0 0 if , 1 X X Ystep ⎩ ⎨ ⎧ < − ≥ + = 0 if , 1 0 if , 1 X X Ysign X sigmoid e Y − + = 1 1 X Ylinear =
  • 15. 15 GIND5439 – Gabriel Cormier, Université de Moncton Apprentissage d’un neurone „ Est-ce qu’un seul neurone peut apprendre une tâche? ‰ Le Perceptron „ 1958, Frank Rosenblatt „ Basé sur le modèle de McCulloch-Pitts „ Un algorithme d’apprentissage qui a produit la première procédure pour entraîner un réseau de neurones. ‰ La forme la plus simple d’un réseau de neurones. ‰ Est constitué d’un seul neurone avec des poids ajustables et un limiteur brusque: fonction échelon ou sign.
  • 16. 16 GIND5439 – Gabriel Cormier, Université de Moncton Perceptron à un seul niveau, 2 entrées Entrées Seuil x1 x2 Sortie Y ∑ Limiteur brusque w2 w1 Combineur linéaire θ
  • 17. 17 GIND5439 – Gabriel Cormier, Université de Moncton Perceptron „ La somme pondérée des entrées est appliquée au limiteur brusque qui produit une sortie de +1 si l’entrée est positive et -1 si l’entrée est négative. „ Le but est de classifier les entrées, les stimuli externes x1, x2, …, xn, en l’une de deux classes A1 et A2.
  • 18. 18 GIND5439 – Gabriel Cormier, Université de Moncton Perceptron „ Comment le perceptron apprend-t-il sa tâche de classification? ‰ On utilise une forme d’apprentissage supervisé. ‰ De faibles ajustements sont fait aux poids pour réduire la différence entre la sortie réelle et la sortie désirée. ‰ Les poids initiaux sont assignés de façon aléatoire, typiquement entre -0.5 et +0.5. ‰ Après un essai pour résoudre le problème, un « enseignant » donne le résultat correct. ‰ Les poids sont ensuite modifiés pour réduire l’erreur.
  • 19. 19 GIND5439 – Gabriel Cormier, Université de Moncton Apprentissage du perceptron „ Si, à une itération p, la sortie réelle est Y(p) et la sortie voulue est Yd(p), alors l’erreur est: „ L’itération p représente le pième exemple d’entraînement présenté au perceptron. „ Si l’erreur e(p) est positive, il faut augmenter la sortie Y(p) du perceptron; si l’erreur est négative, il faut diminuer la sortie. ( ) ( ) ( ) K 3 , 2 , 1 où = − = p p Y p Y p e d
  • 20. 20 GIND5439 – Gabriel Cormier, Université de Moncton Règle d’apprentissage du perceptron ) ( ) ( ) ( ) 1 ( p e p x p w p w i i i ⋅ ⋅ + = + α Où p = 1, 2, 3, … α est le taux d’apprentissage, 0 < α < 1 En utilisant cette règle, on peut construire un algorithme d’apprentissage pour des tâches de classification.
  • 21. 21 GIND5439 – Gabriel Cormier, Université de Moncton Algorithme d’apprentissage „ Étape 1: initialisation ‰ On crée les poids initiaux w1, w2, …, wn et le seuil θ à des valeurs aléatoires dans l’intervalle [-0.5, 0.5]. ‰ Rappel: Si l’erreur e(p) est positive, il faut augmenter la sortie Y(p) du perceptron; si l’erreur est négative, il faut diminuer la sortie.
  • 22. 22 GIND5439 – Gabriel Cormier, Université de Moncton Algorithme d’apprentissage „ Étape 2: activation ‰ On active le perceptron en y appliquant les entrées x1(p), x2(p), …, xn(p), et la sortie voulue Yd(p). On calcule la sortie réelle à l’itération p = 1. où n est le nombre d’entrées du perceptron, et step est une fonction d’activation échelon. ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎣ ⎡ θ − = ∑ = n i i i p w p x step p Y 1 ) ( ) ( ) (
  • 23. 23 GIND5439 – Gabriel Cormier, Université de Moncton Algorithme d’apprentissage „ Étape 3: Mise à jour du poids ‰ On met à jour le poids du perceptron: où ∆wi est la correction au poids à l’itération p. ‰ La correction au poids est: „ Étape 4: Prochaine itération (p = p + 1), on retourne à l’étape 2, et on continue jusqu’à ce qu’on converge. ) ( ) ( ) 1 ( p w p w p w i i i ∆ + = + ) ( ) ( ) ( p e p x p w i i ⋅ ⋅ = ∆ α
  • 24. 24 GIND5439 – Gabriel Cormier, Université de Moncton Est-ce qu’un perceptron peut réaliser les opérations logiques de base? Entrée x1 Entrée x2 AND x1 ∩ x2 OR x1 ∪ x2 XOR x1 ⊕ x2 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0
  • 25. 25 GIND5439 – Gabriel Cormier, Université de Moncton Apprentissage du perceptron: AND Entrées Poids initial Poids final Époch x1 x2 w1 w2 w1 w2 1 0 0 1 1 0 1 0 1 0 0 0 1 0.3 0.3 0.3 0.2 -0.1 -0.1 -0.1 -0.1 0 0 1 0 0 0 -1 1 0.3 0.3 0.2 0.3 -0.1 -0.1 -0.1 0.0 2 0 0 1 1 0 1 0 1 0 0 0 1 0.3 0.3 0.3 0.2 0.0 0.0 0.0 0.0 0 0 1 1 0 0 -1 0 0.3 0.3 0.2 0.2 0.0 0.0 0.0 0.0 3 0 0 1 1 0 1 0 1 0 0 0 1 0.2 0.2 0.2 0.1 0.0 0.0 0.0 0.0 0 0 1 0 0 0 -1 1 0.2 0.2 0.1 0.2 0.0 0.0 0.0 0.1 4 0 0 1 1 0 1 0 1 0 0 0 1 0.2 0.2 0.2 0.1 0.1 0.1 0.1 0.1 0 0 1 1 0 0 -1 0 0.2 0.2 0.1 0.1 0.1 0.1 0.1 0.1 5 0 0 1 1 0 1 0 1 0 0 0 1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0 0 0 1 0 0 0 0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 Sortie réelle Y Erreur Sortie voulue Yd Seuil: θ = 0.2; Taux d’apprentissage: α = 0.1
  • 26. 26 GIND5439 – Gabriel Cormier, Université de Moncton Représentation des opérations de base x1 x2 1 (a) AND (x1 ∩ x2) 1 x1 x2 1 1 (b) OR (x1 ∪ x2) x1 x2 1 1 (c) Exclusive -OR (x1 ⊕ x2) 0 0 0 Un perceptron peut apprendre AND et OR, mais pas XOR.
  • 27. 27 GIND5439 – Gabriel Cormier, Université de Moncton Pourquoi? „ Ça provient directement de l’équation „ La sortie Y est 1 seulement si la somme pondérée totale X est plus grande ou égale à la valeur seuil θ. „ L’espace d’entrée doit être divisé en deux le long d’une frontière définie par X = θ. ⎩ ⎨ ⎧ θ < − θ ≥ + = X X Y si , 1 si , 1 ∑ = = n i i iw x X 1
  • 28. 28 GIND5439 – Gabriel Cormier, Université de Moncton Fonctions d’activation „ Est-ce qu’une fonction sigmoïde ou linéaire permettrait de réaliser XOR? ‰ Un perceptron à un seul niveau fait des décisions de la même façon peu importe la fonction d’activation. ‰ Minsky et Papert (1969) ont démontré que le perceptron de Rosenblatt ne peut pas faire des généralisations globales basé sur des exemples locaux.
  • 29. 29 GIND5439 – Gabriel Cormier, Université de Moncton Réseaux de neurones multi-niveau „ Un perceptron à plusieurs niveaux est un réseau à réaction directe ayant un ou plusieurs niveaux cachés. „ Le réseau est constitué de: ‰ Un niveau d’entrée ‰ Au moins 1 niveau intermédiaire ou caché de neurones ‰ Un niveau de sortie „ Les entrées se propagent vers l’avant (la sortie) niveau par niveau.
  • 30. 30 GIND5439 – Gabriel Cormier, Université de Moncton Réseau de neurones à 2 niveaux
  • 31. 31 GIND5439 – Gabriel Cormier, Université de Moncton Niveau intermédiaire „ Que cache le niveau intermédiaire? ‰ Les neurones dans le niveau intermédiaire „ Ne peuvent pas être observés à partir du comportement entrée/sortie du réseau. „ Les poids des neurones intermédiaires représentent des entités cachées. „ Les entités sont utilisés dans le niveau de sortie pour déterminer la sortie.
  • 32. 32 GIND5439 – Gabriel Cormier, Université de Moncton Apprentissage dans réseaux multi-niveau „ Propagation arrière (Bryson et Ho, 1969) „ Un ensemble d’entrées est présenté au réseau. „ Le réseau calcule les sorties, et s’il y a une erreur (une différence entre la sortie réelle et la sortie voulue), les poids sont ajustés pour réduire cette erreur.
  • 33. 33 GIND5439 – Gabriel Cormier, Université de Moncton Apprentissage dans des réseaux multi- niveau „ L’apprentissage est déterminé par: ‰ Connexions entre les neurones (architecture) ‰ Les fonctions d’activation utilisées par les neurones. ‰ L’algorithme d’apprentissage qui spécifie la procédure pour ajuster les poids.
  • 34. 34 GIND5439 – Gabriel Cormier, Université de Moncton Apprentissage dans réseaux multi-niveau „ Dans un réseau de neurones à propagation arrière, l’algorithme d’apprentissage a deux phases: ‰ Un ensemble d’entrées d’entraînement est présenté au niveau d’entrée. ‰ Le réseau propage ces entrées niveau par niveau jusqu’à ce qu’une (ou des) sortie soit générée. ‰ Si la sortie est différente de la sortie voulue, une erreur est calculée et puis propagée dans le réseau de la sortie vers l’entrée. ‰ Les poids sont ajustés au fur et à mesure que l’erreur se propage.
  • 35. 35 GIND5439 – Gabriel Cormier, Université de Moncton Réseaux à 3 niveaux, propagation arrière Niveau d’entrée xi x1 x2 xn 1 2 i n Niveau de sortie 1 2 k l yk y1 y2 yl Entrées Erreurs wjk Niveau caché wij 1 2 j m
  • 36. 36 GIND5439 – Gabriel Cormier, Université de Moncton Apprentissage dans réseaux multi-niveau „ On calcule le poids net comme avant: „ On passe ensuite cette valeur à la fonction d’activation: fonction sigmoïde. θ − = ∑ = n i i i w x X 1 X sigmoïde e Y − + = 1 1
  • 37. 37 GIND5439 – Gabriel Cormier, Université de Moncton Apprentissage dans réseaux multi-niveau 1. Présenter les entrées et déterminer les valeurs des niveaux cachés et du niveau de sortie. 2. Comparer les résultats du niveau de sortie aux résultats corrects. 3. Modifier les poids du niveau d’entrée et des niveaux cachés pour réduire l’erreur. 4. La règle utilisée pour modifier les poids se nomme règle delta, parce qu’elle change chaque poids selon sa pondération par rapport à la sortie. 1. Le delta, ou dérivée partielle de la sortie par rapport au poids.
  • 38. 38 GIND5439 – Gabriel Cormier, Université de Moncton Apprentissage dans réseaux multi-niveau „ La plupart des réseaux de neurones multi-niveau fonctionnent avec des entrées qui varient de 0 à 1. „ Les poids varient à chaque itération d’une fraction du changement nécessaire pour corriger l’erreur à la sortie. Cette fraction, α, est le taux d’apprentissage. ‰ Si le taux d’apprentissage est trop élevé, l’algorithme prend des grands pas et risque de manquer le point d’erreur minimale, ou même osciller autour du minimum. ‰ Des petits pas, qui viennent d’un taux d’apprentissage petit, trouveront éventuellement un minimum, mais risquent de prendre beaucoup de temps.
  • 39. 39 GIND5439 – Gabriel Cormier, Université de Moncton Paramètres d’apprentissage „ Taux d’apprentissage ‰ Contrôle l’amplitude des pas utilisés pour ajuster les poids. Dans certains réseaux de neurones, diminue avec le nombre d’itérations. „ Momentum ‰ Propagation arrière ‰ Lissage de l’effet des ajustements aux poids au fil des itérations. „ Tolérance (erreur) ‰ Propagation arrière ‰ Spécifie la différence acceptable entre la sortie réelle et la sortie voulue. „ Fonction d’activation ‰ La fonction utilisée à chaque neurone pour générer la sortie à partir des entrées pondérés. La fonction la plus commune est la fonction sigmoïde.
  • 40. 40 GIND5439 – Gabriel Cormier, Université de Moncton Algorithme d’apprentissage, propagation arrière „ Étape 1: Initialisation ‰ On règle tous les poids et seuils du réseau à une valeur aléatoire dans l’intervalle: ‰ Où Fi est le nombre total d’entrées au neurone i dans le réseau. L’initialisation des poids n est faite neurone par neurone. ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ + − i i F F 4 . 2 , 4 . 2
  • 41. 41 GIND5439 – Gabriel Cormier, Université de Moncton Algorithme d’apprentissage, propagation arrière „ Étape 2: Activation ‰ On active le réseau de neurone à propagation arrière en y appliquant les entrées x1(p), x2(p), …, xn(p), et les sorties voulues yd1(p), yd2(p), …, ydn(p), ‰ On calcule les sorties des neurones dans les niveaux cachés „ Où n est le nombre d’entrées au neurone j dans le niveau caché, et sigmoid est la fonction sigmoïde. ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ θ − ⋅ = ∑ = j n i ij i j p w p x sigmoid p y 1 ) ( ) ( ) (
  • 42. 42 GIND5439 – Gabriel Cormier, Université de Moncton Algorithme d’apprentissage, propagation arrière „ Étape 2 (suite) ‰ On calcule la sortie des neurones du niveau de sortie: où m est le nombre d’entrées du neurone k dans le niveau de sortie. ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎣ ⎡ θ − ⋅ = ∑ = k m j jk jk k p w p x sigmoid p y 1 ) ( ) ( ) (
  • 43. 43 GIND5439 – Gabriel Cormier, Université de Moncton Algorithme d’apprentissage, propagation arrière „ Étape 3: Poids ‰ On ajuste les poids dans le réseau à propagation arrière qui propage vers l’arrière les erreurs. ‰ Calculer le gradient d’erreur pour les neurones du niveau de sortie: où ‰ Calculer les corrections aux poids. ‰ Ajuster les poids aux neurones de sortie. [ ] ) ( ) ( 1 ) ( ) ( p e p y p y p k k k k ⋅ − ⋅ = δ ) ( ) ( ) ( , p y p y p e k k d k − = ) ( ) ( ) ( p p y p w k j jk δ α ⋅ ⋅ = ∆ ) ( ) ( ) 1 ( p w p w p w jk jk jk ∆ + = +
  • 44. 44 GIND5439 – Gabriel Cormier, Université de Moncton Algorithme d’apprentissage, propagation arrière „ Étape 3 (suite) ‰ Calculer le gradient d’erreur pour les neurones dans le niveau caché: ‰ Calculer les corrections aux poids: ‰ Ajuster les poids aux neurones cachés: ) ( ) ( ) ( 1 ) ( ) ( 1 ] [ p w p p y p y p jk l k k j j j ∑ = ⋅ − ⋅ = δ δ ) ( ) ( ) ( p p x p w j i ij δ α ⋅ ⋅ = ∆ ) ( ) ( ) 1 ( p w p w p w ij ij ij ∆ + = +
  • 45. 45 GIND5439 – Gabriel Cormier, Université de Moncton Algorithme d’apprentissage, propagation arrière „ Étape 4: Itération ‰ On augmente l’itération p de 1 (p = p + 1), on retourne à l’étape 2 et on refait le processus jusqu’à ce que le critère d’erreur soit satisfait (ex: erreur plus petite que 0.1%).
  • 46. 46 GIND5439 – Gabriel Cormier, Université de Moncton Exemple: propagation arrière „ On utilise ici un réseau simple à 3 niveaux pour apprendre la fonction XOR: Entrée 1 Entrée 2 Sortie 0 0 0 0 1 1 1 0 1 1 1 0 C’est l’exemple p.178 – 181 du manuel.
  • 47. 47 GIND5439 – Gabriel Cormier, Université de Moncton Exemple: propagation arrière -1 1 2 3 4 5 θ3 -1 w13 x1 x2 w24 w23 w14 w35 w45 -1 θ5 y5 θ4 Dans ce réseau, les neurones 1 et 2 du niveau d’entrée n’ont aucun effet et ne font que passer l’entrée au niveau 2.
  • 48. 48 GIND5439 – Gabriel Cormier, Université de Moncton Exemple: propagation arrière „ Les poids initiaux et niveaux seuils sont créés aléatoirement. Pour cet exemple, on obtient: ‰ w13 = 0.5, w14 = 0.9, w23 = 0.4, w24 = 1.0, w35 = -1.2, w45 = 1.1 ‰ θ3 = 0.8, θ4 = -0.1, θ5 = 0.3 ‰ On suppose un taux d’apprentissage α = 0.1 „ On prend ici un exemple d’entraînement où les deux entrées x1 et x2 sont 1. La sortie voulue yd,5 est donc 0 (fonction XOR).
  • 49. 49 GIND5439 – Gabriel Cormier, Université de Moncton Exemple: propagation arrière „ On calcul maintenant la sortie des neurones 3 et 4 (puisque 1 et 2 n’ont aucun effet): „ Et la sortie réelle du neurone 5: ( ) 5250 . 0 1 1 ) ( 8 . 0 4 . 0 1 5 . 0 1 3 23 2 13 1 3 = + = − + = − × + × − e w x w x sigmoid y θ ( ) 8808 . 0 1 1 ) ( 1 . 0 0 . 1 1 9 . 0 1 4 24 2 14 1 4 = + = − + = + × + × − e w x w x sigmoid y θ ( ) 5097 . 0 1 1 ) ( 3 . 0 1 . 1 8808 . 0 ) 2 . 1 ( 5250 . 0 5 45 4 35 3 5 = + = − + = − × + − × − e w y w y sigmoid y θ
  • 50. 50 GIND5439 – Gabriel Cormier, Université de Moncton Exemple: propagation arrière „ L’erreur peut maintenant être calculée: „ La prochaine étape est de propager cette erreur vers l’arrière pour modifier les poids et niveaux seuils. 5097 . 0 5097 . 0 0 5 5 , − = − = − = y y e d
  • 51. 51 GIND5439 – Gabriel Cormier, Université de Moncton Exemple: propagation arrière „ On calcule en premier le gradient d’erreur δ: „ On modifie maintenant les poids et le niveau seuil: ( ) ( )( ) 1274 . 0 5097 . 0 5097 . 0 1 5097 . 0 1 5 5 5 − = − − = − = e y y δ ( )( )( ) ( )( )( ) ( ) ( )( )( ) 0127 . 0 1274 . 0 1 1 . 0 1 0112 . 0 1274 . 0 8808 . 0 1 . 0 0067 . 0 1274 . 0 5250 . 0 1 . 0 3 5 5 4 45 5 3 35 − = − − = × − × = ∆ − = − = × × = ∆ − = − = × × = ∆ δ α θ δ α δ α y w y w
  • 52. 52 GIND5439 – Gabriel Cormier, Université de Moncton Exemple: propagation arrière „ On calcule maintenant le gradient d’erreur pour les neurones 3 et 4: „ Ces valeurs seront maintenant utilisées pour ajuster les poids des neurones 3 et 4. ( ) ( )( )( ) 0381 . 0 2 . 1 1274 . 0 5250 . 0 1 5250 . 0 1 35 5 3 3 3 = − − − = − = w y y δ δ ( ) ( )( )( ) 0147 . 0 1 . 1 1274 . 0 8808 . 0 1 8808 . 0 1 45 5 4 4 4 − = − − = − = w y y δ δ
  • 53. 53 GIND5439 – Gabriel Cormier, Université de Moncton Exemple: propagation arrière „ On calcule les variations des poids pour les neurones 3 et 4: ( )( )( ) ( )( )( ) ( ) ( )( )( ) ( )( )( ) ( )( )( ) ( ) ( )( )( ) 0015 . 0 0147 . 0 1 1 . 0 1 0015 . 0 0147 . 0 1 1 . 0 0015 . 0 0147 . 0 1 1 . 0 0038 . 0 0381 . 0 1 1 . 0 1 0038 . 0 0381 . 0 1 1 . 0 0038 . 0 0381 . 0 1 1 . 0 4 4 4 2 24 4 1 14 3 3 3 2 23 3 1 13 = − − = × − × = ∆ − = − = × × = ∆ − = − = × × = ∆ − = − = × − × = ∆ = = × × = ∆ = = × × = ∆ δ α θ δ α δ α δ α θ δ α δ α x w x w x w x w
  • 54. 54 GIND5439 – Gabriel Cormier, Université de Moncton Exemple: propagation „ La dernière étape est de mettre à jour les poids: „ On répète le processus jusqu’à ce que la somme des erreurs au carré soit plus petite que 0.001. 3127 . 0 0127 . 0 3 . 0 0985 . 0 0015 . 0 1 . 0 7962 . 0 0038 . 0 8 . 0 0888 . 1 0112 . 0 1 . 1 2067 . 1 0067 . 0 2 . 1 9985 . 0 0015 . 0 0 . 1 4038 . 0 0038 . 0 4 . 0 8985 . 0 0015 . 0 9 . 0 5038 . 0 0038 . 0 5 . 0 5 5 5 4 4 4 3 3 3 45 45 45 35 35 35 24 24 24 23 23 23 14 14 14 13 13 13 = + = ∆ + = − = + − = ∆ + = = − = ∆ + = = − = ∆ + = − = − − = ∆ + = = − = ∆ + = = + = ∆ + = = − = ∆ + = = + = ∆ + = θ θ θ θ θ θ θ θ θ w w w w w w w w w w w w w w w w w w
  • 55. 55 GIND5439 – Gabriel Cormier, Université de Moncton Exemple: propagation arrière On obtient une solution après 224 époch.
  • 56. 56 GIND5439 – Gabriel Cormier, Université de Moncton Exemple: propagation arrière „ Résultats: ‰ w13 = 4.7621, w14 = 6.3917, w23 = 4.7618, w24 = 6.3917, w35 = -10.3788, w45 = 9.7691 ‰ θ3 = 7.3061, θ4 = 2.8441, θ5 = 4.5589 „ Il a fallu entraîner le réseau pour 224 époques (epoch) avec les 4 entrées, pour obtenir la solution.
  • 57. 57 GIND5439 – Gabriel Cormier, Université de Moncton Exemple: propagation arrière Entrées Sortie voulue Sortie réelle Erreur x1 x2 yd y5 e 0 0 0 0.0155 -0.0155 0 1 1 0.9849 0.0151 1 0 1 0.9849 0.0151 1 1 0 0.0175 -0.0175 0.0010 Somme des erreurs
  • 58. 58 GIND5439 – Gabriel Cormier, Université de Moncton Overfitting „ Le « overfitting » arrive quand le réseau de neurones apprend les détails spécifiques des entrées et non pas leur caractéristique générale trouvée dans les données présentes et futures. „ Deux causes possibles: ‰ Entraînement trop long. Solution: „ Tester contre un ensemble de données différentes de temps en temps. „ Arrêter quand les résultats commencent à devenir pires. ‰ Trop de nœuds cachés „ Un nœud peut modéliser une fonction linéaire. „ Plusieurs nœuds peuvent modéliser des fonctions d’ordre supérieur, ou plusieurs ensembles d’entrées. „ Trop de nœuds vont modéliser les données trop près, empêchant donc la généralisation.
  • 59. 59 GIND5439 – Gabriel Cormier, Université de Moncton Récolte de données „ Les données d’apprentissages contiennent un nombre de cas: ‰ Contient des valeurs pour une gamme de variables d’entrées et de sorties. „ On doit décider ‰ Combien de variables utiliser ‰ Combien (et quels) de cas à récolter.
  • 60. 60 GIND5439 – Gabriel Cormier, Université de Moncton Récolte de données „ Les réseaux de neurones traitent des données numériques dans une gamme assez limitée. „ Données manquantes? ‰ On substitue la valeur moyenne des autres ensembles de données (ou une autre statistique). „ Données non-numériques ‰ On assigne une valeur nominale
  • 61. 61 GIND5439 – Gabriel Cormier, Université de Moncton Récolte de données „ On choisit des variables qu’on pense être critiques. „ Des variables numériques et nominales peuvent être traitées. ‰ On convertit d’autres variables en l’une de ces formes. „ Des centaines ou milles cas sont nécessaires; plus il y a de variables, plus il faut de cas. „ Des cas ayant des données manquantes peuvent être utilisés, si nécessaire, mais des données aberrantes peuvent causer des problèmes. ‰ Enlever les données aberrantes si possible. ‰ Si on a assez de données, éliminer les cas ayant des données manquantes. „ Si la quantité de données disponibles est petite, on peut considérer l’utilisation d’ensemble.
  • 62. 62 GIND5439 – Gabriel Cormier, Université de Moncton Réseau Hopfield „ Les réseaux de neurones furent développés par analogie au cerveau humain. „ La mémoire du cerveau, cependant, fonctionne par association. „ Par exemple, on peut reconnaître des visages familiers dans un environnement nouveau dans 100-200ms. On peut aussi se souvenir d’une expérience sensorielle, incluant des sons et scènes, quand on entend que quelques notes de musique. Le cerveau associe régulièrement une chose à une autre.
  • 63. 63 GIND5439 – Gabriel Cormier, Université de Moncton Réseau Hopfield „ Les réseaux de neurones à niveaux multiples entraînés par l’algorithme de propagation arrière sont utilisés dans des problèmes de reconnaissance de formes. „ Pour simuler le comportement de la mémoire humaine, on a besoin d’un différent type de réseau: un réseau de neurones récurrent. „ Un réseau de neurones récurrent a des boucles de feedback entre les sorties et les entrées.
  • 64. 64 GIND5439 – Gabriel Cormier, Université de Moncton Réseau Hopfield à 1 niveau, n neurones xi x1 x2 xn 1 2 i n y1 y2 Sorties Entrées yi yn
  • 65. 65 GIND5439 – Gabriel Cormier, Université de Moncton Réseau Hopfield „ Utilise des neurones du type McCulloch-Pitts avec une fonction d’activation sign. ‰ Si l’entrée pondérée < 0 alors la sortie = -1 ‰ Si l’entrée pondérée > 0 alors la sortie = +1 ‰ Si l’entrée pondérée = 0 alors la sortie ne change pas. ⎪ ⎩ ⎪ ⎨ ⎧ = < − > + = 0 0 1 0 1 X si Y X si X si Y sign
  • 66. 66 GIND5439 – Gabriel Cormier, Université de Moncton Réseau Hopfield „ L’état présent du réseau Hopfield est déterminé par la sortie présente de tous les neurones, y1(p), y2(p), …, yn(p). „ Donc, pour un réseau à un seul niveau ayant n neurones, l’état peut être défini par un vecteur d’état: ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = n y y y M 2 1 Y
  • 67. 67 GIND5439 – Gabriel Cormier, Université de Moncton Réseau Hopfield „ Dans un réseau Hopfield, les poids entre les neurones sont typiquement représentés sous forme de matrice: où ‰ M est le nombre d’états à être mémorisés par le réseau ‰ YM est le vecteur binaire de dimension n ‰ I est la matrice identité de dimension n x n ‰ L’indice T veut dire la transposée I Y Y W M M m T m m − = ∑ =1
  • 68. 68 GIND5439 – Gabriel Cormier, Université de Moncton États possibles, réseau Hopfield y1 y2 y3 (1, −1, 1) (−1, −1, 1) (−1, −1, −1) (1, −1, −1) (1, 1, 1) (−1, 1, 1) (1, 1, −1) (−1, 1, −1) 0
  • 69. 69 GIND5439 – Gabriel Cormier, Université de Moncton Utilité des réseaux de neurones „ Analyse des investissements ‰ Pour prédire le mouvement des actions (stocks), monnaies, etc à partir de données précédentes. „ Analyse de signature ‰ Comme mécanisme pour comparer des signatures sur des chèques. „ Prévision de la quantité de pluie ‰ Permet aux fermiers d’optimiser la récolte; prévisions de sécheresse, niveau d’eau dans des rivières.
  • 70. 70 GIND5439 – Gabriel Cormier, Université de Moncton Utilisation des réseaux de neurones „ Industrie ‰ Prévision de la demande des consommateurs; permet de réduire l’entreposage. „ Surveillance ‰ Surveillance des défaillances dans les moteurs d’avions.
  • 71. 71 GIND5439 – Gabriel Cormier, Université de Moncton Utilisation des réseaux de neurones „ Quand est-il utile d’utiliser un réseau de neurones? ‰ Un des avantages principaux des réseaux de neurones par rapport aux autres systèmes (règles, logique floue, etc.) est qu’ils nécessitent moins d’input des experts. „ Dans certains cas il peut être très difficile de parler à un expert; ex: on ne peut pas passer 2 heures à parler avec un expert en échanges d’obligations ; ça coûterait des millions de dollars à son employeur. ‰ Un bénéfice des réseaux de neurones est qu’ils trouvent souvent des relations entre les données sans avoir besoin d’input d’un expert, si on a des données appropriées.
  • 72. 72 GIND5439 – Gabriel Cormier, Université de Moncton Utilisation des réseaux de neurones „ Les réseaux de neurones sont excellents lorsqu’il s’agit de modéliser des données incomplètes ou contenant du bruit, comme c’est souvent le cas avec des données réelles. Les réseaux de neurones traitent ce sorte de problèmes souvent mieux que les méthodes statistiques. „ Cependant, ceci ne veut pas dire qu’il suffit juste de ramasser de l’information et entraîner le réseau pour obtenir de bons résultats. „ Il faut s’assurer que l’information récoltée est bien inspectée et présentée de façon convenable au réseau.
  • 73. 73 GIND5439 – Gabriel Cormier, Université de Moncton Utilisation des réseaux de neurones „ Les réseaux de neurones sont excellents pour trouver des relations subtiles entre les données, ce qui peut être un avantage et un désavantage. ‰ Ex: une équipe de recherche voulait entraîner un réseau de neurones à détecter des chars d’assaut dans des photos. Le réseau devait détecter s’il y avait des chars ou non dans des photos. Des photos furent prises avec des chars et sans des chars, puis converties en format lisible par le réseau de neurones. Le réseau fut entraîné, et fonctionnait à merveille pour distinguer entre les deux groupes de photos. Cependant, le réseau donnait de très mauvais résultats quand de nouvelles photos étaient présentées.
  • 74. 74 GIND5439 – Gabriel Cormier, Université de Moncton Utilisation des réseaux de neurones ‰ Finalement, les chercheurs se sont aperçus que les photos avec des chars furent prisent quand il faisait soleil, tandis que les photos sans chars furent prisent quand le temps était nuageux. Le réseau avait apprit à distinguer entre des jours ensoleillés ou nuageux, et non entre des photos avec chars ou pas.
  • 75. 75 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application „ On fera ici un exemple d’utilisation des réseaux de neurones pour distinguer des formes, plus spécifiquement des chiffres. „ On utilisera la boîte à outil Neural Networks de Matlab.
  • 76. 76 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application „ On doit reconnaître 3 chiffres (1, 2 et 3):
  • 77. 77 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application „ Il faut rendre ces données disponibles de façon informatique: on va faire une pixelisation des images:
  • 78. 78 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application „ On a choisit une grille 5×4 pour pixeliser les images. On aurait pu choisir quelque chose avec plus de pixels, mais ceci augmente le nombre d’entrées. „ Avec cette grille 5×4, comme entrée, un point noir représentera un 1, et un point jaune représentera un 0. On a donc 20 entrées au réseau de neurones.
  • 79. 79 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application „ L’entrée sera donc composée de 20 « bits », de valeur 0 ou 1. „ Exemple, entrée 1: ‰ input1 = [ 0; 0; 1; 0; 0; 0; 1; 0; 0; 0; 1; 0; 0; 0; 1; 0; 0; 0; 1; 0;]; Bit 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Les pixels 3, 7, 11, 15 et 19 ont la valeur 1. Les autres ont la valeur 0.
  • 80. 80 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application „ On refait le processus de pixelisation pour les deux autres entrées: ‰ input2 = [ 1; 1; 1; 1; 0; 0; 0; 1; 1; 1; 1; 1; 1; 0; 0; 0; 1; 1; 1; 1;]; ‰ input3 = [ 1; 1; 1; 1; 0; 0; 0; 1; 1; 1; 1; 1; 0; 0; 0; 1; 1; 1; 1; 1;]; „ Il faut maintenant créer le réseau de neurones: ‰ net = newff([0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1],[5 2],{'logsig','logsig'}); ‰ On crée un réseau à deux niveaux, où les entrées varient entre 0 et 1. Le premier niveau a 5 neurones, le deuxième niveau en a 2 (2 sorties). La fonction d’activation utilisée est « logsig ».
  • 81. 81 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application „ Pourquoi y a-t’il 2 sorties? ‰ On va coder la sortie de façon binaire: „ 00 représente un 0 (le réseau détecte un « 0 ») „ 01 représente un 1 (le réseau détecte un « 1 ») „ 10 représente un 2 (le réseau détecte un « 2 ») „ 11 représente un 3 (le réseau détecte un « 3 ») ‰ On aura aussi pu utiliser un autre codage à la sortie: „ 000 représente 0 „ 001 représente 1 „ 010 représente 2 „ 100 représente 3
  • 82. 82 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application „ On spécifie quelques paramètres: ‰ net.trainParam.goal = 1e-10; ‰ net.trainParam.epochs = 200; ‰ Soit le but (somme des erreurs = 1e-10) et le nombre maximal d’époques: 200. „ On entraîne maintenant le réseau: ‰ input = [input1 input2 input3]; ‰ target = [1 0 1; 0 1 1]; ‰ net = train(net,input,target);
  • 83. 83 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application 0 2 4 6 8 10 12 14 16 18 20 10 -10 10 -8 10 -6 10 -4 10 -2 10 0 21 Epochs Training-Blue Goal-Black Performance is 2.96561e-011, Goal is 1e-010 Entraînement du réseau de neurones.
  • 84. 84 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application „ On vérifie la sortie réelle avec les entrées d’entraînement: ‰ output = sim(net,input) „ On obtient: ‰ output = 1.0000 0.0000 1.0000 0.0000 1.0000 1.0000 « 01 » veut dire que le réseau détecte un 1
  • 85. 85 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application „ On vérifie maintenant la performance du réseau avec des entrées un peu différentes:
  • 86. 86 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application „ On obtient comme résultat: ‰ test1 = [ 0; 0; 1; 0; 0; 1; 1; 0; 0; 0; 1; 0; 0; 0; 1; 0; 0; 1; 1; 1;]; ‰ output1 = sim(net,test1) ‰ test2 = [ 1; 1; 1; 0; 0; 0; 0; 1; 0; 1; 1; 0; 1; 0; 0; 0; 1; 1; 1; 1;]; ‰ output2 = sim(net,test2) ‰ test3 = [ 1; 1; 1; 1; 0; 0; 0; 1; 0; 1; 1; 0; 0; 0; 0; 1; 1; 1; 1; 0;]; ‰ output3 = sim(net,test3) „ Résultats: ‰ output1 = 0.0002 1.0000 “c’est comme un 1” ‰ output2 = 1.0000 0.0001 “c’est comme un 2” ‰ output3 = 0.9999 1.0000 “c’est comme un 3”
  • 87. 87 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application „ Si on entraîne le réseau avec d’autres données, est-ce que la performance sera la même?
  • 88. 88 GIND5439 – Gabriel Cormier, Université de Moncton Exemple d’application „ Dans ce cas-ci, on obtient la même performance: ‰ output1 = 1.0000 0.0016 ‰ output2 = 0.0000 1.0000 ‰ output3 = 1.0000 1.0000