Vous êtes sur la page 1sur 64

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) :
1.Predictions : fk(x) pour chaque neurone k de la couche de sortie (=activation)
2.Calculer l'erreur ek = l(fk – yk) pour chaque sortie
3.E = Σk ek
4.Calculer Δwwjk pour tous les poids entre la couche cachée et la couche de
sortie
5.Calculer Δwwij pour tous les poids entre la couche cachée et la couche de
sortie
6.Mettre à 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,
https://arxiv.org/abs/1711.09020
Réseau de neurones et imagerie
63

Generative Adversarial Networks


StarGAN, Choi et al., 24 novembre 2017,
https://arxiv.org/abs/1711.09020
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.

Vous aimerez peut-être aussi