1
Science des Données
Chapitre Cinquième : Réseau de Neurones
Stéphane Ayache, Cécile Capponi, François Denis, Rémi Eyraud,
Hachem Kadri, Thierry Artières
Master TSI Aix-Marseille Université
2
Plan du cours
Introduction
Arbres de décision & Random Forest
Régression linéaire
Perceptron & Machines à vecteur de support
Réseau de Neurones / Deep Learning
3
Plan du chapitre
●
Rappel perceptron
●
Perceptron multi-couches
●
Fonctions d'activation (neurone)
●
Forward : exemple XOR
●
Rappel sur les dérivées
●
Back-propagation du gradient
●
Architectures :
– Convolutionnel RN
– pooling
– GAN
4
Perceptron :
représentation graphique
+1
x1
x2 w1
w2
… <w,x> + b
. wn φ Out
. b
.
.
.
xd
5
Perceptron :
représentation graphique
+1
x1 b
w1
x2 w2 d
.
∑ wi xi φ Out
. i=0
.
. wd
.
xd
6
Perceptron :
représentation graphique
+1
x1 b
w1
x2 w2
<.,.> φ Out
.
.
.
. wd
.
xd
7
Perceptron :
représentation graphique
+1
x1 b
w1
x2 w2
.
φ Out
.
.
. wd
.
xd
8
Perceptron : limitation
●
XOR non linéairement séparable :
9
Perceptron multi-couches
●
Pour contourner les limitations :
– Plusieurs perceptrons en parallèle (= 1 couche)
– Plusieurs perceptrons en série : les sorties des
perceptrons d'une couche sont les entrées des
perceptrons de la couche suivante
– Un perceptron en sortie (si classification binaire)
●
Plus grande expressivité
10
Perceptron multi-couches :
exemple
Couche d'entrée :
vecteur de données
(ici en 2D donc)
x1
x2
11
Perceptron multi-couches :
exemple
Couche cachée :
1 seule avec 2 perceptrons
+1
b1
x1 w11
Perceptron Out1
w12 1
w21
x2 w22
Perceptron Out2
2
b2
+1
12
Perceptron multi-couches :
exemple
Couche de sortie :
1 perceptron
+1
+1
b1
b3
x1 w11
Perceptron w31
w12 1
Perceptron Out global
w21 3
w22 w32
x2 Perceptron
2
b2
+1
13
Perceptron multi-couches :
exemple
●
Prenons ces valeurs pour les poids :
+1
+1
-1,5
-0,5
x1 1
Perceptron -2
1 1
Perceptron Out global
1 3
1 1
x2 Perceptron
2
-0,5
+1
14
Perceptron multi-couches :
exemple
●
Pour x=(0,0), on a out1=φ(0*1+0*1-1,5)=φ(-1,5)=0
out2=φ(0*1+0*1-0,5)=0 et donc out=φ(0*-2+0*1-0,5)=0
+1
+1
-1,5
-0,5
x1 1
Perceptron -2
1 1
Perceptron Out global
1 3
1 1
x2 Perceptron
2
-0,5
+1
15
Perceptron multi-couches :
exemple
●
Pour x=(1,0), on a out1=φ(1*1+0*1-1,5)=φ(-0,5)=0
out2=φ(1*1+0*1-0,5)=1 et donc out=φ(0*-2+1*1-0,5)=1
+1
+1
-1,5
-0,5
x1 1
Perceptron -2
1 1
Perceptron Out global
1 3
1 1
x2 Perceptron
2
-0,5
+1
16
Perceptron multi-couches :
exemple
●
Pour x=(0,1), on a out1=φ(0*1+1*1-1,5)=φ(-0,5)=0
out2=φ(0*1+1*1-0,5)=1 et donc out=φ(0*-2+1*1-0,5)=1
+1
+1
-1,5
-0,5
x1 1
Perceptron -2
1 1
Perceptron Out global
1 3
1 1
x2 Perceptron
2
-0,5
+1
17
Perceptron multi-couches :
exemple
●
Pour x=(1,1), on a out1=φ(1*1+1*1-1,5)=φ(0,5)=1
out2=φ(1*1+1*1-0,5)=1 et donc out=φ(1*-2+1*1-0,5)=0
+1
+1
-1,5
-0,5
x1 1
Perceptron -2
1 1
Perceptron Out global
1 3
1 1
x2 Perceptron
2
-0,5
+1
18
Perceptron multi-couches :
exemple
●
Ce perceptron mulit-couche calcule le XOR !
+1
+1
-1,5
-0,5
x1 1
Perceptron -2
1 1
Perceptron Out global
1 3
1 1
x2 Perceptron
2
-0,5
+1
19
Perceptron multi-couches :
représentation algébrique
●
Chaque couche peut être représentée par une
matrice : chaque colonne contient un perceptron.
b1 b2
Exemple : la couche cachée est
+1
( )
w 11 w 21
w 12 w 22
b1 +1
w11 b3
x1 P1
w12 w31
P3 Out global
w21
w22 w32
x2 P2
b2
+1
20
Perceptron multi-couches :
représentation algébrique
●
Le calcul de la sortie de la couche cachée à partir
de la couche d'entrée :
T
b1 b 2
([ ) ( )] [(
1 1
f caché ( x)=φ w 11 w 21
w 12 w 22
x 1 =φ
x2
b 1 w 11 w 12
b2 w 21 w 22 )(
x1
x2 )]
b1⋅1+w 11⋅x 1 +w 12⋅x 2
=φ
[ b2⋅1+w 21⋅x 1 +w 22⋅x 2 ]
φ(b1⋅1+w 11⋅x 1 +w 12⋅x 2 ) out 1
=
(
φ(b2⋅1+w 21⋅x 1 +w 22⋅x 2 )
=
out 2 )( )
21
Perceptron multi-couches :
représentation algébrique
●
Le calcul de sortie du perceptron multi-couche :
+1
T +1
[ ( ) ( )]
b3 1 b1
x1 w11 b3
f global (x )=φ w 31 out 1 P1 w31
w12 P3 Out global
w 32 out 2 w21
x2 P2 w32
w22
b2
T +1
b3
[( ) (
=φ w 31
w 32
1
φ(b1 +w 11⋅x 1 +w 12⋅x 2 )
φ(b 2 +w 21⋅x 1 +w 22⋅x 2) )]
=φ(b3 +w 31⋅φ(b1 +w 11⋅x 1 +w 12⋅x 2 )+w 32⋅φ(b 2 +w 21⋅x 1 +w 22⋅x 2 ))
22
Perceptron multi-couches :
propriétés
●
Très grand expressivité :
– Nombre fini de perceptrons par couche mais non borné
– Nombre de couches fini mais non borné
– Multi-classe : plusieurs perceptrons en sortie (1 par classe)
●
Calcul efficace de la classe d'une donnée
●
La vie est belle ?
Les perceptrons multi-couches ne sont PAS apprenables !
Impossible de mettre à jour les poids des couches
cachées, même en connaissant l'erreur en sortie...
23
Neurone
●
Ce qu'il faut : déterminer si un poids d'une couche
cachée doit être diminué ou augmenté en cas
d'erreur
●
Idée : utiliser la dérivée de l’erreur
●
Problème : la fonction d'un perceptron n'est pas
dérivable (le produit scalaire l'est, pas φ=signe)
●
Solution : remplacer φ par une fonction
''équivalente'' mais dérivable.
Un neurone est un perceptron avec une fonction
d'activation (=φ) dérivable.
24
Neurone : fonction d'activation
●
Besoin : une fonction valant environ 0 ou 1
presque tout le temps, avec une transition
rapide mais continue.
1
●
Exemple : sigmoïde φ(x)= −x
1+e
25
Réseau de neurones et risque
empirique
Classification binaire, données de dimension d,
1 couche cachée
T
●
La sortie est : f ( x)=φ(w final φ ( W ⋅x ) )
cachée
– Avec Wcachée la matrice des vecteurs de la couche cachée
– wfinal le vecteur de la couche de sortie
– φ une fonction non-linéaire, non polynomial, continue,
dérivable, approximant la fonction de Heaviside (=
sigmoïde)
●
On veut le risque minimal : minimiserl(f ( x), y)
où l est la fonction de risque
26
Réseau de neurones et risque
empirique
●
Classification : la fonction de coût est
l(f (x), y)= 1 si f (x)≠ y
{0 sinon
●
Or cette fonction n'est pas dérivable…
●
On prend une fonction approximante, venant
par exemple de la régression (moindre carré)
2
l(f ( x), y)=(f ( x)− y)
qui est continue et dérivable si f(x) et y sont des
réels
27
Réseau de neurones et risque
empirique
●
Expression de la fonction à minimiser :
1 2
Erreur(W )=E (W )= ∑ (f ( x)− y)
2 ( x , y)∈S
●
Minimiser l'erreur c'est minimiser chaque terme de la
somme: on peut regarder une à une les données
● Si on note outk la sortie du neurone k, et Pred(final) les
neurones reliés au neurone final, on a :
f ( x )=φ b final + ∑ w final , j⋅out j
( j ∈Pred (final) )
●
Tous les neurones et toutes les connections sont utiles
au calcul
28
Un problème d'optimisation
●
Optimisation non-linéaire : fonction continues,
dérivables
●
On-line : minimisation de l'erreur sur chaque
données d'apprentissage (idem perceptron)
●
Minimiser = recherche descendante du point de
dérivée nulle de la fonction
29
L'erreur dépend des poids
Trouver les w qui mènent à la plus petite erreur
Si un seul w :
30
Fonctions de plusieurs variables
Dérivées partielles
Cas y = f(w1, w2), i.e. f : ℝ2→ℝ
●
Etude de l'orientation lorsqu'une seule composante varie
∂ f (w 1, w 2 )
● : une fonction f'(w1, w2) qui indique comment f varie lorsque
∂ w1
seule w1 varie un peu
●
Exemple : f (w 1, w 2 )=3 w 21 w 52 −2 w 1 w 32 +2 w 14 w 22−4 w 1 −2 w 2
∂ f (w 1, w 2 )
=3 w 1 w 52 −2 w 32−8 w 31 w 22−4
∂ w1
∂ f (w 1, w 2 )
●
Les valeurs et signe de indiquent l'orientation de la courbe f
∂ w1
sur l'axe w2 lorsque w1 varie (un peu)
Généralisation à y = f(w) avec w ∈ ℝ ℝd : gradient
Tout est fixé sauf wi : où et à quelle vitesse se dirige f sur les autres axes ?
∂ f (w 1, w 2, ... , w d )
∂ wi
31
Descente de Gradient : intuitivement
w*
32
Descente de gradient
un algorithme itératif
Cas à une dimension
Soit f : ℝ→ℝ la fonction à minimiser :
● Fixer un point de départ w0
●
Construire itérativement :
wi+1 = wi – α f'(wi)
On écrit aussi Δww = wi+1 - wi = – α f'(wi)
α (des fois noté η) s'appelle le pas d'apprentissage
●
Arrêt : lorsque Δww ≤ ε ou lorsque i > Max_iter
Descente de gradient : 33
Quelques problèmes
●
Fonctions non-convexes : minima locaux
●
Même convexe, la convergence n'est pas assurée :
Descente de gradient : 34
Rôle du pas d'apprentissage
Petit ? Grand ? Adaptatif ?
35
Descente de gradient :
rôle du point initial
Minima locaux
36
Descente de gradient
un algorithme itératif
Cas à plusieurs dimensions
Soit f : ℝd→ℝ la fonction à minimiser :
● Fixer un vecteur de départ W0
●
Formule de mise à jour :
⃗ E (W )
Δ W =−α ∇
où ∇
⃗ E est la fonction gradient, donc ∇
⃗ E(W ) est un
vecteur
Concrètement : mise à jour de la coordonnée wj de W :
∂E
Δ w j =−α (W )
●
Critères d'arrêt ∂wj
37
Réseau de neurones
back-propagation
Utilisation de la descente de gradient :
Possible car fonctions (activation et coût) dérivables
∂E
Q : Comment calculer lors de la mise à jour, c'est-à-dire pour
∂ wi
∂E
faire w i+1=w i−α
(f w ) ?
∂ wi
R : en regardant donnée après donnée !
1) Calculer l'activation de chaque neurone (i.e. faire le forward
de la donnée)
2) Calculer le gradient en sortie
3) (retro-) propager le gradient vers les entrées en déroulant une
chaine de propagation de la sortie vers la première couche
38
Back-propagation
chaine de propagation
Back-propagation : 39
Algorithme pour 1 seule couche cachée
1. Initialisation de tous les poids (petites valeurs)
2. Pour chaque donnée (x,y) :
[Link] : fk(x) pour chaque neurone k de la couche de sortie (=activation)
[Link] l'erreur ek = l(fk – yk) pour chaque sortie
3.E = Σk ek
[Link] Δwwjk pour tous les poids entre la couche cachée et la couche de
sortie
[Link] Δwwij pour tous les poids entre la couche cachée et la couche de
sortie
[Link] à jour tous les poids
3. Recommencer jusqu'à satisfaction du critère d'arrêt
40
Back-propagation +1
b1 +1
w11 b3
Exemple x1
w12
w21
P1 w31
P3 Out
x2 P2 w32
w22
b2
+1
●
Supposons qu'on a une donnée ((1,2),1) sur laquelle
notre RN retrourne 0.9. L'erreur E est donc de 0.1.
● Commençons par rectifier w31
∂E
● L'impact de w31 sur l'erreur est donné par ∂ w
31
∂E ∂ E ∂ out
●
Par la régle chaînée : ∂ w 31 = ∂ out ⋅∂ w 31
∂ E ∂ out ∂ ⟨. ,.⟩ P3
= ⋅ ⋅
∂ out ∂ ⟨. ,.⟩ P 3 ∂ w 31
41
∂E ∂ E ∂ out
Back-propagation = ⋅
∂ w 31 ∂ out ∂ w 31
Exemple ∂ E ∂ out ∂ ⟨. ,.⟩ P3
= ⋅ ⋅
∂ out ∂ ⟨. ,.⟩ P 3 ∂ w 31
●
On va calculer chaque terme :
1 1
E= (cible−out ) = (cible2−2 cible⋅out +out 2 )
2
2 2
Donc ∂E 1
= (−2 cible+2 out )=out−cible=0.9−1=−0.1
∂ out 2
1
D'autre part : out =φ(⟨. ,.⟩ P3 )=
1+exp(−⟨. ,.⟩ P 3 )
Donc ∂ out
=out (1−out )=0.9(1−0.9)=0.09
∂ ⟨. ,.⟩ P 3
+1 42
Back-propagation b1 +1
x1 w11 b3
P1 w31
Exemple x2
w12
w21
P2 w32
P3 Out
w22
b2
+1
Enfin, ⟨. , .⟩ P 3=w 31⋅out p 1 +w 32⋅out p 2 +b3
∂ ⟨. ,.⟩ P 3
Donc =out P 1=0.8
∂ w 31
●
Si on remet tout ensemble :
∂E ∂ E ∂ out
= ⋅
∂ w 31 ∂ out ∂ w 31
∂ E ∂ out ∂ ⟨. ,.⟩ P3
= ⋅ ⋅
∂ out ∂ ⟨. ,.⟩ P 3 ∂ w 31
=−0.1⋅0.09⋅0.8=−0.0072
+1 43
Back-propagation b1 +1
x1 w11 b3
P1 w31
Exemple x2
w12
w21
P2 w32
P3 Out
w22
b2
+1
Solution analytique :
∂E ∂ E ∂ out
= ⋅
∂ w 31 ∂ out ∂ w 31
∂ E ∂ out ∂ ⟨. ,.⟩ P3
= ⋅ ⋅
∂ out ∂ ⟨. ,.⟩ P 3 ∂ w 31
=(out −cible)⋅out (1−out )⋅out P1
=δ out⋅out P1
●
Similairement :
∂E
=δ out⋅out P 2
∂ w 32
+1 44
Back-propagation b1 +1
x1 w11 b3
P1 w31
Exemple x2
w12
w21
P2 w32
P3 Out
w22
b2
+1
Les nouveaux poids sont donc :
∂E
w 31=w 31−α =w 31−α⋅δ out⋅out P 1
∂ w 32
∂E
w 32=w 32−α =w 32−α⋅δ out⋅out P 2
∂ w 32
●
On appliquant la même approche, on peut calculer les
nouveaux b3, w11, w12, b1, w21, w22, b2. Par
exemple :
∂E ∂ E ∂ out 1 ∂ ⟨. , .⟩ P 1 ∂ E ∂⋅⟨. , .⟩ P 3 ∂ out 1 ∂ ⟨. ,.⟩ P 1
= ⋅ ⋅ = ⋅ ⋅
∂ w 11 ∂ out 1 ∂ ⟨. ,.⟩ P 1 ∂ w 11 ∂ ⟨. ,.⟩ P 3 out 1 ∂ ⟨. ,.⟩ P 1 ∂ w 11
45
Apprentissage de réseaux de
neurones
●
Principe : back-propagation du gradient
●
Variantes : une infinité ou presque
– Nombre de couches
– Nombre de neurones par couche
– Connexion entre couches (fully connected, pooling,
convolution, ...)
– Fonction d'activation (sigmoïde, ReLU, aggrégation,
…)
– Mise à jour des poids (avec/sans effet mémoire, …)
– Variante de la descente (stochastique, momentum, ...)
– Bidouille (dropout, ...)
46
D’autres détails
●
Epoch = nombre d’itérations
●
Descente de gradient
– Complète
– Stochastic gradient descent
– Batch
●
Optimiseur (Adam, …)
●
Pas d’apprentissage adaptatif
●
One hot encoding (multi-classe)
●
Loss :
– cross_entropy (comparaison plrs proba distrib)
– Etc.
47
Réseau de neurones et imagerie
●
Historiquement une des premières applications
●
Explosion récente car :
– Puissance des GPU (réseau de + en + profond)
– Architecture(s) dédiée(s)
– GAFAM très investis
●
Pas uniquement classification :
– Segmentation
– Sémantique
– Génération
– …
●
Incontournable désormais
48
Réseau de neurones et imagerie
Historique récent
49
Réseau de neurones et imagerie
Historique
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
50
Réseau de neurones et imagerie
Réseau de convolution
●
Idée : différencier les entrées de la première
couche cachée, puis synthétiser leurs outputs
51
Réseau de neurones et imagerie
Réseau de convolution
1 Couche de convolution = 1 filtre
52
Réseau de neurones et imagerie
Réseau de convolution
Traitement à partir de l'image brute
1) Couche de convolution : fenêtre sur l'image
2) Couche de pooling pour maxer/moyenner les sorties
d'un ensemble de neurones (fenêtre)
52
3) Couche de normalisation (ReLU : Rectified Linear Unit)
4) Recommencer en 1
●
Couche(s) de sortie entièrement connecté (fully
connected) pour centralisation
53
Réseau de neurones et imagerie
Réseau de convolution
54
Réseau de neurones et imagerie
Réseau de convolution : exemple
GoogleNet (2015) :
55
Réseau de neurones et imagerie
Réseau de convolution
Interprétabilité :
– 'cluster' de neurones de
convolution = filtres
– Filtre de bas niveau
proche de la couche
d'entrée
– de haut niveau proche de
la couche de sortie
56
Réseau de neurones et imagerie
Réseau de convolution
57
Réseau de neurones et imagerie
Réseau de convolution
AlexNet (2012)
Réseau de neurones et imagerie
58
Réseau de convolution
●
Couches de convolution 'spacialisées' : les neurones
activés permettent de savoir les partie de l'image
responsable de la classification
Réseau de neurones et imagerie
59
Réseau de convolution
●
Couches de convolution 'spacialisées' : grain très fin
Source : Ren et al., NIPS, 2016
60
Réseau de neurones et imagerie
auto-encodeur
●
Descente de gradient : différence entre l'image
d'entrée et celle de sortie
●
Couche du milieu : représentation légère et
pertinente des images (mieux que ACP!)
61
Réseau de neurones et imagerie
Generative Adversarial Networks
●
Apprendre un RN génératif qui essaie de
tromper un autre RN
●
Goodfellow et al.,
2014
Réseau de neurones et imagerie
62
Generative Adversarial Networks
StarGAN, Choi et al., 24 novembre 2017,
[Link]
Réseau de neurones et imagerie
63
Generative Adversarial Networks
StarGAN, Choi et al., 24 novembre 2017,
[Link]
64
Conclusion
●
Ce chapitre : juste un aperçu
●
D'autres architecture (ex : récurent pour données
temporalisées comme vidéos)
●
Big data → résultats pratiques bluffants
●
Réutilisation facile de réseaux appris par ailleurs
●
Impacte tous les domaines (médecine,
(astro)physique, loi, économie, informatique, …)
●
Peu (pas?) de résultat théorique : compréhension
restreinte et a posteriori du fonctionnement.