Classification, Apprentissage,...
Transcript of Classification, Apprentissage,...
-
Classification, Apprentissage,Décision
Chapitre Septième : Réseau de Neurones
Stéphane Ayache, Cécile Capponi, François Denis, Rémi Eyraud,Hachem Kadri
Master IS-IM Aix-Marseille Université
-
Plan du cours
IntroductionArbre de décision, Random Forest, & k-ppvValidation d’un apprentissage & ClusteringPerceptronMachines à vecteur de supportRéseau de Neurones / Deep LearningTheorie de l’apprentissage
-
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
-
Perceptron : rappels
● Un perceptron f est un séparateur linéaire définipar un vecteur et un scalaire b : pour toutedonnée :– f(x) = 1 si
– f(x) = 0 (ou -1) si
Autrement dit :f(x) = φ avec φ(v) = 1 si v ≥ 0, et 0 sinon
● Propriétés :– Si données linéairement séparables →apprenable – Sinon pas apprenable
w∈ℝdx∈ℝd
⟨w , x ⟩+b
-
Perceptron : représentation graphique
x2
x1
xd
w1w2…wnb
+ b φ Out.....
+1
-
Perceptron : représentation graphique
x2
x1
xd
w1
w2
wd
φ Out.....
+1
b
∑i=0
d
wi xi
-
Perceptron : représentation graphique
x2
x1
xd
w1
w2
wd
φ Out.....
+1
b
-
Perceptron : représentation graphique
x2
x1
xd
w1
w2
wd
φ Out.....
+1
b
-
Perceptron : limitation
● XOR non linéairement séparable :
-
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 desperceptron de la couche suivante
– Un perceptron en sortie (si classification binaire)● Plus grande expressivité
-
Perceptron multi-couches : exemple
Couche d'entrée : vecteur de données(ici en 2D donc)
x2
x1
-
Perceptron multi-couches : exemple
Couche cachée :1 seule avec 2 perceptrons
x2
x1
+1
+1
Perceptron 1
Perceptron 2
w11
b1
b2
w22
w12
w21
Out1
Out2
-
Perceptron multi-couches : exemple
Couche de sortie :1 perceptron
w32
w31
x2
x1
+1
+1
Perceptron 1
Perceptron 2
w11
b1
b2
w22
w12
w21 Perceptron
3Out global
+1
+1
b3
-
Perceptron multi-couches : exemple
● Prenons ces valeurs pour les poids :
1
-2
x2
x1
+1
+1
Perceptron 1
Perceptron 2
1
-1,5
-0,5
1
1
1 Perceptron
3Out global
+1
+1
-0,5
-
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
-2
x2
x1
+1
+1
Perceptron 1
Perceptron 2
1
-1,5
-0,5
1
1
1 Perceptron
3Out global
+1
+1
-0,5
-
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
-2
x2
x1
+1
+1
Perceptron 1
Perceptron 2
1
-1,5
-0,5
1
1
1 Perceptron
3Out global
+1
+1
-0,5
-
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
-2
x2
x1
+1
+1
Perceptron 1
Perceptron 2
1
-1,5
-0,5
1
1
1 Perceptron
3Out global
+1
+1
-0,5
-
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
-2
x2
x1
+1
+1
Perceptron 1
Perceptron 2
1
-1,5
-0,5
1
1
1 Perceptron
3Out global
+1
+1
-0,5
-
Perceptron multi-couches : exemple
● Ce perceptron mulit-couche calcule le XOR !
1
-2
x2
x1
+1
+1
Perceptron 1
Perceptron 2
1
-1,5
-0,5
1
1
1 Perceptron
3Out global
+1
+1
-0,5
-
Perceptron multi-couches : représentation algébrique
● Chaque couche peut être représentée par unematrice : chaque colonne contient un perceptron.
Exemple : la couche cachée est
( b1w11w12b2w21w22)
w32
w31
x2
x1
+1
+1
P1
P2
w11
b1
b2
w22
w12
w21 P3 Out global
+1+1
b3
-
Perceptron multi-couches : représentation algébrique
● Le calcul de la sortie de la couche cachée à partirde la couche d'entrée :
f caché (x)=φ [( b1w11w12 b2w21w22)T
( 1x1x2)]=φ [(b1b2w11w21w12w22)( 1x1x2)]=φ [b1⋅1+w11⋅x1+w12⋅x2b2⋅1+w21⋅x1+w22⋅x2]=(φ(b1⋅1+w11⋅x1+w12⋅x2)φ(b2⋅1+w21⋅x1+w22⋅x2))=(
out1out2)
-
Perceptron multi-couches : représentation algébrique
● Le calcul de sortie du perceptron multi-couche :
f global (x )=φ [( b3w31w32)T
( 1out1out2)]=φ [( b3w31w32)
T
( 1φ(b1+w11⋅x1+w12⋅x2)φ(b2+w21⋅x1+w22⋅x2))]=φ(b3+w31⋅φ(b1+w11⋅x1+w12⋅x2)+w32⋅φ(b2+w21⋅x1+w22⋅x2))
w32
w31
x2
x1
+1
+1
P1
P2
w11 b1
b2w22
w12 w21
P3 Out global
+1+1
b3
-
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 PASapprenables !Impossible de mettre à jour les poids des couchescachées, même en connaissant l'erreur en sortie...
-
Neurone
● Ce qu'il faut : déterminer si un poids d'unecouche caché doit être diminué ou augmentéen cas d'erreur
● Idée : utiliser la dérivé● 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 unefonction d'activation (=φ) dérivable.
-
Neurone : fonction d'activation
● Besoin : une fonction valant environ 0 ou 1presque tout le temps, avec une transitionrapide mais continue.
● Exemple : sigmoïde φ(x)= 11+e−x
-
Réseau de neurones et risqueempirique
Classification binaire, données de dimension d, 1 couche cachée
● La sortie est :– 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 : minimiser où l est la fonction de risque
f (x)=φ(w finalφ (W cachéeT ⋅x ))
l( f (x) , y)
-
Réseau de neurones et risqueempirique
● Classification : la fonction de coût est
● Or cette fonction n'est pas dérivable…● On prend une fonction approximante, venant
par exemple de la régression (moindre carré)
qui est continue et dérivable si f(x) et y sont desréels
l(f (x) , y)={1 si f (x)≠ y0 sinon
l( f (x) , y)=(f (x)− y)2
-
Réseau de neurones et risqueempirique
● Expression de la fonction à minimiser :
● Minimiser l'erreur c'est minimiser chaque terme de lasomme: on peut regarder une à une les données
● Si on note outk la sortie du neurone k, et Pred(final) lesneurones reliés au neurone final, on a :
● Tous les neurones et toutes les connections sont utilesau calcul
Erreur (W )=E (W )=12 ∑(x , y)∈S
( f (x)− y)2
f (x)=φ (bfinal+ ∑j∈Pred (final) w final , j⋅out j)
-
Un problème d'optimisation
● Optimisation non-linéaire : fonction continues,dérivables
● On-line : minimisation de l'erreur sur chaquedonnées d'apprentissage (idem perceptron)
● Minimiser = recherche descendante du point dedérivée nulle de la fonction
-
L'erreur dépend des poidsTrouver les w qui mènent à la plus petite erreur
Si un seul w :
-
Fonctions de plusieurs variablesDérivées partielles
Cas y = f(w1, w2), i.e. f : ℝ2→ℝ● Etude de l'orientation lorsqu'une seule composante varie
● : une fonction f'(w1, w2) qui indique comment f varie lorsque seule
w1 varie un peu● Exemple :
● Les valeurs et signe de indiquent l'orientation de la courbe f sur
l'axe w2 lorsque w1 varie (un peu)
Généralisation à y = f(w) avec w ∈ ℝd : gradientTout est fixé sauf wi : où et à quelle vitesse se dirige f sur les autres axes ?
∂ f (w1,w2, ... ,wd)∂wi
∂ f (w1,w2)∂w1
f (w1,w2)=3w12w2
5−2w1w23+2w1
4w22−4w1−2w2
∂ f (w1,w2)∂w1
=3w1w25−2w2
3−8w13w2
2−4
∂ f (w1,w2)∂w1
-
Descente de Gradient : intuitivement
w*
w
-
Descente de gradientun algorithme itératif
Cas à une dimensionSoit f : ℝ→ℝ la fonction à minimiser :● Fixer un point de départ w0● Construire itérativement :
wi+1 = wi – α f'(wi)
On écrit aussi Δw = wi+1 - wi = – α f'(wi)
α (des fois noté η) s'appelle le pas d'apprentissage● Arrêt : lorsque Δw ≤ ε ou lorsque i > Max_iter
-
Descente de gradient :Quelques problèmes
● Fonctions non-convexes : minima locaux● Même convexe, la convergence n'est pas assurée :
-
Descente de gradient :Rôle du pas d'apprentissage
Petit ? Grand ? Adaptatif ?
-
Descente de gradient :rôle du point initial
Minima locaux
-
Descente de gradientun algorithme itératif
Cas à plusieurs dimensions
Soit f : ℝd→ℝ la fonction à minimiser :● Fixer un vecteur de départ w0● Formule de mise à jour :
où est la fonction gradient, donc est unvecteur Concrètement : mise à jour de la coordonnée wj de W :
● Critères d'arrêt
ΔW=−α ∇⃗ E(W )∇⃗ E ∇⃗ E(W )
Δw j=−α∂E∂w j
(W )
-
Réseau de neurones back-propagation
Utilisation de la descente de gradient :Possible car fonctions (activation et coût) dérivables
Q : Comment calculer lors de la mise à jour, c'est-à-dire pour
faire ?
R : en regardant donnée après donnée !
1) Calculer l'activation de chaque neurone (i.e. faire le forward dela donnée)
2) Calculer le gradient en sortie3) (retro-) propager le gradient vers les entrées en déroulant une
chaine de propagation de la sortie vers la première couche
w i+1=wi−α∂ L∂wi
(f w)
∂ L∂wi
-
Back-propagationchaine de propagation
-
Back-propagation : 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 sortie3.E = Σk ek 4.Calculer Δwjk pour tous les poids entre la couche cachée et la couche de
sortie5.Calculer Δwij 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
-
Back-propagationExemple
● Supposons qu'on a une donnée ((1,2),1) sur laquellenotre RN retrourne 0.9. L'erreur E est donc de 0.1.
● Commençons par rectifier w31● L'impact de w31 sur l'erreur est donné par
● Par la régle chaînée :
w32
w31
x2
x1
+1
+1
P1
P2
w11 b1
b2w22
w12 w21
P3 Out
+1+1
b3
∂E∂w31
∂E∂w31
= ∂E∂out
⋅∂out∂w31
= ∂E∂out
⋅ ∂out∂ ⟨. , .⟩P3
⋅∂⟨. , .⟩P3∂w31
-
Back-propagationExemple
● On va calculer chaque terme :
Donc
D'autre part :
Donc
∂E∂out
=12(−2cible+2out )=out−cible=0.9−1=−0.1
∂E∂w31
= ∂E∂out
⋅∂out∂w31
= ∂E∂out
⋅ ∂out∂ ⟨. , .⟩P3
⋅∂⟨. , .⟩P3∂w31
E=12(cible−out )2=1
2(cible2−2cible⋅out+out2)
out=φ(⟨. , .⟩P3)=1
1+exp(⟨. , .⟩P3)
∂out∂ ⟨. , .⟩P3
=out (1−out )=0.9(1−0.9)=0.09
-
Back-propagationExemple
Enfin,
Donc
● Si on remet tout ensemble :
∂ ⟨. , .⟩P3∂w31
=outP1=0.8
∂E∂w31
= ∂E∂out
⋅∂out∂w31
= ∂E∂out
⋅ ∂out∂ ⟨. , .⟩P3
⋅∂⟨. , .⟩P3∂w31
=−0.1⋅0.09⋅0.8=0.0072
⟨. , .⟩P3=w31⋅out p1+w32⋅out p2+b3
w32
w31
x2
x1
+1
+1
P1
P2
w11 b1
b2w22
w12 w21
P3 Out
+1+1
b3
-
Back-propagationExemple
Solution analytique :
● Similairement :
∂E∂w31
= ∂E∂out
⋅∂out∂w31
= ∂E∂out
⋅ ∂out∂ ⟨. , .⟩P3
⋅∂⟨. , .⟩P3∂w31
=(out−cible)⋅out (1−out)⋅out P1
=δout⋅out P1
w32
w31
x2
x1
+1
+1
P1
P2
w11 b1
b2w22
w12 w21
P3 Out
+1+1
b3
∂E∂w32
=δout⋅out P2
-
Back-propagationExemple
Les nouveaux poids sont donc :
● On appliquant la même approche, on peutcalculer les nouveaux b3, w11, w12, b1, w21,w22, b2. Par exemple :
w32
w31
x2
x1
+1
+1
P1
P2
w11 b1
b2w22
w12 w21
P3 Out
+1+1
b3
w31=w31−α∂E∂w32
=w31−α⋅δout⋅outP1
w32=w32−α∂E∂w32
=w32−α⋅δout⋅outP2
∂E∂w11
= ∂E∂out1
⋅∂out1
∂⟨. , .⟩P1⋅∂⟨. , .⟩P 1∂w11
= ∂ E∂⟨. , .⟩P3
⋅∂⋅⟨. , .⟩P 3out1
∂out1∂⟨. , .⟩P1
⋅∂⟨. , .⟩P1∂w11
-
Apprentissage de réseaux deneurones
● 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, ReLux,
aggrégation, …)– Mise à jour des poids (avec/sans effet mémoire, …)– Variante de la descente (stochastique,
momentum, ...)– ...
-
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
-
Réseau de neurones et imagerieHistorique récent
-
Réseau de neurones et imagerieHistorique
1957 (Rosenblatt) Perceptron1960 (Widrow, Hoff) ADALINE1969 (Minsky, Papert) Problème XOR1986 (Rumelhart et. al) MLP et backpropagation1992 (Vapnik et. al) SVM1998 (LeCun et. al) LeNet2010 (Hinton et. al) Deep Neural Networks2012 (Krizhevsky, Hinton et. al) AlexNet, ILSVRC’2012, GPU – 8 couches2014 GoogleNet – 22 couches2015 Inception (Google) – Deep Dream2016 ResidualNet (Microsoft/Facebook) – 152 couches
-
● Idée : différencier les entrées de la premièrecouche cachée, puis synthétiser leurs outputs
Réseau de neurones et imagerieRéseau de convolution
-
Réseau de neurones et imagerieRéseau de convolution
1 Couche de convolution = 1 filtre
-
Réseau de neurones et imagerieRéseau de convolution
● Traitement à partir de l'image brute
1) Couche de convolution : fenêtre sur l'image2) Couche de pooling pour maxer/moyenner les sorties
d'un ensemble de neurones (fenêtre)
3) Couche de normalisation (ReLU : Rectified Linear Unit)4) Recommencer en 1 ● Couche(s) de sortie entièrement connecté (fully
connected) pour centralisation
-
Réseau de neurones et imagerieRéseau de convolution
-
Réseau de neurones et imagerieRéseau de convolution : exemple GoogleNet (2015) :
-
Réseau de neurones et imagerieRéseau de convolution
Interprétabilité :– 'cluster' de neurones de
convolution = filtres – Filtre de bas niveau
proche de la couched'entrée
– de haut niveau proche dela couche de sortie
-
Réseau de neurones et imagerieRéseau de convolution
-
Réseau de neurones et imagerieRéseau de convolution
AlexNet (2012)
-
Réseau de neurones et imagerieRéseau de convolution
● Couches de convolution 'spacialisées' : les neuronesactivés permettent de savoir les partie de l'imageresponsable de la classification
-
Réseau de neurones et imagerieRéseau de convolution
● Couches de convolution 'spacialisées' : grain très fin
Source : Ren et al., NIPS, 2016
-
Réseau de neurones et imagerieauto-encodeur
● Descente de gradient : différence entre l'imaged'entrée et celle de sortie
● Couche du milieu : représentation légère etpertinente des images (mieux que ACP!)
-
Réseau de neurones et imagerieGenerative Adversarial Networks
● Apprendre un RN génératif qui essaie detromper un autre RN
● Goodfellow et al.,2014
-
Réseau de neurones et imagerieGenerative Adversarial Networks
StarGAN, Choi et al., 24 novembre 2017, https://arxiv.org/abs/1711.09020
https://arxiv.org/abs/1711.09020
-
Réseau de neurones et imagerieGenerative Adversarial Networks
StarGAN, Choi et al., 24 novembre 2017, https://arxiv.org/abs/1711.09020
https://arxiv.org/abs/1711.09020
-
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ésultats théorique : compréhension
restreinte et a postériori du fonctionnement.