Vous êtes sur la page 1sur 27

IFT 616

Intelligence Artificielle

Jean-François Landry

Département d’informatique
Université de Sherbrooke

Réseaux de neurones artificiels

http://planiart.usherbrooke.ca/~eric/ift615
Sujets couverts

• Réseau de neurones artificiel

• Quelques architectures

• Quelques algorithmes d’apprentissage

• Exemples d’applications

IFT615 2
Réseau de neurones artificiel (RNA)
• Un modèle de calcul inspiré du cerveau humain.

• Cerveau humain : • RNA :


– Un nombre fini de processeurs
– 10 milliards de neurones élémentaires (neurones).
– 60 milliards de connexions (synapses) – Liens pondérés passant un signal d’un
neurone vers d’autres.
– Un synapse peut être inhibant ou excitant.
– Plusieurs signaux d’entrée par neurone
– Un seul signal de sortie

Cerveau RNA
cellule (soma) neurone
dendrites entrées
synapses poids
axon sortie

IFT615 3
Comment un neurone calcule sa sortie ?
[McCulloch-Pitts, 1943]

n
• net = Σ wixi
i=1
• f(net)= +1 si net ≥ 0, -1 sinon.
• C.à-d. : f(net) = sign(net)

IFT615 4
Comment un neurone calcule sa sortie ?
[McCulloch-Pitts, Exemples]

xi wi
xi wi

x y x+y-2  x+y-1 
1 1 0 1 1 1
1 0 -1 -1 0 1
0 1 1 -1 0 1
0 0 -2 -1 -1 -1

IFT615 5
Fonction d’activation sigmoïde

n
x= Σ wixi
i=1 f(x) = 1 -λx
1+e

f(x) = sign(x)

IFT615 6
Comment un RNA apprend ?

• Les liens entre les neurones ont des poids numériques.


• Un poids reflète la force, l’importance, de l’entrée correspondante.
• La sortie de chaque neurone est fonction de la somme pondérée de ses
entrées.
• Un RNA apprend en ajustant ses poids itérativement jusqu’à ce que les
sorties soient en accord avec les entrées.

IFT615 7
Est-ce qu’un seul neurone peut apprendre ?
• Oui.
Perceptron [Rosenblatt, 1958]

n
Paramètres net = Σ wixi
i=1
xi : entrée y=f(net)= sign(net)
wi : poids (nombre réel)
c : pas(step) d’apprentissage:0 ≤ c ≤1
d : sortie désirée Algorithme d’apprentissage
Pour chaque donnée d’entraînement,
incrémenter le poids wi par :
wi = c(d-y)xi

IFT615 8
Exemple
x1 x2 d
1.0 1.0 1 c = 0.2

9.4 6.4 -1 wi = c (d-y)xi


n
2.5 2.1 1
1
net = Σ wixi
i=1
8.0 7.7 -1 y=f(net)= sign(net)
0.5 2.2 1
1. Initialisation : w = [w1, w2, w3] = [.75, .5, -.6]
7.9 8.4 -1
2. f(net) = sign(.75×1+.5×1-.6×1)=sign(.65)=1;
7.0 7.0 -1
w = 0.2(1-1)X= 0; donc w est inchangé.
2.8 0.8 1
3. f(net) = sign(.75×9.4+.5×6.4-.6×1)=sign(9.65)=1;
1.2 3.0 1
w = -.4X; donc w = w -.4 [9.4, 6.4, 1] = [-3.01, -2.06, -1]
7.8 6.1 -1

500. w = [-1.3, -1.1, +10.9].
Équation de la ligne séparant les données : -1.3x1 + -1.1x2+10.9 = 0.

IFT615 9
Exemple
x1 x2 d Après dix itérations
1.0 1.0 1
9.4 6.4 -1
2.5 2.1 1
8.0 7.7 -1
0.5 2.2 1
7.9 8.4 -1
7.0 7.0 -1
2.8 0.8 1
1.2 3.0 1
7.8 6.1 -1

IFT615 10
Un perceptron peut-il apprendre le ET, OU, XOR ?
• Oui pour le ET et le OU.
• Non pour le Ou-Exclusif (XOR)

• Parce qu’un perceptron peut apprendre seulement des données linéairement


séparables.

x2

(0,1) (1,1)

x1
(0,0) (1,0)

ET OU XOR

IFT615 11
Apprentissage d’un perceptron avec une
fonction d’activation sigmoïde
x1i

oi : sortie du neurone i f(neti)


xni n
di : sortie désirée pour le neurone i
neti = Σ wjixji
c : pas d’apprentissage : 0 ≤ c ≤1 j=1
wji : ajustement du poids de oi=f(neti) = 1 -λneti
l’entrée j au neurone i. 1+e

f ’(neti)= λ× f(neti) × (1-f(neti))

Algorithme d’apprentissage

Pour chaque donnée d’entraînement, incrémenter le poids wji par :


wji = c(di-oi)f ’(neti)xji

IFT615 12
RNA à plusieurs couches

n
neti = Σ wjixji
j=1

oi=f(neti) = 1 -λneti
1+e
IFT615 13
Ajustement des poids, fonction signe.
Luger. Artificial Intelligence, 4th Ed., 2002

n
neti = Σ wjixji
j=1

oi=f(neti) = 1 -λneti
1+e

f ’(neti)= λ× f(neti) × (1-f(neti))

• Neurones dans la couche de sortie :


wki = - c(di-Oi)×Oi(1-Oi)xk

• Neurones cachés :
wki = - cOi(1-Oi)Σj(-deltaj×wji)xki

avec deltaj= c(di-Oi)×Oi(1-Oi)

IFT615 14
Exemple 1 : RNA pour XOR

1 2.6 1
7
-5
-7
-11
-7
-4

Fig. 10.12 Luger. Artificial Intelligence, 4th Ed., 2002


I1 I2 O
0 0 0
1 0 1
Après 1400 itérations, on obtient le vecteur des poids sur la
0 1 1
figure.
1 1 0

IFT615 15
Ajustement des poids, fonction sigmoïde.

• L’algorithme est une généralisation de celui du perceptron pour


la fonction sigmoïde, en suivant le même principe que pour le
cas de la fonction signe.

• Voir, le manuel de référence (Stuart et Russel), page 745-


747.

IFT615 16
Exemple 2

• NET TALK : Reconnaissance vocale


Fig. 10.12 Luger. Artificial Intelligence, 4th Ed., 2002

21 phonèmes + 5 accents

26 lettres + espace + 2 caractères de ponctuation


Fenêtre de 7 lettres pour tenir compte du contexte

IFT615 17
Apprentissage compétitif (winner-take-all)
[Kohonen, 1984]

• Dans une couche, il y a un seul nœud activé : le noeud gagnant.


• Le nœud gagnant est celui avec la plus petite distance Euclidienne ||X-W||.
• Les vecteur des poids W du nœud gagnant sont mis à jour comme suit :

W = c(X-W).
• L’apprentissage est non supervisée.
IFT615 18
Exemple 1
x1 x2 d
1.0 1.0 1
9.4 6.4 -1
2.5 2.1 1
8.0 7.7 -1
0.5 2.2 1
7.9 8.4 -1 Fig. 10.15 Luger. Artificial Intelligence, 4th Ed., 2002
7.0 7.0 -1
2.8 0.8 1 • Nous avons déjà vu un perceptron capable de classifier ces
1.2 3.0 1
données.
• L’apprentissage était supervisée: colonne d.
7.8 6.1 -1
• L’ architecture compétitive (winner-take-all) ci-haut fait la même
chose.
• Par contre on choisit deux prototypes d’entraînement au
départ, correspondant à chacune des classes -1 et +1.

IFT615 19
Fig. 10.17Luger.
Exemple 2
x1 x2 d
1.0 1.0 1
9.4 6.4 -1
2.5 2.1 1
8.0 7.7 -1
0.5 2.2 1
7.9 8.4 -1
7.0 7.0 -1
2.8 0.8 1
1.2 3.0 1
7.8 6.1 -1 • Winner-take-all, supervisé.
• On connecte la sortie du winner-take-all à une autre couche (la
nouvelle sortie) qu’on va superviser par les entrées « Safe » et
« Dangerous ».
• Ce type de réseau est appelé réseau contre-propagation
(counterpropagation).
IFT615 20
Exemple 2

NEAT Coevolution Robots

IFT615 21
Apprentissage Hebbienne
Luger. Artificial Intelligence, 4th Ed., 2002
[Hebb, 1949]
Conjoncture : Deux neurones directement connectés tel que l’un active
(inhibe) l’autre fréquemment, finissent par avoir leur lien renforcée.

Application à l’apprentissage non supervisée


x1i
yi
f(neti)
xni

• Étant donné Xi = [x1i, .., xni] et Wi = [w1i, .., wni] :

Wi = c*yi*X

IFT615 22
Exemple
Simulation simplifiée de l’expérience de Pavlov
1
1
-1
-1 1
1 0
-1
0
1 0
-1

• c = 0.2
• Donc W= 0.2 f(x)*X
• Après 13 itérations, on a W=[3.4, -3.4, 3.4, -2.4, 2.4, -2.4]
• A cet étape, le réseau répond positivement (+1) au stimulus de
conditionnement.

IFT615 23
Réseaux récurrents

• Les types de réseaux que nous avons jusqu’ici sont dits non récurrents:
pas de boucles.
• Les réseaux récurrents ont des boucles.
• Cela augmente les possibilités d’apprentissage : par exemple,
l’association de différents concepts.
• Exemple : RNA de Hopfield
– La sortie de chaque nœud est retro-propagée aux autres sauf lui-même.

IFT615 24
Applications
• Jeux vidéo:
– Natural Motion
• Robot apprenant à marcher (Endorphin dans ses débuts)
• Endorphin : http://www.naturalmotion.com/
• R N et algorithmes génétiques dans Endorphin :
– http://www.mega-tex.nl/3dsoftware/endorphin2.0.php

IFT615 25
Applications

• Problèmes de classification :
– Reconnaissance de visages
– Reconnaissance vocale
– Reconnaissance de caractèrs

• Beaucoup d’autres applications

IFT615 26
Références
• Le contenu de cette leçon est tiré en grande partie du Chapitre 10 du
livre:
– G. F. Lugel Artificial Intelligence : Structures and Strategies for
Complex Problem Solving. Fourth Edition. Addison-Wesley, 20
02.

• Le manuel de référence du cours se limite aux structures de réseaux


« feed-forward » (non récurrents).:
– Stuart Russel & Peter Norvig. Artificial Intelligence: A Modern
Approach. Second Edition. Prentice Hall, 2002.

IFT615 27

Vous aimerez peut-être aussi