Classification, Apprentissage,...

64
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é

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.