40
Philippe Giguère Réseaux Récurrents (RNN) Hiver 2020

Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Philippe Giguère

Réseaux Récurrents(RNN)

Hiver 2020

Page 2: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Pourquoi RNN ?• Traiter des données séquentielles

– séries temporelles

– séquences de pixels

– séquences de mots

• Souvent de longueur variable

• Pas clair d’avance où l’information pertinente est située

2

Image X(1) (2) ( ){ , , , }x x x

vs.

I went to Nepal in 2009

In 2009, I went to Nepal

Page 3: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Exemple textuel

3

I like whisky

Page 4: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Exemple textuel

4

[I, like, whisky]

MLP

h1

(tokenization)

vecteur

Page 5: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Exemple textuel

5

[I, like, whisky]

h1

MLP

h2vecteur

Page 6: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Exemple textuel

6

[I, like, whisky]

h1 h2

MLP

h3vecteur

Page 7: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Exemple textuel

7

[I, like, whisky]

h1 h2 h3

Pas de relation entre les h

Page 8: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Vers le réseau récurrent …

8

[I, like, whisky]

MLP

h1vecteurs

Page 9: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Vers le réseau récurrent …

9

[I, like, whisky]

h1

MLP

h2vecteur

Page 10: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Vers le réseau récurrent …

10

[I, like, whisky]

h1 h2

MLP

h3vecteur

Page 11: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Vers le réseau récurrent …

11

[I, like, whisky]

h1 h2 h3

Maintenant h3 pourra contenir de l'information sur toute la séquence

Page 12: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Modélisation séquentielle idéale

1. Être capable de traiter les séquences de longueur variable

2. Garder la trace des dépendances à long-terme

3. Conserver l’information sur l’ordre

4. Partager les paramètres le long de la séquence

13Adapté de MIT 6.S191

Page 13: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Idée générale

• Mêmes paramètres q (weight sharing)

• Limite le pouvoir de représentation

– régularisation

• Relation f stationnaire : ne change pas selon t

– p. e. règle grammaire indépendante de la position

• Lien avec systèmes dynamiques (GMC, GEL)14

h(t)=f (h(t-1), x(t), q )

x(t)

h(t)

fdélai

Page 14: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Graphe calcul déroulé

15

h(t)=f (h(t-1), x(t), q )

q partagé

h(1)

x(1)

fq

h(2)

x(2)

h(0) h(3)

x(3)

h(4)

x(4)

fq fq fq

Page 15: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Variable cachée h• Résumé sémantique (avec perte) de la

séquence (passée, si causal)

• En lien direct avec la tâche :– p. e. si on cherche des dates, des mots comme mercredi vont influencer h plus que Québec

– backprop fera le travail de trouver la fonction f favorisant cette représentation

• Taille de h influencera la quantité d’information pouvant y être stockée– pourra difficilement résumer À la recherche du

temps perdu de M. Proust (4 215 pages)

– généralisation plus difficile si h est grand16

Page 16: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

RNN universel (vanille)• Utilise des fonctions affines

• tanh comme non-linéarité

• Peut accomplir autant qu’une

machine de Turing

• Variante assez commune

• Défaut : on ne peut pas paralléliser forward/backward pass– doit faire la séquence au complet en sériel

17

h(t) = tanh(Wh(t-1) + Ux(t) + b)

h(t)

x(t)

h(t-1)W

U

o(t)

V

o(t) = Vh(t) + ctanh

Page 17: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

RNN vanille déroulé

19

h(1)

x(1)

h(0)W

U

o(1)

V

tanhh(2)

x(2)

W

U

o(2)

V

tanhh(3)

x(3)

W

U

o(3)

V

tanhh(4)

x(4)

W

U

o(4)

V

tanh

Page 18: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Pourquoi tanh ?

• Non-linéaire

• Toujours dérivable

• Sortie [-1,1] (enlever/ajouter)

• Symétrique

• Pas de biais systématique

– sigmoïde va de [0,1], induit biais

• Autres ?

20

Page 19: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Topologie Feedforward

21adapté de cs231n

CNN

Page 20: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Topologie RNN

22adapté de cs231n

one to many many to one many to many many to many

Image captioning

Classification de sentiment

(texte)

Traduction,Réponse aux

questions(tailles entrée/sortie

variables)

Classification de trames

vidéos

CNN

Page 21: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Sequence-to-sequence

• Architecture many to many

• Généré une séquence à partir d’un résumé C

23

x(1)

Encodeur

x(2) x()

Décodeur

o(1) o(2) o(n)Résumé sémantique C

h(1) h(2) h()

contexte

Page 22: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Sequence-to-sequence

24

x(1)

Encodeur

x(2) x()

Décodeur

o(1) o(2) o(n)Résumé sémantique C

h(1) h(2) h()

approche A : état h(0) du décodeur

Page 23: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Sequence-to-sequence

25

x(1)

Encodeur

x(2) x()

Décodeur

o(1) o(2) o(n)Résumé sémantique C

h(1) h(2) h()

approche B : entrée extra à chaque itération

Page 24: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Sequence-to-sequence

26

x(1)

Encodeur

x(2) x()

Décodeur

o(1) o(2) o(n)Résumé sémantique C

h(1) h(2) h()

approche C : les deux

Page 25: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Exemple de générationavec RNN

• Réseau entraîné à prédire des caractères{e,h,l,o,<end>}

• Entraîné sur hello

27adapté de cs231n h

01000

h1

3.0

1.2

-1.0

0.6

-2.0

.78

.13

.01

.07

.01

softmax

10000

h2

1.7

0.9

4.0

0.3

-1.2

.09

.04

.85

.02

.00

softmax

00100

h3

1.5

0.7

2.7

0.1

-0.6

.19

.09

.65

.05

.02

softmax

00100

h4

0.7

-0.3

-1.3

2.9

0.3

.09

.03

.01

.81

.06

softmax

00010

h

0.3

1.1

0.2

0.4

3.2

.04

.10

.04

.05

.78

softmax

pige e

e

pige l

l

pige l

l

pige o

o

Dis

trib

uti

on

pige <end>

Page 26: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Exemple : entraîné sur Shakespeare

28http://karpathy.github.io/2015/05/21/rnn-effectiveness/

PANDARUS:Alas, I think he shall be come approached and the dayWhen little srain would be attain'd into being never fed,And who is but a chain and subjects of his death,I should not sleep.

Second Senator:They are away this miseries, produced upon my soul,Breaking and strongly should be buried, when I perishThe earth and thoughts of many states.

DUKE VINCENTIO:Well, your wit is in the care of side and that.

Second Lord:They would be ruled after this chamber, andmy fair nues begun out of the fact, to be conveyed,Whose noble souls I'll have the heart of the wars.

Clown:Come, sir, I will make did behold your worship.

VIOLA:I'll drink it.

Sortie :

• Réseau RNN à trois couches

• 512 neurones cachées par couche

• Entraîné sur 4.4 Mo de données texte

Page 27: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Longueur de sortie o()

• Lors de la génération, on doit s’avoir quand arrêter d’échantillonner le RNN

• 3 stratégies :1. Symbole spécial (<END>)

2. Sortie supplémentaire 0-1 (via sigmoïde), qui prédit la fin

3. Sortie qui prédit directement (régression)

29

Page 28: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

RNN bi-directionnel

• Sortie o(t) peut dépendre de toute la séquence (1 à )

• Information pertinente parfois après une entrée x

– ordre des mots dans une langue

• adjectif avant ou après un mot

• langue SVO, SOV, V2, etc…

– reconnaissance de la voix

• coarticulation

– bio-informatique

30

Page 29: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

RNN bi-directionnel

31

h(1)

x(1)

h(2)

x(2)

h(3)

x(3)

h(4)

x(4)

g(1) g(2) g(3) g(4)

o(4)o(3)o(2)o(1)

anticausal

causal

acausal

Page 30: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Longue portée• Influence à longue portée difficile dans RNN

• CNN : champ récepteur croissant en profondeur

• RNN : décroissance exponentielle de l’influence

32

influence sur o(t)

x(t)x(t-1)x(t-2)x(t-3) x(t+1) x(t+2) x(t+3)

RNN unidirectionel

x(t)x(t-1)x(t-2)x(t-3) x(t+1) x(t+2) x(t+3)

RNN bidirectionel

x(t)x(t-1)x(t-2)x(t-3) x(t+1) x(t+2) x(t+3)

Vérité terrain (Impossible avec RNN)

Solution : attention! (+tard)

(pas une fenêtre précise, comme dans CNN)

Page 31: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Gradient et entrainement

Page 32: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Exploding/vanishing gradient

• Poids W partagés

• Exemple simplifié :

34

*

w

h0 a1 h1tanh * a2 h2

tanh * a3 h3tanh

g∝w3 g∝w2* a3g∝w

Si w>1 : gradient exploseSi w<1 : gradient évanescent

Pour un réseau récurrent linéaire (simplification) : ( ) T ( 1)t th W h

T=Q QW Décomposition en éléments propres

( ) T (0)t th Q Qh si valeur propre l > 1 : vecteur propre explose

si valeur propre l < 1 : vecteur propre évanescent

Page 33: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Gradient clipping pour entraînement RNN

35

tiré

de

: I. G

oodf

ello

wet

al.

Dee

pL

earn

ing

avec clipping

sans clipping

la norme du gradient

if g vv

gg

les entrées du gradient, individuellement

88493.4

0.3

...

9948423

g

0.3

...

v

v

(similaire comme scaling par paramètre, lors de l’optimisation)

• Solution, clipper :

• Ravins typique dans les RNN :

• Si NaN, bouger au hasard d’une magnitude v

Page 34: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Calcul du gradient sur graphe déroulé

37

h0 h1 h2 h3 hfW fW fW

x1 x2 x3W

y

y3y2y1

adapté de cs231n

L3L2L1 L

LMany-to-many

Page 35: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Calcul du gradient sur graphe déroulé

38

h0 h1 h2 h3 hfW fW fW

x1 x2 x3W

y

y3y2y1

adapté de cs231n

L3L2L1 L

LMany-to-many

Page 36: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Calcul du gradient sur graphe déroulé

39

h0 h1 h2 h3 hfW fW fW

x1 x2 x3W

y

adapté de cs231n

L

LMany-to-one

Moins d’entrées du gradient dans le graphe + vanishing gradient : entraînement plus difficile.

Page 37: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Backprop through time (BPTT)

• Calcule la séquence au complet

40adapté de cs231n

forward pass

backprop

Page 38: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Truncated BPTT

41adapté de cs231n

forward pass

backprop

perte

L

Effectue BPTT sur des segments de la séquence

Page 39: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Truncated BPTT

42adapté de cs231n

perte

L

forward pass

backprop

Page 40: Réseaux Récurrents (RNN)pgiguere/cours/DeepLearning/2020/07-RNN-202… · •Si NaN, bouger au hasard d’une magnitude v. Calcul du gradient sur graphe déroul

Truncated BPTT

43adapté de cs231n

perte

L

forward pass

backprop