Deep Learning
Apprentissage Profond
Dr. Sana Hamdi [Link]@[Link]
RNN
Les Réseaux de neurones Récurrents
3
Motivation
Introduction
• x w a y
• Bloc basique: y = g(a) et a = w*x+b
• a = transformation linéaire
• g = opération non-linéaire sur chaque élément (tanh, relu, etc..)
Sana Hamdi 4
Réseau Multicouche
x wi-1 ai-1 wi ai wi+1 ai+1 y
• Même entrée et sortie pour tous les exemples (même forme et même taille)
• Simple: composition des blocs basiques
• On apprend les paramètres avec rétro-propagation
Efficace pour les données séquentielles ?
Sana Hamdi 5
Données Séquentielles
Les éléments (souvent de vecteurs multidimensionnels) se succèdent dans le
temps :
• Cadres d’une vidéo
• Echantillons d’un signal audio
• Série temporelle financière (prix, bourse)
• Lettres dans un mot, mots dans une phrase
• Etc.
Sana Hamdi 6
Exemples d’application
• Speech recognition The quick brown fox jumped over the lazy dog
• Music generation
There is nothing to like in
• Sentiment Classification this movie.
• DNA sequence analysis AGCCCCTGTGAGGAA AGCCCCTGTGAGGAA
• Machine translation Voulez-vous chanter avec moi? Do you want to sing with me?
• Video activity recognition Running
• Name Entity recognition Yesterday, Harry Potter met Yesterday, Harry Potter met Hermione Granger
Hermione Granger.
Sana Hamdi cours d’Andrew Ng 7
Pourquoi pas l’approche directe?
• Entrées/Sorties de dimension différentes pour les éléments d’un seul training set
• Séquence longues, chaque élément de la séquence est un vecteur de dimension élevée
• Pas de transfert/partage de features appris à des positions différentes dans la séquence
(effet de mémoire dans la séquence)
Sana Hamdi 8
Exemple textuel
He
X1
likes
X2
pets
X3
Sana Hamdi 9
Exemple textuel
subject
y1
way
a1
wxa
[ He X1
likes
X2
pets ]
X3
Sana Hamdi 10
Exemple textuel
subject verb
y1 y2
way way
a1 a2
wW
xa
W
wxa
[ He X1
likes
X2
pets ]
X3
Sana Hamdi 11
Exemple textuel
subject verb
y1 y2 y3
way way way
a1 a2 a3 Pas de contexte: chaque
décision est prise
indépendamment!
wxa wxa wxa
[ He X1
likes
X2
pets ]
X3
Sana Hamdi 12
Vers le réseau récurrent …
subject verb object
y1 y2 y3
way way way
a1 a2 a3
waa waa
wxa wxa wxa
[ He X1
likes
X2
pets ]
X3
Sana Hamdi 13
Exemple textuel
a1 a2 a3
Maintenant a3 pourra contenir de l'information
sur toute la séquence
[ He
X1
likes
X2
pets ]
X3
Sana Hamdi 14
15
Réseaux de Neurones Récurrents
Modélisation des séquences
1. Être capable de traiter les séquences de longueur variable:
x1, x2, x3,…, xt-1, xt, xt+1, …
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
Sana Hamdi 16
Modélisation des séquences
Fonctions qui dépendent pas seulement de leur entrée mais aussi des entrées précédentes
conduisent a des implémentations complexes.
À chaque instant t, le passage vers l’avant (forward pass) est modélisé par les équations:
yt = g1(way at+by)
at = g2(wxa xt + waa at-1 +ba)
Où wxa, waa , way , ba et by sont des coefficients indépendants du temps et où g1 et g2
sont des fonctions d'activation.
Sana Hamdi 17
Architecture d’un RNN traditionnel
Sana Hamdi 18
Architecture d’un RNN traditionnel
y1 = g1(way a1+by)
a<1>
a1 = tanh(wxa x1 + waa a0 +ba)
tanh
Sana Hamdi 19
Architecture d’un RNN traditionnel
• La tème cellule n’est rien d’autre qu’une couche dense de taille R, dont l’entrée
est la concaténation de xt (de taille M) et at-1 (de taille R). La fonction
d’activation classique utilisée pour les cellules du RNN est la tangente
hyperbolique tanh.
• Le modèle prend en entrée un tableau de N séquences, chacune de
longueur T éléments (mots par exemple), où chaque élément est un vecteur
numérique de taille M.
Sana Hamdi 20
Architecture d’un RNN traditionnel
• at = tanh( WT * concat (xt, at-1) + b )
• où W et b sont les poids appris par le modèle :
W est une matrice de taille (R + M) x R
b un vecteur de taille R
Sana Hamdi 21
Architecture d’un RNN traditionnel à deux
couches
Sana Hamdi 22
Avantages
• Possibilité de prendre en compte des entrées de différentes tailles
• La taille du modèle n'augmente pas avec la taille de l'entrée
• Les calculs prennent en compte les informations antérieures
• Les coefficients (les poids) sont indépendants du temps
Sana Hamdi 23
Inconvénients
• Le temps de calcul est long
• Difficulté d'accéder à des informations d'un passé lointain (modèle à
mémoire courte)
• Impossibilité de prendre en compte des informations futures
Sana Hamdi 24
25
Retro-propagation temporelle
Fonction de perte
• Dans le contexte des RNN, la fonction de perte globale L prend en compte
la perte à chaque temps t de la manière suivante :
1 𝑇 <t>(ŷ<t>, y<t>)
L(ŷ, y) = 𝑡=1 L
𝑇
1 𝑇 <t> <t>))+(1−y <t>)log((1−ŷ<t>)))
= 𝑡=1 −(y log(ŷ
𝑇
Sana Hamdi 26
Rétro-propagation temporelle
L<1> L<2> L<t> L<t+1>
Back-propagation through time (BPTT)
𝑇
𝜕𝐿 1 𝜕L<t>(ŷ<t>, y<t>)
=
𝜕𝑤 𝑇 𝜕𝑤
Sana Hamdi 𝑡=1 27
Rétro-propagation temporelle
Sachant que:
• a<1>=tanhW(x1, a<0>)
• a<2>=tanhW(x2, a<1>) =tanhW(x2, tanhW(x1, a<0>))
• a<3>=tanhW(x3, a<2>) =tanhW(x3, tanhW(x2, tanhW(x1, a<0>))
• .........
Sana Hamdi 28
29
Topologies RNN
Un à un: Tx=Ty =1
𝑦
• Réseau de neurones
Traditionnel
Sana Hamdi 30
Un à plusieurs: Tx=1, Ty>1
Exemple:
• Génération de la musique
• Sous-titrage des images
Sana Hamdi 31
Plusieurs à un: Tx>1, Ty=1
Positive
Exemple:
• Catégorie d’une phrase
• Classification des sentiments
[I like pets ]
Sana Hamdi 32
Plusieurs à Plusieurs: Tx= Ty
subject verb object
Exemple:
• Étiquetage de chaque partie de la phrase
• Reconnaissance d’entité
[I like pets ]
Sana Hamdi 33
Plusieurs à Plusieurs: Tx≠Ty
Exemple: Ty = 5 [ il aime les animaux domestiques]
• Traduction automatique
[He likes pets ] Tx =3
Sana Hamdi 34
Plusieurs à Plusieurs: Tx≠Ty
Exemple: Ty = 5 [ il aime les animaux domestiques]
• Traduction automatique
Encodeur
Décodeur
[He likes pets ] Tx =3
Sana Hamdi 35
36
Problèmes des gradients
Problèmes des gradients
a1
• On peut penser un RNN comme: g(...g(g(g(x0,a0),x1),x2)...,xt)
○ Si wa>1 on peut avoir une explosion du gradient g
○ Si wa<1 on a une disparition du gradient
Sana Hamdi 37
Problème de l'explosion du gradient
• L'augmentation très rapide des valeurs des gradients pendant la rétro-propagation
entraînant un dépassement de la capacité de la représentation interne des nombres et
l'arrêt de l'apprentissage.
• Solutions :
Meilleures techniques d'initialisation
Le choix de fonctions d'activation non saturantes comme la fonction linéaire rectifiée (ReLU)
La normalisation par lots
L'écrêtage de gradient (gradient clipping): imposer un seuil sur les valeurs que les gradients
peuvent prendre.
Sana Hamdi 38
Problème de disparition de gradient
• Diminution très rapide des valeurs des gradients pendant la rétro-
propagation entraînant l'annulation du gradient et l'arrêt de l'apprentissage.
• Cause : calcul des dérivées des fonctions composées (chain rule) qui conduit
à la multiplication de beaucoup de valeurs proches de zéro.
la fonction sigmoide et sa dérivée la fonction tanh et sa dérivée
Sana Hamdi 39
Problème de disparition de gradient
• La mise à jour par descente de gradient ne modifie que très peu les poids des connexions de
couches inférieures : w:=w–α⋅dw
RNN peut facilement oublier des données un petit peu anciennes (ou des mots assez éloignés du
mot courant dans un texte) lors de la phase d’apprentissage: sa mémoire est courte.
• Exemple:
1. This restaurant which was opened last year by my aunt and my dad …….. serves authentic
Chinese food.
2. These restaurants which were opened last year by my aunt and my dad…… serve authentic
Indian food.
• Ces dépendances à long terme ne sont pas prises en consideration par l’architecture RNN de
base .
Sana Hamdi 40
Vers une meilleure architecture
• Les LSTM et GRU ont été créés comme méthodes permettant de gérer
efficacement la mémoire à court et long terme grâce à leurs systèmes de
portes.
• Une cellule (neurone) d’un RNN est finalement très simple (on concatène
deux vecteurs puis on applique tanh dessus), ce n’est pas le cas du LSTM et
du GRU.
Sana Hamdi 41
42
LSTM
LSTM
• Long Short-Term Memory, est une cellule composée de trois « portes » : ce sont des
zones de calculs qui régulent le flot d’informations (en réalisant des actions
spécifiques). On a également deux types de sorties (nommées états).
o Forget gate (porte d’oubli)
o Input gate (porte d’entrée)
o Output gate (porte de sortie)
o Hidden state (état caché)
o Cell state (état de la cellule, mémoire)
Sana Hamdi 43
Opérations interne dans une cel LSTM
Sana Hamdi 44
Opérations interne dans une cel LSTM
Sana Hamdi 45
Opérations interne dans une cel LSTM
Sana Hamdi 46
Les poids liés aux portes
• Les entrées de chaque porte sont pondérées par des poids liés aux portes
ainsi que par un biais. On a 4 matrices de poids (leurs dimensions dépendent
des dimensions de at−1 et xt) :
Wf : pondère l’entrée de la porte d’oubli (forget gate)
Wi : pondère l’entrée de la porte d’entrée (input gate)
WC : pondère les données qui vont se combiner à la porte
d’entrée pour mettre à jour l’état de la cellule (cell state)
Wo : pondère l’entrée de la porte de sortie (output gate)
Cellule LSTM
Sana Hamdi 47
Porte d’oubli (forget gate)
• Cette porte décide de quelle information doit être conservée ou jetée
• L’information de l’état caché précédent est concaténé à la donnée en entrée
puis on y applique la fonction sigmoïde afin de normaliser les valeurs entre 0
et 1. ft = σ(wf[at-1, xt]+bf)
• Si la sortie de la sigmoïde est proche de 0, cela signifie que l’on doit oublier
l’information et si on est proche de 1 alors il faut la mémoriser pour la
suite.
Sana Hamdi 48
Fonctionnement de la porte d’oubli
ct-1 previous cell state
ft forget gate output
ft
at-1 at-1, xt
Sana Hamdi xt 49
Porte d’entrée (input gate)
• La porte d’entrée a pour rôle d’extraire l’information de la donnée courante: on va
appliquer en parallèle une sigmoïde et une tanh aux deux données concaténées.
• Sigmoïde va renvoyer un vecteur pour lequel une coordonnée proche de 0 signifie
que la coordonnée en position équivalente dans le vecteur concaténé n’est pas
importante. A l’inverse, une coordonnée proche de 1 sera jugée ''importante'':
it = σ(wi[at-1, xt]+bf)
• Tanh va simplement normaliser les valeurs (les écraser) entre -1 et 1 pour éviter les
problèmes de surcharge de l’ordinateur en calculs. ĉt = tanh(wC[at-1, xt]+bC)
• Le produit des deux permettra donc de ne garder que les informations importantes,
les autres étant quasiment remplacées par 0
Sana Hamdi 50
Fonctionnement de la porte d’entrée
ct-1 previous cell state
it x ĉ t
ft ft
forget gate output
it ĉt
it input gate output
at-1,xt at-1,xt at-1,xt
ĉt candidate
Sana Hamdi 51
Etat de la cellule (cell state)
• L’état de la cellule se calcule assez simplement à partir de la porte d’oubli et de la
porte d’entrée
1. On multiplie coordonnée à coordonnée la sortie de l’oubli avec l’ancien état de la
cellule. Cela permet d’oublier certaines informations de l’état précédent qui ne
servent pas pour la nouvelle prédiction à faire.
2. On additionne le tout (coordonnée à coordonnée) avec la sortie de la porte
d’entrée, ce qui permet d’enregistrer dans l’état de la cellule ce que le LSTM (parmi
les entrées et l’état caché précédent) a jugé pertinent.
ct= (ct-1 * ft) + (it * ĉt )
Sana Hamdi 52
Mise à jour de l’état de la cellule d’un LSTM
ct-1 ct-1 ct-1 x ft ct
previous cell state
it x ĉ t
ft ft
forget gate output
it input gate output
at-1,xt
ĉt candidate
ct new cell state
Sana Hamdi 53
Porte de sortie (output gate)
• La porte de sortie doit décider de quel sera le prochain état caché at, qui contient
des informations sur les entrées précédentes du réseau et sert aux prédictions
at= ot * tanh(ct)
• Le nouvel état de la cellule calculé juste avant est normalisé entre -1 et 1 grâce à
tanh: tanh(ct)
• Le vecteur concaténé de l’entrée courante avec l’état caché précédent passe dans une
fonction sigmoïde dont le but est de décider des informations à conserver (proche
de 0 signifie que l’on oublie, et proche de 1 que l’on va conserver cette coordonnée
de l’état de la cellule). ot = σ(wo[at-1, xt]+bo)
Sana Hamdi 54
Fonctionnement de la porte de sortie
ft ct
forget gate output
it input gate output
ct ot at
new cell state
ot output gate output at-1,xt
at hidden state
Sana Hamdi 55
56
BiLSTM
BiLSTM
• Contrairement au LSTM standard, pour le BiLSTM (LSTM bidirectionnel),
l'entrée circule dans les deux sens et il est capable d'utiliser les informations
des deux côtés.
• BiLSTM ajoute une couche LSTM supplémentaire, qui inverse le sens du flux
d'informations.
la séquence d'entrée est renvoyée dans la couche LSTM supplémentaire.
Ensuite, les sorties des deux couches LSTM sont combinées de plusieurs
manières (la moyenne, la somme, la multiplication ou la concaténation).
Sana Hamdi 57
Illustration BiLSTM
Sana Hamdi 58
Intérêts
« Apple is something that… » Apple peut référer à un fruit ou à la société Apple.
LSTM ne sait pas ce que signifie "Apple", car il ne connaît pas le contexte du futur.
En revanche, BiLSTM aura un output différent pour chaque mot de la séquence
dans ces deux phrases :
« Apple is something that competitors simply cannot reproduce »
« Apple is something that I like to eat »
Sana Hamdi 59
60
GRU
GRU
• Gated Recurrent Unit dispose de deux portes et un état en sortie :
o Reset gate (porte de réinitialisation)
o Update gate (porte de mise à jour)
o Cell state (état de la cellule)
Cellule GRU
Sana Hamdi 61
Porte de reset (reset gate)
• Cette porte sert à contrôler combien d’information passée le réseau doit
oublier.
• L’état caché précédent, concaténé avec les données d’entrée, passe par une
sigmoïde (pour ne conserver que les coordonnées pertinentes) puis est
multiplié par l’ancien état caché : on n’en conserve donc que les coordonnées
importantes (telles qu’elles) de l’état précédent (on a donc perdu une partie
de l’état précédent dans cette porte).
Sana Hamdi 62
Porte de mise à jour (update gate)
• Cette porte décide quelle partie de l'état caché précédent at−1 doit être mise à
jour par l'état caché proposé.
• Les données d’entrées et l’ancien état caché sont concaténés et passent par
une fonction sigmoïde dont le rôle est de déterminer quelles sont les
composantes importantes.
Sana Hamdi 63
Sortie du réseau GRU
L’état caché précédent (partiellement effacé par la porte de reset) est combiné
avec l’entrée du réseau et normalisé par un tanh entre -1 et 1. On vient ensuite
annuler toutes ses coordonnées jugées “inutiles pour les prédictions” (grâce à la
sortie de la porte de mise à jour), puis on y ajoute les coordonnées de l’état
caché précédent jugées “inutiles” (en ayant, cette fois, annulé toutes les
coordonnées pertinentes).
Sana Hamdi 64
GRU
Sana Hamdi 65
GRU vs LSTM
Avantages GRU :
• Demandent moins de ressources que les LSTM
• Convergent plus vite
• Performances comparables avec LSTM
Sana Hamdi 66
GRU vs LSTM
• Avantages LSTM :
• Capacité à conserver des informations à long terme : Le LSTM est
conçu avec une porte d'oubli spécifique, ce qui lui permet de conserver les
informations sur de longues séquences temporelles.
• Flexibilité dans le contrôle des informations : Le LSTM a des portes
séparées pour contrôler l'oubli, l'entrée et la sortie d'informations, ce qui
permet un contrôle plus fin sur le flux d'informations dans le réseau.
Sana Hamdi 67
GRU vs LSTM
• Si la tâche est relativement simple et ne nécessite pas une mémoire à long
terme importante, le GRU peut être une option plus appropriée en raison de
sa simplicité architecturale et de ses calculs plus légers.
• En revanche, si la tâche exige de capturer des dépendances à long terme dans
les données, comme dans la traduction automatique ou la génération de texte,
le LSTM peut être préférable pour sa capacité à conserver des informations à
long terme.
Sana Hamdi 68