79
Réseaux de neurones artificiels Amin Fehri 1 09/01/2017 1 Centre de Morphologie Mathématique Mines ParisTech 1

Réseaux de neurones artificiels - GitHub Pages

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Réseaux de neurones artificiels - GitHub Pages

Réseaux de neurones artificiels

Amin Fehri1

09/01/2017

1Centre de Morphologie MathématiqueMines ParisTech

1

Page 2: Réseaux de neurones artificiels - GitHub Pages

Plan

Introduction

Réseaux de neurones profonds

Optimisation et régularisation

Optimisation

Régularisation

Conclusion

2

Page 3: Réseaux de neurones artificiels - GitHub Pages

Introduction

Page 4: Réseaux de neurones artificiels - GitHub Pages

Objectif : régression ou classification

Classification

• Imagerie médicale : malade ou pas ?

• Reconnaissance de caractères ?

Régression

• Conduite automatique : position optimale de la roue

• Kinect : où sont les membres ?

Cela est aussi valable pour des sorties structurées.

3

Page 5: Réseaux de neurones artificiels - GitHub Pages

Objectif : régression ou classification

Classification

• Imagerie médicale : malade ou pas ?

• Reconnaissance de caractères ?

Régression

• Conduite automatique : position optimale de la roue

• Kinect : où sont les membres ?

Cela est aussi valable pour des sorties structurées.

3

Page 6: Réseaux de neurones artificiels - GitHub Pages

Reconnaissance d’objets

4

Page 7: Réseaux de neurones artificiels - GitHub Pages

Reconnaissance d’objets

5

Page 8: Réseaux de neurones artificiels - GitHub Pages

Réseaux de neurones profonds

Page 9: Réseaux de neurones artificiels - GitHub Pages

Classifieur linéaire

• Base de données : paires (X (i),Y (i)), i = 1, ...,N.• X (i) ∈ Rn, Y (i) ∈ {−1,1}• Objectif : trouver w et b tels que signe(wT X (i) + b) = Y (i).

11. Figures : N. Leroux [2015]

6

Page 10: Réseaux de neurones artificiels - GitHub Pages

Classifieur linéaire

• Base de données : paires (X (i),Y (i)), i = 1, ...,N.• X (i) ∈ Rn, Y (i) ∈ {−1,1}• Objectif : trouver w et b tels que signe(wT X (i) + b) = Y (i).

11. Figures : N. Leroux [2015]

6

Page 11: Réseaux de neurones artificiels - GitHub Pages

Algorithme du perceptron (Rosenblatt, 1957)

• w0 = 0,b0 = 0

• Y (i) = signe(wT X (i) + b)

• wt+1 ← wt +∑

i(Y(i) − Y (i))X (i)

• bt+1 ← bt +∑

i(Y(i) − Y (i))

Demo linéairement séparable.

7

Page 12: Réseaux de neurones artificiels - GitHub Pages

Certaines données ne sont pas linéairement séparables

L’algorithme du perceptron ne converge pas pour des donnéesnon linéairement séparables.

8

Page 13: Réseaux de neurones artificiels - GitHub Pages

Non convergence de l’algorithme du perceptron

Perceptron non-linéairement séparable

• On a besoin d’un algorithme qui marche à la fois sur desdonnées séparables et non séparables.

9

Page 14: Réseaux de neurones artificiels - GitHub Pages

Erreur de classification

Un bon classifieur minimise :

`(w) =∑

i

`i

=∑

i

`(Y (i),Y (i))

=∑

i

1signe(wT X (i)+b)6=Yi

10

Page 15: Réseaux de neurones artificiels - GitHub Pages

Importance de la convexité

a) Fonction convexe, b) Fonction non convexe mais adaptée à unproblème d’optimisation

11

Page 16: Réseaux de neurones artificiels - GitHub Pages

Fonction de coût

• L’erreur de classification n’est pas lisse.• La sigmoïde est lisse mais pas convexe.• La perte logistique est une borne supérieure convexe.• La hinge loss ressemble beaucoup à la logistique.

12

Page 17: Réseaux de neurones artificiels - GitHub Pages

Fonction de coût

• L’erreur de classification n’est pas lisse.• La sigmoïde est lisse mais pas convexe.• La perte logistique est une borne supérieure convexe.• La hinge loss ressemble beaucoup à la logistique.

12

Page 18: Réseaux de neurones artificiels - GitHub Pages

Fonction de coût

• L’erreur de classification n’est pas lisse.• La sigmoïde est lisse mais pas convexe.• La perte logistique est une borne supérieure convexe.• La hinge loss ressemble beaucoup à la logistique.

12

Page 19: Réseaux de neurones artificiels - GitHub Pages

Fonction de coût

• L’erreur de classification n’est pas lisse.• La sigmoïde est lisse mais pas convexe.• La perte logistique est une borne supérieure convexe.• La hinge loss ressemble beaucoup à la logistique.

12

Page 20: Réseaux de neurones artificiels - GitHub Pages

Résoudre des problèmes séparables ET non séparables

• Fonction logistique non-linéairement séparable

• Fonction logistique linéairement séparable

13

Page 21: Réseaux de neurones artificiels - GitHub Pages

Classification non linéaire

Polynôme non-linéairement séparable

14

Page 22: Réseaux de neurones artificiels - GitHub Pages

Classification non linéaire

• Features : X1,X2 → classifieur linéaire• Features : X1,X2,X1X2,X 2

1 , ...→ classifieur non-linéaire

15

Page 23: Réseaux de neurones artificiels - GitHub Pages

Choisir les features

• Pour que ça fonctionne, on crée de nouveaux features :

• X i1X j

2 pour (i , j) ∈ [0,4] (p = 18)

• Est-ce que ça fonctionnerait avec moins de features ?

• Test avec X i1X j

2 pour (i , j) ∈ [0,3]

Polynôme non-linéairement séparable de degré 2

16

Page 24: Réseaux de neurones artificiels - GitHub Pages

Une vue graphique des classifieurs

f (X ) = w1X1 + w2X2 + b

17

Page 25: Réseaux de neurones artificiels - GitHub Pages

Une vue graphique des classifieurs

f (X ) = w1X1 + w2X2 + w3X 21 + w4X 2

2 + w5X1X2 + ...

18

Page 26: Réseaux de neurones artificiels - GitHub Pages

Features non-linéaires

• Un classifieur linéaire appliqué à des transformationsnon-linéaires est non-linéaire

• Un classifieur non-linéaire repose sur des featuresnon-linéaires

• Lesquels choisir ?

• Hj = X pj1 X qj

2

• SVM : Hj = K (X ,X (j)) avec K fonction noyau

• Est-ce que les features doivent être prédéfinis ?

• Un réseau de neurones va apprendre les Hj

19

Page 27: Réseaux de neurones artificiels - GitHub Pages

Features non-linéaires

• Un classifieur linéaire appliqué à des transformationsnon-linéaires est non-linéaire

• Un classifieur non-linéaire repose sur des featuresnon-linéaires

• Lesquels choisir ?

• Hj = X pj1 X qj

2

• SVM : Hj = K (X ,X (j)) avec K fonction noyau

• Est-ce que les features doivent être prédéfinis ?

• Un réseau de neurones va apprendre les Hj

19

Page 28: Réseaux de neurones artificiels - GitHub Pages

Features non-linéaires

• Un classifieur linéaire appliqué à des transformationsnon-linéaires est non-linéaire

• Un classifieur non-linéaire repose sur des featuresnon-linéaires

• Lesquels choisir ?

• Hj = X pj1 X qj

2

• SVM : Hj = K (X ,X (j)) avec K fonction noyau

• Est-ce que les features doivent être prédéfinis ?

• Un réseau de neurones va apprendre les Hj

19

Page 29: Réseaux de neurones artificiels - GitHub Pages

Features non-linéaires

• Un classifieur linéaire appliqué à des transformationsnon-linéaires est non-linéaire

• Un classifieur non-linéaire repose sur des featuresnon-linéaires

• Lesquels choisir ?

• Hj = X pj1 X qj

2

• SVM : Hj = K (X ,X (j)) avec K fonction noyau

• Est-ce que les features doivent être prédéfinis ?

• Un réseau de neurones va apprendre les Hj

19

Page 30: Réseaux de neurones artificiels - GitHub Pages

Features non-linéaires

• Un classifieur linéaire appliqué à des transformationsnon-linéaires est non-linéaire

• Un classifieur non-linéaire repose sur des featuresnon-linéaires

• Lesquels choisir ?

• Hj = X pj1 X qj

2

• SVM : Hj = K (X ,X (j)) avec K fonction noyau

• Est-ce que les features doivent être prédéfinis ?

• Un réseau de neurones va apprendre les Hj

19

Page 31: Réseaux de neurones artificiels - GitHub Pages

Algorithme pour réseau de neurones

• Choisir un exemple x

• Le transformer en x = Vx avec une matrice V

• Appliquer une transformation non-linéaire g à tous leséléments de x

• Calculer wT x + b

• Calculer wT x + b = wT Vx + b = wx + b

• Calculer wT x + b = wT g(Vx) + b 6= wx + b

20

Page 32: Réseaux de neurones artificiels - GitHub Pages

Algorithme pour réseau de neurones

• Choisir un exemple x

• Le transformer en x = Vx avec une matrice V

• Appliquer une transformation non-linéaire g à tous leséléments de x

• Calculer wT x + b

• Calculer wT x + b = wT Vx + b = wx + b

• Calculer wT x + b = wT g(Vx) + b 6= wx + b

20

Page 33: Réseaux de neurones artificiels - GitHub Pages

Algorithme pour réseau de neurones

• Choisir un exemple x

• Le transformer en x = Vx avec une matrice V

• Appliquer une transformation non-linéaire g à tous leséléments de x

• Calculer wT x + b

• Calculer wT x + b = wT Vx + b = wx + b

• Calculer wT x + b = wT g(Vx) + b 6= wx + b

20

Page 34: Réseaux de neurones artificiels - GitHub Pages

Algorithme pour réseau de neurones

• Choisir un exemple x

• Le transformer en x = Vx avec une matrice V

• Appliquer une transformation non-linéaire g à tous leséléments de x

• Calculer wT x + b

• Calculer wT x + b = wT Vx + b = wx + b

• Calculer wT x + b = wT g(Vx) + b 6= wx + b

20

Page 35: Réseaux de neurones artificiels - GitHub Pages

Réseaux de neurones

• Généralement, on utiliseHj = g(vT

j X )

• Hj : Unité cachée

• vj : Poids d’entrée

• g : Fonction de transfert

21

Page 36: Réseaux de neurones artificiels - GitHub Pages

Réseaux de neurones

• Généralement, on utiliseHj = g(vT

j X )

• Hj : Unité cachée

• vj : Poids d’entrée

• g : Fonction de transfert

21

Page 37: Réseaux de neurones artificiels - GitHub Pages

Fonctions de transfert

f (X ) =∑

j wjHj(X ) + b =∑

j wjg(vTj X )

• g est la fonction de transfert.

• g était auparavant une sigmoïde ou tanh

• Si g est une sigmoïde, chaque unité cachée est un softclassifier.

22

Page 38: Réseaux de neurones artificiels - GitHub Pages

Fonctions de transfert

f (X ) =∑

j wjHj(X ) + b =∑

j wjg(vTj X )

• g est la fonction de transfert.

• g est désormais souvent la partie positive.

• On appelle cela une rectified linear unit (ReLU).

23

Page 39: Réseaux de neurones artificiels - GitHub Pages

Réseaux de neurones

f (X ) =∑

j wjHj(X ) + b =∑

j wjg(vTj X )

24

Page 40: Réseaux de neurones artificiels - GitHub Pages

Exemple sur le problème non-séparable

Réseau de neurones non-linéairement séparable 3

25

Page 41: Réseaux de neurones artificiels - GitHub Pages

Entraîner un réseau de neurones

f (X ) =∑

j wjg(vTj X )

f (X ) =∑

j Wg(VX )

• Base de données : paires (X (i),Y (i)), i = 1, ...,N

• Objectif : trouver V et W pour minimiser∑i `(f (X

(i)),Y (i)) =∑

i `(Wg(VX (i)),Y (i))

• On peut le faire avec une descente de gradient.

26

Page 42: Réseaux de neurones artificiels - GitHub Pages

Entraîner un réseau de neurones

f (X ) =∑

j wjg(vTj X )

f (X ) =∑

j Wg(VX )

• Base de données : paires (X (i),Y (i)), i = 1, ...,N

• Objectif : trouver V et W pour minimiser∑i `(f (X

(i)),Y (i)) =∑

i `(Wg(VX (i)),Y (i))

• On peut le faire avec une descente de gradient.

26

Page 43: Réseaux de neurones artificiels - GitHub Pages

Entraîner un réseau de neurones

f (X ) =∑

j wjg(vTj X )

f (X ) =∑

j Wg(VX )

• Base de données : paires (X (i),Y (i)), i = 1, ...,N

• Objectif : trouver V et W pour minimiser∑i `(f (X

(i)),Y (i)) =∑

i `(Wg(VX (i)),Y (i))

• On peut le faire avec une descente de gradient.

26

Page 44: Réseaux de neurones artificiels - GitHub Pages

Rétropropagation du gradient - trouver W

• Objectif : trouver V et W pour minimiser∑i `(Wg(VX (i)),Y (i))

• On doit calculer le gradient de`i(W ,V ) = `(Wg(VX (i)),Y (i))

• Dérivation de fonctions composées :

∂`i(W ,V )

∂W=∂`i(W ,V )

∂f (X )

∂f (X )

∂W

=∂`i(W ,V )

∂f (X )g(VX )T

27

Page 45: Réseaux de neurones artificiels - GitHub Pages

Rétropropagation du gradient - trouver W

• Objectif : trouver V et W pour minimiser∑i `(Wg(VX (i)),Y (i))

• On doit calculer le gradient de`i(W ,V ) = `(Wg(VX (i)),Y (i))

• Dérivation de fonctions composées :

∂`i(W ,V )

∂W=∂`i(W ,V )

∂f (X )

∂f (X )

∂W

=∂`i(W ,V )

∂f (X )g(VX )T

27

Page 46: Réseaux de neurones artificiels - GitHub Pages

Rétropropagation du gradient - trouver W

• Objectif : trouver V et W pour minimiser∑i `(Wg(VX (i)),Y (i))

• On doit calculer le gradient de`i(W ,V ) = `(Wg(VX (i)),Y (i))

• Dérivation de fonctions composées :

∂`i(W ,V )

∂W=∂`i(W ,V )

∂f (X )

∂f (X )

∂W

=∂`i(W ,V )

∂f (X )g(VX )T

27

Page 47: Réseaux de neurones artificiels - GitHub Pages

Rétropropagation du gradient - trouver V

• On réécrit Wg(VX ) = WH avec H = g(VX ).

• Dérivation de fonctions composées :

∂`i(W ,V )

∂V=∂`i(W ,V )

∂f (X )

∂f (X )

∂V

=∂`i(W ,V )

∂f (X )

∂f (X )

∂H∂H∂V

= W∂`i(W ,V )

∂f (X )g′(VX )X T

28

Page 48: Réseaux de neurones artificiels - GitHub Pages

Rétropropagation du gradient - trouver V

• On réécrit Wg(VX ) = WH avec H = g(VX ).

• Dérivation de fonctions composées :

∂`i(W ,V )

∂V=∂`i(W ,V )

∂f (X )

∂f (X )

∂V

=∂`i(W ,V )

∂f (X )

∂f (X )

∂H∂H∂V

= W∂`i(W ,V )

∂f (X )g′(VX )X T

28

Page 49: Réseaux de neurones artificiels - GitHub Pages

Trouver une bonne transformation de x

• Hj(x) = g(vTj x)

• Est-ce que ce sont les bons Hj ? Que sait-on sur cela ?

• Théoriquement, un nombre fini de Hj est suffisant(théorème d’approximation universelle).

• Cela ne veut pas dire qu’il faut l’utiliser→ le nombre de Hj

nécessaire peut être excessivement grand.

29

Page 50: Réseaux de neurones artificiels - GitHub Pages

Trouver une bonne transformation de x

• Hj(x) = g(vTj x)

• Est-ce que ce sont les bons Hj ? Que sait-on sur cela ?

• Théoriquement, un nombre fini de Hj est suffisant(théorème d’approximation universelle).

• Cela ne veut pas dire qu’il faut l’utiliser→ le nombre de Hj

nécessaire peut être excessivement grand.

29

Page 51: Réseaux de neurones artificiels - GitHub Pages

Trouver une bonne transformation de x

• Hj(x) = g(vTj x)

• Est-ce que ce sont les bons Hj ? Que sait-on sur cela ?

• Théoriquement, un nombre fini de Hj est suffisant(théorème d’approximation universelle).

• Cela ne veut pas dire qu’il faut l’utiliser→ le nombre de Hj

nécessaire peut être excessivement grand.

29

Page 52: Réseaux de neurones artificiels - GitHub Pages

Approfondir le réseau

• Hj(x) = g(vTj x)

• xj = g(vTj x)

• On peut aussi transformer x

30

Page 53: Réseaux de neurones artificiels - GitHub Pages

Approfondir le réseau

• Hj(x) = g(vTj x)

• xj = g(vTj x)

• On peut aussi transformer x

30

Page 54: Réseaux de neurones artificiels - GitHub Pages

De 2 à 3 couches

• On peut avoir autant de couches qu’on veut.

• Mais cela rend le problème d’optimisation plus dur.

31

Page 55: Réseaux de neurones artificiels - GitHub Pages

De 2 à 3 couches

• On peut avoir autant de couches qu’on veut.

• Mais cela rend le problème d’optimisation plus dur.

31

Page 56: Réseaux de neurones artificiels - GitHub Pages

De 2 à 3 couches

• On peut avoir autant de couches qu’on veut.

• Mais cela rend le problème d’optimisation plus dur.

31

Page 57: Réseaux de neurones artificiels - GitHub Pages

Optimisation et régularisation

Page 58: Réseaux de neurones artificiels - GitHub Pages

Plan

Introduction

Réseaux de neurones profonds

Optimisation et régularisation

Optimisation

Régularisation

Conclusion

32

Page 59: Réseaux de neurones artificiels - GitHub Pages

Nécessité d’un apprentissage rapide

• Les réseaux de neurones ont besoin de beaucoupd’exemples (quelques millions ou plus).

• On doit pouvoir les utiliser rapidement.

33

Page 60: Réseaux de neurones artificiels - GitHub Pages

Descente de gradient : méthode batch

• Pour calculer tous les paramètres, on a besoin deparcourir toutes les données.

• Cela peut être très coûteux.

• Que se passe-t’il si on a un nombre de données infini ?

34

Page 61: Réseaux de neurones artificiels - GitHub Pages

Descente de gradient : méthode batch

• Pour calculer tous les paramètres, on a besoin deparcourir toutes les données.

• Cela peut être très coûteux.

• Que se passe-t’il si on a un nombre de données infini ?

34

Page 62: Réseaux de neurones artificiels - GitHub Pages

Descente de gradient : méthode batch

• Pour calculer tous les paramètres, on a besoin deparcourir toutes les données.

• Cela peut être très coûteux.

• Que se passe-t’il si on a un nombre de données infini ?

34

Page 63: Réseaux de neurones artificiels - GitHub Pages

Que faire alors ?

1. Supprimer des données ?2. Utiliser des méthodes d’approximation.

• Mise à jour des poids = moyenne des mises à jour pourtous les points.

• Est-ce que ces mises à jour sont vraiment différentes ?• Si non, comment peut-on apprendre plus rapidement ?

35

Page 64: Réseaux de neurones artificiels - GitHub Pages

Que faire alors ?

1. Supprimer des données ?2. Utiliser des méthodes d’approximation.

• Mise à jour des poids = moyenne des mises à jour pourtous les points.

• Est-ce que ces mises à jour sont vraiment différentes ?• Si non, comment peut-on apprendre plus rapidement ?

35

Page 65: Réseaux de neurones artificiels - GitHub Pages

Descente de gradient stochastique

• L(θ) = 1N∑

i `(θ,X(i),Y (i))

• θt+1 → θt − αtN∑

i∂`(θ,X (i),Y (i))

∂θ

• θt+1 → θt − αt∂`(θ,X (it ),Y (it ))

∂θ

• Que perd-t’on lorsque on met à jour les paramètres poursatisfaire à un seul exemple ?

36

Page 66: Réseaux de neurones artificiels - GitHub Pages

Descente de gradient stochastique

• L(θ) = 1N∑

i `(θ,X(i),Y (i))

• θt+1 → θt − αtN∑

i∂`(θ,X (i),Y (i))

∂θ

• θt+1 → θt − αt∂`(θ,X (it ),Y (it ))

∂θ

• Que perd-t’on lorsque on met à jour les paramètres poursatisfaire à un seul exemple ?

36

Page 67: Réseaux de neurones artificiels - GitHub Pages

Descente de gradient stochastique

• L(θ) = 1N∑

i `(θ,X(i),Y (i))

• θt+1 → θt − αtN∑

i∂`(θ,X (i),Y (i))

∂θ

• θt+1 → θt − αt∂`(θ,X (it ),Y (it ))

∂θ

• Que perd-t’on lorsque on met à jour les paramètres poursatisfaire à un seul exemple ?

36

Page 68: Réseaux de neurones artificiels - GitHub Pages

Batch vs stochastique

• Pour les problèmes non-convexes, le stochastique marchele mieux.

37

Page 69: Réseaux de neurones artificiels - GitHub Pages

Comprendre la fonction de perte des réseaux profonds

• Des études récentes disent que la plupart des minimalocaux sont proches du minimum global.

38

Page 70: Réseaux de neurones artificiels - GitHub Pages

Plan

Introduction

Réseaux de neurones profonds

Optimisation et régularisation

Optimisation

Régularisation

Conclusion

39

Page 71: Réseaux de neurones artificiels - GitHub Pages

Régulariser les réseaux profonds

• Les réseaux profonds ont de nombreux paramètres.• Comment éviter le surrapprentissage ?

• En régularisant les paramètres ?• En limitant le nombre d’unités• Dropout

40

Page 72: Réseaux de neurones artificiels - GitHub Pages

Dropout

• Le surrapprentissage intervient quand chaque unitédevient trop spécialisée.

• L’idée est d’empêcher chaque unité de trop s’appuyer surles autres.

• Comment ?

41

Page 73: Réseaux de neurones artificiels - GitHub Pages

Dropout - illustration

Dropout : A Simple Way to Prevent Neural Networks fromOverfitting

42

Page 74: Réseaux de neurones artificiels - GitHub Pages

Dropout - conclusion

• En supprimant les unités au hasard, on force les autres àêtre moins spécialisées.

• Au moment du test, on utilise toutes les unités.

• Parfois présenté comme une méthode ensembliste.

43

Page 75: Réseaux de neurones artificiels - GitHub Pages

Autres techniques utilisées

• Local response normalization

• Data augmentation

• Batch gradient normalization

44

Page 76: Réseaux de neurones artificiels - GitHub Pages

Conclusion

Page 77: Réseaux de neurones artificiels - GitHub Pages

Réseaux de neurones - Résumé

• Un classifieur linéaire dans un espace de features adaptépeut modéliser des frontières non-linéaires.

• Trouver un bon espace de représentation (features space)est essentiel.

• On peut définir cet espace à la main.

• On peut apprendre cet espace en utilisant moins defeatures.

• Apprendre cet espace est potentiellement compliqué(non-convexité).

45

Page 78: Réseaux de neurones artificiels - GitHub Pages

Conclusions

• Les réseaux de neurones sont des modèles non-linéairescomplexes.

• Les optimiser est difficile.

• Il s’agit autant de théorie que d’ingénierie.

• Lorsqu’ils sont correctement paramétrés, ils peuventdonner de très bons résultats.

46

Page 79: Réseaux de neurones artificiels - GitHub Pages

Bibliographie

• Deep Learning book http ://www-labs.iro.umontreal.ca/bengioy/DLbook/

• Dropout : A Simple Way to Prevent Neural Networks fromOverfitting, by Srivistave et al.

• Hugo Larochelle MOOChttps ://www.youtube.com/playlist ?list=PL6Xpj9I5qXYEcOhn7TqghAJ6NAPrNmUBH

• A Neural Network Playground http ://playground.tensorflow.org/

47