0% ont trouvé ce document utile (0 vote)
41 vues50 pages

Apprentissage d'un Perceptron Multi-Couches

Ce document décrit l'apprentissage des réseaux de neurones multicouches. Il présente l'historique des réseaux de neurones, leur fonctionnement, et l'algorithme de rétropropagation du gradient utilisé pour leur apprentissage.

Transféré par

ines abdellaziz
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
41 vues50 pages

Apprentissage d'un Perceptron Multi-Couches

Ce document décrit l'apprentissage des réseaux de neurones multicouches. Il présente l'historique des réseaux de neurones, leur fonctionnement, et l'algorithme de rétropropagation du gradient utilisé pour leur apprentissage.

Transféré par

ines abdellaziz
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Introduction Apprentissage d’un perceptron multi-couches

Réseaux de Neurones
Stéphane Ayache, Cécile Capponi, François Denis, Hachem Kadri
[Link]@[Link]

Université Aix-Marseille

M1 Informatique
Introduction Apprentissage d’un perceptron multi-couches

Plan

Introduction
Historique et utilisation des réseaux de neurones
Les réseaux de neurones passés et actuels

Apprentissage d’un perceptron multi-couches


Principe et définition
Algorithmes de descente de gradient
Algorithme de rétro-propagation du gradient
Succès et écueils des réseaux de neurones
Introduction Apprentissage d’un perceptron multi-couches
Introduction Apprentissage d’un perceptron multi-couches

Du perceptron à l’apprentissage profond

1957 (Rosenblatt) Perceptron


1960 (Widrow, Hoff) ADALINE
1969 (Minsky, Papert) Problème XOR
1986 (Rumelhart et. al) MLP et backpropagation
1992 (Vapnik et. al) SVM
1998 (LeCun et. al) LeNet
2010 (Hinton et. al) Deep Neural Networks
2012 (Krizhevsky, Hinton et. al) AlexNet, ILSVRC’2012, GPU – 8 couches
2014 GoogleNet – 22 couches
2015 Inception (Google) – Deep Dream
2016 ResidualNet (Microsoft/Facebook) – 152 couches
Introduction Apprentissage d’un perceptron multi-couches

La rupture dans les performances (ImageNet)


Introduction Apprentissage d’un perceptron multi-couches

Performances dans autres domaines !

• Sciences de la vie
• Robotique
• Traduction automatique
• Reconnaissance de la parole
(Siri)
• Recommandation (Spotify)
• etc.
Introduction Apprentissage d’un perceptron multi-couches

Rappel Perceptron
n
• (x1 , . . . , xn ) 7−→ y = fstep (w0 +
P −
→ − →
(wi xi )) = fstep (w0 + h w , x i) avec
 i=1
1 if z ≥ 0
fstep (z) =
0 if z < 0

• Les perceptrons ne sont pas capables de résoudre des tâches


complexes :

• Associer plusieurs perceptrons : perceptron multi-couches ou réseaux


de neurones
Introduction Apprentissage d’un perceptron multi-couches

Le perceptron

Inadéquation face aux tâches complexes


• Restrictions à des calculs linéaires
• Fonction de décision discontinue : x 7→ Astep (w0 + hw, xi)
Introduction Apprentissage d’un perceptron multi-couches

Le perceptron multi-couches (PMC ou MLP)

Définition
• Au moins une couche avec fonction d’activation non-linéaire
• Les neurones de la couche i servent d’entrées aux neurones de la
couche i + 1
• Neurones d’entrées, neurones de sortie, neurones cachés
• Généralement : tous les neurones d’une couche sont connectés à tous
les neurones des couches précédentes et suivantes
• Toutes les connections i → j sont pondérées par le poids wji
Introduction Apprentissage d’un perceptron multi-couches

Réseaux de neurones : Propagation


Fonction d’activation couches internes: sigmoı̈de

Propagation vers l’avant, couche k

a(k ) = W (k) h(k −1) + b(k)


(k)
h(k ) = fsig (a(k ) )

• W (k) : matrice des poids faisant le lien entre la couche k − 1 et la


couche k
• b (k ) : vecteur des seuils de la couche k
• h(k ) : vecteur de sortie de la couche k
(k)
• f (element-wise)
Introduction Apprentissage d’un perceptron multi-couches

Réseaux de neurones : Propagation

Illustration couche cachée 1

• i-ème neurone:
n
X
(1) (1)
ai = wij xj +b(1)
j=1

• sortie du i-ème
neurone :
(1) (1)
hi = f (1) (ai )
Introduction Apprentissage d’un perceptron multi-couches

Réseaux de neurones : Propagation

Illustration couche cachée 1

• Activation

a(1) = W (1) x + b(1)

• Sortie

h(1) (x) = f (1) (a(1) )


Introduction Apprentissage d’un perceptron multi-couches

Réseaux de neurones : Propagation

Illustration couche cachée 2

• Activation

a(2) = W (2) h(1) (x)+b(2)

• Sortie :

h(2) (x) = f (2) (a(2) )


Introduction Apprentissage d’un perceptron multi-couches

Réseaux de neurones : Propagation

Illustration couche de sortie

• Activation :

a(3) = W (3) h(2) (x)+b(3)

• Sortie :

f (x) = f (3) (a(3) )


Introduction Apprentissage d’un perceptron multi-couches

Propriété importante si une seule couche cachée

Toute fonction booléenne peut être calculée par un PMC


linéaire à seuil comprenant une seule couche cachée.

Pourquoi ?
• Chaque neurone est un perceptron à seuil
• n variables binaires
• OU/ET binaires se calculent par un perceptron à seuil
• Fonction booléenne peut être mise sous forme normale disjonctive
• Couches cachée = conjonctions, couche de sortie = disjonction !
Introduction Apprentissage d’un perceptron multi-couches

Exemple : le PMC du XOR à une seule couche cachée

On a :
a ⊕ b = (a ∨ b) ∧ ¬(a ∧ b) = ab̂ ∨ âb
Dans les deux exemples de PMC pour le XOR :

• vérifier la sortie pour les points (0,0) à (1,1)


• donner le PMC équivalent avec les biais plutôt que les seuils
Introduction Apprentissage d’un perceptron multi-couches

Les réseaux de neurones profonds


DEEP LEARNING
Beaucoup de couches, complexité d’apprentissage
• Autres fonctions d’activation, possibilité de couches avec fonction
d’aggrégation (moyenne, etc.), ou fonction classique d’activation
• Architectures particulières (convolution, auto-encodeurs, GAN, etc.)
• Cycles possibles
• Des architectures en pagaille
• Nécessité de GPU
Introduction Apprentissage d’un perceptron multi-couches

Objectifs de ce cours

• Notion de réseaux de neurones : qu’est-ce que c’est ?


• Quel(s) apprentissage(s) avec des RN ?
• Optimisation non-linéaire, sensibilisation à la descente de gradient (en
l’absence de solution analytique)
• Premiers insights sur retro-propagation du gradient, la base du deep
learning
• Importance actuelle des réseaux de neurones
Introduction Apprentissage d’un perceptron multi-couches

Plan

Introduction
Historique et utilisation des réseaux de neurones
Les réseaux de neurones passés et actuels

Apprentissage d’un perceptron multi-couches


Principe et définition
Algorithmes de descente de gradient
Algorithme de rétro-propagation du gradient
Succès et écueils des réseaux de neurones
Introduction Apprentissage d’un perceptron multi-couches

Une couche = un ensemble de perceptrons

Communication de couche à couche suivante


Introduction Apprentissage d’un perceptron multi-couches

Apprendre avec risque le plus faible


Cas d’un PMC à une couche cachée n entrées, p sorties
• Soit un exemple (x, y ) ∈ S, x = (x1 , · · · xn ), y = (y1 , · · · , yp ), la fonction
de décision à la sortie k est :

hk (x) = Ao (Wo A(hw, xi))


• avec A non linéaire, non polynomiale, continue, dérivable, approximant
la fonction de Heaviside :
• A(x) = xtanh(x)
• A(x) = 1
−x fonction logistique (sigmoı̈de)
1+e
• et Ao continue dérivable, softmax en classification multi-classes

Quel que soit le nombre de couches


Erreur et risque : dépend de tous les w
• Apprentissage avec risque minimal = minimiser `(hk (x), yk )
• Fixons la fonction de risque `(hk (x), y ) = (hk (x) − yk )2 , continue
dérivable si hk (x), y ∈ R (régression).
Introduction Apprentissage d’un perceptron multi-couches

Comment minimiser le risque


Expression de la fonction à minimiser
L’erreur (si fonction de perte = mean-square, hk sortie du neurone k ) :
p
1 X X
E(w) = (hk − yk )2
2
(x,y )∈S k =1
P
avec hk = A0 (wk 0 + j∈Pred(k)
(wkj aj ))
• Contribution de tous les neurones et de toutes les synapses
• Prise en compte de tous les exemples de l’échantillon

Activation dans un sens, propagation de l’erreur dans l’autre


Introduction Apprentissage d’un perceptron multi-couches

Un problème d’optimisation
Optimisation non-linéaire
Fonctions continues, dérivables
Similarité avec le perceptron
• Minimisation de l’erreur sur chaque présentation individuelle des
exemples (règle de Widrow-Hoff)
• On doit minimiser :
p
1X
E = E(x,y ) (w) = (hk − yk )2
2
k =1

Pn
• Plus généralement arg minθ L(fθ , S) = arg minθ 1
n i=1 `(fθ (x i ), y i ),

Minimiser une fonction : recherche


descendante du point de dérivée nulle
de la fonction
Introduction Apprentissage d’un perceptron multi-couches

L’erreur dépend des poids


Trouver les w qui mènent à la plus petite erreur, si possible
Introduction Apprentissage d’un perceptron multi-couches

Rappels : fonctions, dérivées, tangentes, etc.

Simplifions les définitions


Soit x ∈ I ⊆ R, et la fonction f (x) ∈ R
• f continue, dérivable sur I
• f 0 est une fonction indiquant l’orientation de f sur I (croissance,
décroissance, stagnation)
• f 0 (x) indique la pente de f au point x, définit l’équation de la tangente à f
en x
Introduction Apprentissage d’un perceptron multi-couches

Rappels : fonctions, dérivées, tangentes, etc.


Simplifions les définitions
Soit x ∈ I ⊆ R, et la fonction f (x) ∈ R
• f continue, dérivable sur I
• f 0 est une fonction indiquant l’orientation de f sur I (croissance,
décroissance, stagnation)
• f 0 (x) indique la pente de f au point x, définit l’équation de la tangente à f
en x
Introduction Apprentissage d’un perceptron multi-couches

Rappels : fonctions, dérivées, tangentes, etc.


Simplifions les définitions
Soit x ∈ I ⊆ R, et la fonction f (x) ∈ R
• f continue, dérivable sur I
• f 0 est une fonction indiquant l’orientation de f sur I (croissance,
décroissance, stagnation)
• f 0 (x) indique la pente de f au point x, définit l’équation de la tangente à f
en x

Exemple

Cas observés :
• f 0 (x) < 0
• f 0 (x) = 0
• f 0 (x) > 0
Introduction Apprentissage d’un perceptron multi-couches

Fonctions de plusieurs variables, dérivées partielles


Cas de la fonction y = f (x1 , x2 ), f : I 2 7→ R
• Etude de l’orientation de f lorsqu’une seule composante d’un point varie
∂f (x1 ,x2 )
• ∂x1
: une fonction f 0 (x1 , x2 ) qui indique comment varie f lorsque
seule x1 varie un peu (autres variables considérées comme constantes)
• Exemple :

f (x1 , x2 ) = 3x12 x25 − 2x1 x23 + 2x14 x22 − 4x1 − 2x2 + 5

∂f (x1 , x2 )
= 6x1 x25 − 2x23 + 8x13 x22 − 4
∂x1
∂f (x1 ,x2 )
• Les valeur et signe de indiquent l’orientation de la courbe de f
∂x1
sur l’axe x2 lorsque seule x1 varie (un peu)

Généralisation à y = f (X ), X ∈ I d : gradient
Tout est fixé sauf xi : où et à quelle vitesse se dirige f ?
∂f (x1 , · · · , xd )
∂xi
Introduction Apprentissage d’un perceptron multi-couches

Exercice

• Utiliser le gradient pour évaluer la direction asscendante la plus rapide


de la fonction f (x1 , x2 ) = x1 x22 au point P = (x1 = 2, x2 = 2).
• Indice : calculer dérivées partielles selon x1 puis x2 au point P = (2, 2)
• Solution :
∂f ∂f

∂x1
= x22 et ∂x2
= 2x1 x2
• Sur x1 : 4, Sur x2 : 8
• Direction de l’orientation en ce
point θ = tan−1 ( 48 ) = 63.4
• Magnitude de l’orientation en ce
point
q ∆f (P) =
∂f 2 ∂f 2
( ∂x ) + ( ∂x ) = 8.944 en P
1 2
Introduction Apprentissage d’un perceptron multi-couches

Descente de gradient : intuitivement


Introduction Apprentissage d’un perceptron multi-couches

Descente de gradient : intuitivement – cont’d


Introduction Apprentissage d’un perceptron multi-couches

Un algorithme itératif

Cas en une dimension


Soit f : R → R la fonction à minimiser :
• Fixer un point de départ x0
• Construire itérativement une suite de valeurs xi :

xi+1 = xi − αf 0 (xi )

• de façon équivalent, on écrit

∆x = xi+1 − xi = −αf 0 (x)

• α est le pas d’apprentissage


• Arrêt lorsque ∆x ≤ , ou lorsque i > M (valeurs seuils)
Introduction Apprentissage d’un perceptron multi-couches

Quelques écueils

• Convergence assurée ?
• Rapidité de convergence
• Convexité de la fonction, minima
locaux
Introduction Apprentissage d’un perceptron multi-couches

Le rôle du pas d’apprentissage

Petit, grand, adaptatif ?


Introduction Apprentissage d’un perceptron multi-couches

Le rôle du point initial

Convergence vers l’idéal : minima locaux


Introduction Apprentissage d’un perceptron multi-couches

Un algorithme itératif

En plusieurs dimensions
Dérivées partielles, soit E : Rd → R la fonction à minimiser
• Formule de mise à jour :

~
∆X = −α∇E(X )
~ est la fonction gradient de E, et ∇E(X
• ∇E ~ ) est un vecteur de d
coordonnées !
• Mise à jour de la coordonnées xj de X :

∂E
∆xj = −α (X )
∂xj
• Critères d’arrêt
Introduction Apprentissage d’un perceptron multi-couches

Descente de gradient : l’algorithme

Problème général
Trouver les valeurs du vecteur θ qui minimise le coût d’une fonction fθ
arg minθ L(fθ , S) = arg minθ n1 ni=1 `(fθ (x i ), y i ),
P

Algorithme générique
θ0 ← initialisé aléatoirement
Répéter
∂L(fθ , S)
θt+1 ← θt − α
∂θ
∂L(fθ , S)
Tant que >  (n’est pas proche de 0)
∂θ
Difficultés
• Trouver le bon α ?
• Calcul de ∂L coûteux quand S est grand
Introduction Apprentissage d’un perceptron multi-couches

Exercice

Soit
E(x1 , x2 ) = (x1 − 1)(x1 − 2) + (x2 + 3)(x2 + 4)

∂E
• Calculer ∂x1
(x1 , x2 )
∂E
• Calculer ∂x2
(x1 , x2 )
• Appliquer l’algorithme de descente du gradient avec x0 = (2, −4) et
α = 0.1
• Tous les calculs sont-ils nécessaires ?
• Quid d’une solution analytique ?
• Y at’il des minima locaux ?
Introduction Apprentissage d’un perceptron multi-couches

Perceptron Multi-couches et backpropagation


Utilisation de la descente de gradient
Possible car fonctions dérivables (fonctions d’activations et fonction de coût)

Comment calculer ∂L/∂wi lors de la mise à jour wi ← wi − α∂L(fw )/∂wi ?

Exemple après exemple :


1. Calculer l’activation
2. Calculer le gradient en sortie
3. (retro-)Propager le gradient vers les entrées en déroulant une chaı̂ne de
propagation de la sortie vers la première couche

Observation
Introduction Apprentissage d’un perceptron multi-couches

Algorithme dans le cas d’une seule couche cachée

1. Initialisation de tous les poids du réseau (petites valeurs)


2. Pour chaque exemple (x, y ) de S faire :
2.1 prediction = fk (x) = activation-du-MLP(x) P
2.2 calculer l’erreur ek = `(fk − yk ) pour chaque sortie, et E = k ek
2.3 calculer ∆wjk pour tous les poids entre la couche cachée et la couche de
sortie
2.4 calculer ∆wij pour tous les poids entre la couche d’entrée et la couche
cachée
2.5 Mettre à jour tous les poids
Jusqu’à satisfaction d’un critère d’arrêt
3. Retourner le réseau
Introduction Apprentissage d’un perceptron multi-couches

Principe de la back propagation

arg min L(f (W ), S)


W
1 X X
L(f , S) = ||f (x) − y ||2 = e(x)
2
(x,y )∈S (x,y )∈S

∂L X ∂e(x)
=
∂Wkl ∂Wkl
S
Introduction Apprentissage d’un perceptron multi-couches

Réseaux de neurones : Rétropropagation


Introduction Apprentissage d’un perceptron multi-couches

Réseaux de neurones : Récapitulatif


Les étapes principales
Simplification de notations, mais dépendances
e, a, f = e(W ), a(W ), f (W ), e(a), a(f ), e(f )
1. Calcul du gradient en sortie (dépend de y )
2. Calcul du gradient entre chaque couple de neurones j → i (∂e/∂wji )
3. Calcul du gradient à la sortie d’un neurone i (∂e/∂ai ) (back propagation)
4. Calcul du gradient à la sortie d’un neurone i vers j (∂e/∂fi )

La chain rule
∂e ∂e ∂ai
• Erreur en entrée du neurone i via j = e(ai (wji )) donc : ∂wji
= ∂ai ∂wji
∂e ∂e ∂fi
• Erreur en sortie du neurone i = e(fi (ai )) donc : ∂ai
= ∂fi ∂ai
• Erreur en sortie du neurone i vers le neurone j = e(aj (fi )) donc :

∂e ∂e ∂aj
=
∂fi ∂aj ∂fi
Introduction Apprentissage d’un perceptron multi-couches

Réseaux de neurones : Illustration

• Calcul du gradient pour tout le réseau

• Gradient sur les pondérations - couche 3


(de sortie):
∂`(f (x), y) ∂`(f (x), y) ∂a(3)
(3)
=
∂W ∂a(3) ∂W (3)

∂`(f (x), y)
• dépend de la fonction coût `
∂a(3)

∂a(3)
• = (h(2) (x))>
∂W (3)

• Gradient sur la couche précédente

∂`(f (x), y) ∂`(f (x), y) ∂a(3)


(2)
=
∂h ∂a(3) ∂h(2)
∂`(f (x), y) > Rappel - Propagation:
= W (3)
∂a(3) a(3) = W (3) h(2) (x) + b(3)
Introduction Apprentissage d’un perceptron multi-couches

Réseaux de neurones : Illustration


• Calcul du gradient pour tout le réseau

• Gradient sur les pondérations - couche 2 :

∂`(f (x), y) ∂`(f (x), y) ∂h(2) ∂a(2)


=
∂W (2) ∂h(2) ∂a(2) ∂W (2)

∂h(3)
• dépend de la fonction d’activation
∂a(2)

• fonction sigmoide σ(·)

∂h(3) (2) (2)


= σ(ai )(1 − ai )
∂a(2)

• même procédure comme précédemment

• rétropropager sur la couche 1 Rappel - Propagation:


a(2) = W (2) h(1) (x) + b(1)
Introduction Apprentissage d’un perceptron multi-couches

Réseaux de neurones : Algorithme d’apprentissage

• Perceptron multicouche - Algorithme générique

1. initialiser le vecteur de paramètres w


2. initialiser les paramètres - méthode de minimisation
3. Répéter
4. Pour tout (x, y) ∈ D faire
5. appliquer x au réseau et calculer la sortie correspondante
∂`(f (x), y)
6. calculer pour toutes les pondérations
∂Wij
7. Fin pour
∂L(f , D)
8. calculer en sommant sur toutes les données d’entrée
∂Wij
9. appliquer une mise à jour du vecteur de pondération - méthode de
minimization
10. Tant que l’erreur n’a pas convergé
Introduction Apprentissage d’un perceptron multi-couches

Rapport nombre de w / nombre de données

Profondeur du réseau
= nombre de couches × nombres de noeuds par couche
• taille moyenne = µp , si µ est le nombre moyen de neurones par couches
• autant de paramètres à apprendre
• nécessite beaucoup de données pour que le problème ne soit pas
sous-défini

120 paramètres et seulement 15 exemples ?

Risque de sur-apprentissage
Problème sur-défini
• Régularisation (sparsité dans la fonction de minimisation)
• Drop-out

Interprétabilité
Introduction Apprentissage d’un perceptron multi-couches

Variantes

• Drop-out
• Architectures pré-apprises (apprentissage de représentations)
• La RELU (convnet)
• Face au bruit (dans données) : ajouter des couches
• Autres descentes de gradient (conjugué, momentum – pas adaptatif -,
stochastique, etc.)
• Quelle architecture, quels hyper-paramètres (activation, nb de couches,
nb de neurones/couche, linéarité/aggrégation des activations, etc.),
rapport N ∗ d (bonne définition du problème), etc.
Introduction Apprentissage d’un perceptron multi-couches

Exercices (1)

Fonction booléenne
Soit la fonction booléenne f (x, y , z) = x ȳ + xyz + x̄ ȳ z̄. Déterminer un
perceptron linéaire à seuil pour chacun des trois monômes de f , puis
déterminer un PMC calculant f .

Algorithme de retropropagation
En utilisant la fonction sigmoı̈de, on souhaite pénaliser les poids élevés. On
modifie donc la fonction erreur en introduisant un terme de pénalisation :
p
1 X X X 2
E(w) = (yk − fk )2 + γ wij
2
(x,y )∈S k=1 i,j

Modifier l’algorithme de rétropropagation du gradient en conséquence.


Introduction Apprentissage d’un perceptron multi-couches

Exercices (2)

Fonction parité
On veut calculer avec un PMC la fonction parité pour n variables booléenne :
il s’agit de renvoyer 1 si le nombre d’entrée à 1 est pair, 0 sinon.
Indice : faire en sorte que le i-ème neurone de la couche cachée retourne 1
si au moins i cellules de la rétine sont à 1.

Vous aimerez peut-être aussi