Réseaux Récurrents
(RNN)
Hiver 2020 Philippe Giguère
Pourquoi RNN ?
• Traiter des données séquentielles
(1) (2) ( )
Image X vs. {x , x , ,x }
– 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
I went to Nepal in 2009
In 2009, I went to Nepal
2
Exemple textuel
I like whisky
3
Exemple textuel
vecteur h1
MLP
(tokenization) [I, like, whisky]
4
Exemple textuel
vecteur h1 h2
MLP
[I, like, whisky]
5
Exemple textuel
vecteur h1 h2 h3
MLP
[I, like, whisky]
6
Exemple textuel
h1 h2 h3
Pas de relation entre les h
[I, like, whisky]
7
Vers le réseau récurrent …
vecteurs h1
MLP
[I, like, whisky]
8
Vers le réseau récurrent …
vecteur h1 h2
MLP
[I, like, whisky]
9
Vers le réseau récurrent …
vecteur h1 h2 h3
MLP
[I, like, whisky]
10
Vers le réseau récurrent …
h1 h2 h3
Maintenant h3 pourra contenir de
l'information sur toute la séquence
[I, like, whisky]
11
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
13
Adapté de MIT 6.S191
Idée générale h(t)
h(t)=f (h(t-1), x(t), q ) f
délai
x(t)
• 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
Graphe calcul déroulé
h(t)=f (h(t-1), x(t), q )
q partagé
h(0) h(1) h(2) h(3) h(4)
fq fq fq fq
x(1) x(2) x(3) x(4)
15
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 grand
16
RNN universel (vanille)
• Utilise des fonctions affines
• tanh comme non-linéarité o(t)
h(t) = tanh(Wh(t-1) + Ux(t) + b) V
W
o(t) = Vh(t) +c h(t-1) h(t)
tanh
• Peut accomplir autant qu’une U
machine de Turing x(t)
• 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
RNN vanille déroulé
o(1) o(2) o(3) o(4)
V V V V
W W W W
h(0) h(1) h(2) h(3) h(4)
tanh tanh tanh tanh
U U U U
x(1) x(2) x(3) x(4)
19
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
Topologie Feedforward
CNN
21
adapté de cs231n
Topologie RNN
CNN one to many many to one many to many many to many
Image Classification Traduction, Classification
captioning de sentiment Réponse aux de trames
(texte) questions vidéos
(tailles entrée/sortie
variables) 22
adapté de cs231n
Sequence-to-sequence
• Architecture many to many contexte
• Généré une séquence à partir d’un résumé C
Décodeur
Résumé sémantique C o(1) o(2) … o(n)
…
h(1) h(2) h ( ) …
x(1) x(2) …
x()
Encodeur 23
Sequence-to-sequence
Décodeur
Résumé sémantique C o(1) o(2) … o(n)
…
h(1) h(2) h ( ) …
x(1) x(2) …
x() approche A : état h(0) du
décodeur
Encodeur 24
Sequence-to-sequence
Décodeur
Résumé sémantique C o(1) o(2) … o(n)
…
h(1) h(2) h ( ) …
x(1) x(2) …
x() approche B : entrée
extra à chaque itération
Encodeur 25
Sequence-to-sequence
Décodeur
Résumé sémantique C o(1) o(2) … o(n)
…
h(1) h(2) h ( ) …
x(1) x(2) …
x() approche C : les deux
Encodeur 26
Exemple de pige e pige l pige l pige o pige <end>
génération
Distribution
.78 .09 .19 .09 .04
.13 .04 .09 .03 .10
.01 .85 .65 .01 .04
avec RNN .07
.01
.02
.00
.05
.02
.81
.06
.05
.78
softmax softmax softmax softmax softmax
3.0 1.7 1.5 0.7 0.3
• Réseau entraîné à 1.2 0.9 0.7 -0.3 1.1
prédire des caractères -1.0 4.0 2.7 -1.3 0.2
0.6 0.3 0.1 2.9 0.4
{e,h,l,o,<end>} -2.0 -1.2 -0.6 0.3 3.2
• Entraîné sur hello
h1 h2 h3 h4 h
0 1 0 0 0
1 0 0 0 0
0 0 1 1 0
0 0 0 0 1
0 0 0 0 0
adapté de cs231n h e l l o 27
Exemple : entraîné sur Shakespeare
Sortie :
PANDARUS:
Alas, I think he shall be come approached and the day
When little srain would be attain'd into being never fed,
• Réseau RNN à And who is but a chain and subjects of his death,
I should not sleep.
trois couches
• 512 neurones Second Senator:
They are away this miseries, produced upon my soul,
cachées par Breaking and strongly should be buried, when I perish
The earth and thoughts of many states.
couche DUKE VINCENTIO:
• Entraîné sur 4.4 Well, your wit is in the care of side and that.
Mo de données Second Lord:
They would be ruled after this chamber, and
texte my 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.
28
[Link]
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
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
RNN bi-directionnel
acausal o(1) o(2) o(3) o(4)
anticausal g(1) g(2) g(3) g(4)
causal h(1) h(2) h(3) h(4)
x(1) x(2) x(3) x(4)
31
Longue portée
• Influence à longue portée difficile dans RNN
• CNN : champ récepteur croissant en profondeur
• RNN : décroissance exponentielle de l’influence
(pas une fenêtre précise,
influence sur o(t) comme dans CNN)
RNN
unidirectionel
x(t-3) x(t-2) x(t-1) x(t) x(t+1) x(t+2) x(t+3)
RNN
bidirectionel
x(t-3) x(t-2) x(t-1) x(t) x(t+1) x(t+2) x(t+3)
Vérité terrain Solution : attention! (+tard)
(Impossible
avec RNN)
x(t-3) x(t-2) x(t-1) x(t) x(t+1) x(t+2) x(t+3) 32
Gradient et entrainement
Exploding/vanishing gradient
• Poids W partagés
• Exemple simplifié : Si w>1 : gradient explose
w Si w<1 : gradient évanescent
* tanh * tanh * tanh *
h0 a1 h1 a2 h2 a3 h3 a3
g∝w3 g∝w2 g∝w
Pour un réseau récurrent linéaire (simplification) : h ( t ) W T h ( t 1)
Décomposition en éléments propres W =QQ T
h (t ) Q T t Qh (0) si valeur propre l > 1 : vecteur propre explose
si valeur propre l < 1 : vecteur propre évanescent
34
Gradient clipping pour entraînement RNN
tiré de : I. Goodfellow et al. Deep Learning
• Ravins typique dans les RNN :
sans
clipping avec
clipping
• Solution, clipper :
la norme du gradient les entrées du gradient, individuellement
if g v 88493.4 v
0.3 0.3 (similaire comme
v g scaling par paramètre,
g ... ... lors de l’optimisation)
g
9948423 v
• Si NaN, bouger au hasard d’une magnitude v 35
Calcul du gradient sur graphe déroulé
Many-to-many L
y1 L1 y2 L2 y3 L3 y L
h0 fW h1 fW h2 fW h3 … h
x1 x2 x3
W
37
adapté de cs231n
Calcul du gradient sur graphe déroulé
Many-to-many L
y1 L1 y2 L2 y3 L3 y L
h0 fW h1 fW h2 fW h3 … h
x1 x2 x3
W
38
adapté de cs231n
Calcul du gradient sur graphe déroulé
Many-to-one L
Moins d’entrées du gradient dans le
graphe + vanishing gradient :
entraînement plus difficile. y L
h0 fW h1 fW h2 fW h3 … h
x1 x2 x3
W
39
adapté de cs231n
Backprop through time (BPTT)
• Calcule la séquence au complet
forward pass
backprop
40
adapté de cs231n
Truncated BPTT
Effectue BPTT sur des
perte
segments de la séquence
L
forward pass
backprop
41
adapté de cs231n
Truncated BPTT
perte
L
forward pass
backprop
42
adapté de cs231n
Truncated BPTT
perte
L
forward pass
backprop
43
adapté de cs231n