75
Marco Pedersoli Cours 3 - Apprentissage Machine Séance 3: Réseaux Neuronales ETS dep. de génie de la production automatisé Marco Pedersoli Cours Hiver 2018

Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

  • Upload
    others

  • View
    1

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Apprentissage MachineSéance 3:

Réseaux Neuronales ETS

dep. de génie de la production automatiséMarco Pedersoli

Cours Hiver 2018

Page 2: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Plan de la séance:● Architecture d’un neurone● Apprentissage avec un neurone● Réseaux multicouches● Rétropropagation● Implémentation en numpy

2

Page 3: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Architecture d’un neuron● Neuron humain

3By BruceBlaus - Own work, CC BY 3.0, https://commons.wikimedia.org/w/index.php?curid=28761830

Page 4: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Architecture d’un neuron● Neuron artificial ou Perceptron

4

Page 5: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Architecture d’un neuron● Perceptron

5

Page 6: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Architecture d’un neuron● Perceptron

■ La somme pondérée correspond au produit scalaire entre le vecteur de poids et le vecteur d’entrée.

6

Page 7: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Fonction d’activation:■ Elle est un fonction non linéaire appliqué à la sortie

Architecture d’un neuron

7

Échelon

Page 8: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Perceptron■ On peut remplacer le seuil par un poids synaptique associé à une

entrée constante

Architecture d’un neuron

8

Page 9: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Exemple:Remplir la table de vérité et identifier la fonction logique pour le réseau suivant avec x0=-1 :

9

x1

x2

y

0 0

0 1

1 0

1 1

Page 10: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Plan de la séance:● Architecture d’un neurone● Apprentissage d’un neurone● Réseaux multicouches● Rétropropagation● Implémentation en numpy

10

Page 11: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

w(t) : vecteur de poids synaptiques à l’instant t.η : taux ou coefficient d’apprentissage. yk : la sortie du neurone quand on lui présente le vecteur xk.dk : la sortie désirée quand on présente le vecteur xk.

● Règle d’Apprentissage■ Les poids synaptiques sont changés selon l’erreur et l’entrée

Architecture d’un neuron

11

Page 12: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Exercice: Calculer la valeur de w(t+1)

Architecture d’un neuron

12

x2

x1

Page 13: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Exercice: Calculer la valeur de w(t+1)

Architecture d’un neuron

13

x2

x1

Page 14: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Exercice: Calculer la valeur de w(t+1)

Architecture d’un neuron

14

x2

x1

Page 15: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Exercice: Calculer la valeur de w(t+1)

Architecture d’un neuron

15

x2

x1

Page 16: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Exercice: Calculer la valeur de w(t+1)

Architecture d’un neuron

16

x2

x1

Page 17: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Exercice: Calculer la valeur de w(t+1) avec le nouveau

Architecture d’un neuron

17

x2

x1

Page 18: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Exercice: Calculer la valeur de w(t+1) avec le nouveau

Architecture d’un neuron

18

x2

x1

Page 19: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Limitations:Architecture d’un neuron

d2

d1

● L'algorithme peut classifier correctement seulement de données linéairement séparables

● Si les données ne sont pas linéairement séparables l'algorithme ne converge pas

● L’algorithme peut converger à plusieurs solutions differentes

● La solution trouvée dépend de l’initialisation et de l’ordre d'évaluation des exemples

Page 20: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● L’algorithme du gradient■ Les poids synaptiques sont changés selon le gradient de la fonction

objectif (ou fonction de coût)

Règle d’apprentissage généralisée

20

Page 21: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● L’algorithme du gradient■ Les poids synaptiques sont changés selon le gradient de la fonction

objectif (ou fonction de coût)

■ Il faut definit une fonction de coût

■ tous les composants d’un neurone doivent être différentiables!

■ L’échelon n’est pas différentiable en zero --> Il faut changer la fonction d’activation

Règle d’apprentissage généralisée

21

Page 22: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Fonction objectif (ou de coût)■ Elle définit la relation entre sortie désirée d et sortie obtenue y■ Erreur quadratique moyenne:

L’algorithme du gradient:

22

Page 23: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Nouvelle fonction d’activation:○ Fonction Sigmoid: approximation d'échelon mais differentiable

23

■ Fonction d’activation:

■ T représente la pente

L’algorithme du gradient:

Page 24: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

L’algorithme du gradient:

24

Page 25: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Calcul différentiel:

25

x yf

dx dyf’

x zf

dx dzf’

z yg

dz dyg’

dx dzf’ dz dy

g’

dx dyf’

Page 26: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

L’algorithme du gradient:

26

Page 27: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

L’algorithme du gradient:

27

Page 28: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Dérivé de la fonction d’activation:

28

■ Fonction d’activation:

■ Dérivé de la fonction d’activation,si T=1

L’algorithme du gradient:

Rappel:

Page 29: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Autres fonctions d’activation:

29

■ Rectifieur

■ Softplus

Le descent de gradient:

Rappel:

Page 30: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Calculer la variation des poids du perceptron en utilisant la méthode du gradient

Exercice:

30

• Fonction d’activation:• X = [1 5 2]

• D = 5

• W = [3 -4 7]

• η = 0.1

Page 31: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Calculer la variation des poids du perceptron en utilisant la méthode du gradient

Exercice:

31

• Fonction d’activation:• X = [1 5 2]

• D = 5

• W = [3 -4 7]

• η = 0.1

Page 32: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Calculer la variation des poids du perceptron en utilisant la méthode du gradient

Exercice:

32

• Fonction d’activation:• X = [1 5 2]

• D = 5 net = xw = 3-20+14 = -3

• W = [3 -4 7]

• η = 0.1

Page 33: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Calculer la variation des poids du perceptron en utilisant la méthode du gradient

Exercice:

33

• Fonction d’activation:• X = [1 5 2]

• D = 5 net = xw = 3-20+14 = -3

• W = [3 -4 7] y = F(net) = ln(1+e-3)=0.047

• η = 0.1

Page 34: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Calculer la variation des poids du perceptron en utilisant la méthode du gradient

Exercice:

34

• Fonction d’activation:• X = [1 5 2]

• D = 5 net = xw = 3-20+14 = -3

• W = [3 -4 7] y = F(net) = ln(1+e-3)=0.047

• η = 0.1 F’(net) = 1/(1+e3)=0.047

Page 35: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Calculer la variation des poids du perceptron en utilisant la méthode du gradient

Exercice:

35

• Fonction d’activation:• X = [1 5 2]

• D = 5 net = xw = 3-20+14 = -3

• W = [3 -4 7] y = F(net) = ln(1+e-3)=0.047

• η = 0.1 F’(net) = 1/(1+e3)=0.047

w = 0.1(5-0.049)[1 5 2]0.047 = = [0.02 0.12 0.05]

Page 36: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Limitations de machines linéaires● Marvin Minsky, 1969

■ dans son livre: “Perceptrons, an introduction to computational geometry”, il montrait que le perceptron ne pouvait pas résoudre le problème du XOR

36

C2

C1

x2

x1

Page 37: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Limitations de machines linéaires

37

● Solution pour une frontière non-linéaire

x1∗x2

x1x2

Modélisation non linéaire

x2

x1

D+ D -D -

y = w0 + w11 (x1)2 + w22 (x2)

2 + w12 x1 x2

+ w1 x1 + w2 x2 = 0

Page 38: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Limitations de machines linéaires

38

● Solution Madaline:■ Composition de plusieures couches des perceptrons■ Pas d’apprentissage, le frontieres sont définies à main ■ Premier réseaux multi-couches

x2

x1

Page 39: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Plan de la séance:● Architecture d’un neurone● Apprentissage avec un neurone● Réseaux multicouches● Rétropropagation● Implémentation en numpy

39

Page 40: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Représentation Simplifiée

40

=

Page 41: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Chaque couche est composée par multiples neurones■ La sortie de chaque neurone d’une couche est l’entrée de la suivant

Réseau Multicouche“Multi Layer Perceptron” MLP

41

X1

X2

X3

+1

w11

w12

w22

w02

w32

w31

w21

y

w01

v21

v11

Page 42: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

● Example:■ Calculer la sortie de toutes les combinaisons des entrées

Réseau Multicouche

42

x1

x2

y

0 0

0 1

1 0

1 1

Page 43: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Pourquoi un réseau multicouche?

43

Extraction des primitives

Discrimination linéaire

..

. . **

**

*0

00

00

0 ...

.

* ****

00 0000

.

Page 44: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Pourquoi un réseau multicouche?

44

● Si avec au moins 3 couches il peut représenter n’importe quelle fonction!

● Hiérarchie de représentations: chaque sortie est l’entrée de la couche suivante

● Apprentissage plus simple et avec moins paramètres de une représentation non hierarchique

● Apprentissage profond == réseau de neurones avec beaucoup de couches

Page 45: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Plan de la séance:● Architecture d’un neurone● Apprentissage avec un neurone● Réseaux multicouches● Rétropropagation● Implémentation en numpy

45

Page 46: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagationx y

w Fnet

Page 47: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagationx y

w Fnet

Page 48: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagationx y

w Fnet

Page 49: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagation

x y* F

net

w

x yw F

net

1 2*

2

2

Page 50: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagation

x y* F

net

1 2*

2

w

x yw F

net

2

Page 51: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagation

x y* F

net

1 2*

2

w

x yw F

net

2

Page 52: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagation

x y* F

net y*

netx F’net

1 2*

2

w

x yw F

net

2

* 111 y=2-1=1

w=1

w

d=1

Page 53: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagation

x y* F

net y*

netx F’net

1 2*

2* 1

11

w

x yw F

net

2

1

w=1

y*

netx F’net

w

* 11x=2 1

2

w

Page 54: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagation

x y* F

net

w

x yw F

net

1 2*

2

2

Page 55: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagation

x y* F

net

w

x yw F

net

x y* F

net

w

1 2*

2

2

2 0*

0

0

Page 56: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagation

x y* F

net

w

x yw F

net

x y* F

net

w

1 2*

2

2

2 0*

0

0

x y* F

net

w

x y* F’

net

w

1 2*

2

2

2 -1* 1

-1

w=-2

Page 57: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagation

x y* F

net

w

x yw F

net

x y* F

net

w

1 2*

2

2

2 0*

0

0

x y* F

net

w

x y* F’

net

w

1 2*

2

2

2 -1* 1

-1

w=-2

x y* F

net

w

x y* F’

net

w

1*

2

2

x=0 -1* 1

-1

0

x y =* F

net

wx y* F’

net

w

1* 1

0

w=0

y=0 -1* 1

-1

0

Page 58: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagation

x y* F

net

w

x yw F

net

x y* F

net

w

1 2*

2

2

2 0*

0

0

x y* F

net

w

x y* F’

net

w

1 2*

2

2

2 -1* 1

-1

w=-4

x y* F

net

w

x y* F’

net

w

1*

2

2

x=0 -1* 1

-1

0

x y =* F

net

w

x y* F’

net

w

1* 1

0

w=0

y=0 -1* 1

-1

0

Page 59: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagation• Apprentissage = Changer w afin de réduire E• Calculer le gradient de E sur w pour chaque couche

x y* F’

net

w

x y* F’

net

w

x0

y0* F

net0

w0

x1

y1* F

net1

w1

couche 0 couche 1

Page 60: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Rétro Propagationx0

y0* F

net0

w0

x1

y1* F

net1

w1

couche 0 couche 1xL-1

yL-1

* FnetL-1

wL-1

couche L-1

* F’

w

x* F’

* F’

w

x* F’

x* F’

Page 61: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Retro Propagation• Apprentissage = Changer les poids synaptiques w afin de réduire E• Calculer le gradient de E sur w pour chaque couche• Utiliser la règle de chaîne (“chain rule”) de la dérivation• Propager l’erreur et calculer le gradient de E sur w pour chaque ‘boîte’

x y* Fnet

w

x y* F’

net

w

x y* F’

net

w

Page 62: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Généralisationx y

* Fnet

w

scalarvecteur colonne

matrice * =1 entrée, 1 sortie, 1 poids1 exemple

X Y* F

NET

W

* =4 entrée, 3 sortie, 12 poids2 exemples

x y* F

net

W

* =

4 entrée, 3 sortie, 12 poids1 exemples

x y* F

net

w

* =

4 entrée, 1 sortie, 4 poids1 exemple

Page 63: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Généralisation scalarvecteur colonne

matrice Propagation directe(forward pass)

Retro Propagation(backward pass)

*

* =

* =

* =

1 entrée, 1 sortie, 1 poid1 exemple

4 entrée, 1 sortie, 4 poids1 exemple

4 entrée, 3 sorties, 12 poids, 1 exemple

4 entrée, 3 sortie, 12 poids, 2 exemples

=

Page 64: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

• Calculer les nouveaux poids synaptiques après un passe de rétro-propagation pour l’exemple : X = [1, 2], D = [1, 0], T = 1 et η = 0.1

Faire le même exercice mais de forme vectoriel!

Exemple

x0 y0* F

net0

W0

1 ?* =2

1

?

3 entrée, 2 sortie, 6 poids 3 entrée, 2 sortie, 6 poids

x1 y1* F

net1

W1

* =

1

-0.1 0.3

0.4

-0.4

1.5-0.2

0.5 -0.3 0.5

0.50.80.7

Page 65: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

• Calculer les nouveaux poids synaptiques après un passe de rétro-propagation pour l’exemple : X = [1, 2], D = [1, 0], T = 1 et η = 0.1

Propagation Directe...

Exemple

x0 y0* F

net0

W0

1* =2

1

3 entrée, 2 sortie, 6 poids 3 entrée, 2 sortie, 6 poids

x1 y1* F

net1

W1

* =

1

-0.1 0.3

0.4

-0.4

1.5-0.2

0.5 -0.3 0.5

0.50.80.7

0.52

0.89

0.52

0.89

0.62

0.83

Page 66: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

• Calculer les nouveaux poids synaptiques après un passe de rétro-propagation pour l’exemple : X = [1, 2], D = [1, 0], T = 1 et η = 0.1

Retro Propagation (W1)

Exemple

x0 y0* F

net0

W0

3 entrée, 2 sortie, 6 poids 3 entrée, 2 sortie, 6 poids

x1 y1* F’

net1

W1

*=1...46 -...27 ...91

-..12-..10-...6

0.52 0.89-..91

.12

Page 67: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

• Calculer les nouveaux poids synaptiques après un passe de rétro-propagation pour l’exemple : X = [1, 2], D = [1, 0], T = 1 et η = 0.1

Retro Propagation ( x1)

Exemple

x0 y0* F

net0

W0

3 entrée, 2 sortie, 6 poids 3 entrée, 2 sortie, 6 poids

x1 y1* F’

net1

W1

*=0.5

-0.3

0.5 0.5

0.8

0.7 -..91

.12

..36

.12

..13

Page 68: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

• Calculer les nouveaux poids synaptiques après un passe de rétro-propagation pour l’exemple : X = [1, 2], D = [1, 0], T = 1 et η = 0.1

Retro Propagation (W0)

Exemple

x0 y0* F’

net0

W0

3 entrée, 2 sortie, 6 poids 3 entrée, 2 sortie, 6 poids

x1 y1* F’

net1

W1

*=1-….9 -...18 -....9

-...12-...24-...12

1 2...9

..12

Page 69: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Réseaux Multicouches:● Architectures & Avantages● Capacité de représentation

69

Page 70: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Plan de la séance:● Architecture d’un neurone● Apprentissage avec un neurone● Réseaux multicouches● Rétropropagation● Implémentation en numpy

70

Page 71: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Numpy:

71

● Anaconda: https://conda.io/docs/user-guide/install/download.html● Numpy pour les utilisateurs de Matlab:

https://docs.scipy.org/doc/numpy-dev/user/numpy-for-matlab-users.html et http://mathesaurus.sourceforge.net/matlab-numpy.html

● Tutoriel de Numpy: https://docs.scipy.org/doc/numpy-dev/user/quickstart.html● ipython: https://ipython.org/● matplotlib: https://matplotlib.org/

import numpy as np

a = np.ones((3,4)) # matrix 3 rows and 4 columnsb = np.ones((3,4))*7c = a +b # c = (3,4) with all 8s d = np.dot(a,b.T) # d = matrix 3x3 with 28

Page 72: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Perceptron en Numpy:

72

def rectifier(net):return net.clip(0,np.inf)

class perceptron(object):

def __init__(self,n_in,n_out,lr):self.W = np.random.random((n_in,n_out))self.lr = lr

def forward(self,x):self.x = xself.net = np.dot(self.W.T,x)y = rectifier(self.net)return y

def rectifier_back(dy,net):return dy*(net>0)

def backward(self,dy):dnet = rectifier_back(dy,self.net)dx = np.dot(self.W,dy)return dx

def update(self,dy):dw = np.dot(self.x,dy.T)self.W = self.W - self.lr * dw

Page 73: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

Entrainement du perceptron:

73

X = np.random.random((dim_in,n_samples))Y = np.random.random((dim_out,n_samples))

def RMS(Yest,Y):return (0.5*(Yest-Y)**2).mean()

def RMS_back(Yest,Y):return (Yest-Y)/Yest.shape[1]

p1 = perceptron(dim_in, dim_out, lr = 0.1)

for epocs in range(100):Yest=p1.forward(X)E=RMS(Yest,Y)print(“Objective”,E)dy = RMS_back(Yest,Y)p1.update(dy)

Page 74: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 3 -

MPL en Numpy:

74

class MPL3(object):

def __init__(self,n_in,n_h1,n_h2,n_out,lr):self.l0 = perceptron(n_in,nh1,lr)self.l1 = perceptron(n_h1,n_h2,lr)self.l2 = perceptron(n_h2,n_out,lr)self.lr = lr

def forward(self,x):y0 = self.0l.forward(x)y1 = self.l1.forward(y0)y2 = self.l2.lforward(y1)return y2

def backward(self,dy):dx2=self.l2.backward(dy)dx1=self.l2.backward(dx2)dx0=self.l2.backward(dx1)return dx0

def update(self,dy):self.l1.update(dy)dx2=self.l2.backward(dy)self.l1.update(dx2)dx1=self.l1.backward(dx2)self.l1.update(d1)

Page 75: Apprentissage Machine Séance 3 · 2018-02-06 · Cours 3 - Chaque couche est composée par multiples neurones La sortie de chaque neurone d’une couche est l’entrée de la suivant

Marco Pedersoli Cours 5 -

Prochaine séance:● Estimation du gradient● Coefficient d’apprentissage● Momentum● Autres algorithmes

75