0% ont trouvé ce document utile (0 vote)
30 vues48 pages

Cours 4

Transféré par

oussamaelazzouzi03
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
30 vues48 pages

Cours 4

Transféré par

oussamaelazzouzi03
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Traitement des séquences en

utilisant des réseaux de neurones


récurrents

Groupe des étudiants : Licence d’Excellence


Intelligence Artificielle et Ingénierie des Données

Noureddine MOHTARAM
E-Mail : [email protected]
Réseaux de neurones récurrents
(RNN, Recurrent Neural Network)

2 Deep Learning [email protected]


Séquence
▪ Une séquence est une donnée qui suit un ordre bien précis

Source : https://www.coursera.org/lecture/nlp-sequence-models/why-sequence-models-0h7gT

3 Deep Learning [email protected]


Séquence
▪ Une séquence est une donnée qui suit un ordre bien précis

▪ L'ordre d'une séquence doit être conservé au moment


de l'apprentissage et au moment de la prédiction
L'utilisation des MLP ou des
CNN n'est pas possible
▪ Les séquences peuvent avoir des tailles différentes

4 Deep Learning [email protected]


Séquence
▪ Une séquence est une donnée qui suit un ordre bien précis

▪ L'ordre d'une séquence doit être conservé au moment


de l'apprentissage et au moment de la prédiction
L'utilisation des MLP ou des
CNN n'est pas possible
▪ Les séquences peuvent avoir des tailles différentes

Solution

Utilisation des réseaux de neurones


récurrents (RNN : Recurrent Neural Network)

5 Deep Learning [email protected]


RNN (Recurrent Neural Network)
● RNN avec un simple neurone

6 Deep Learning [email protected]


RNN (Recurrent Neural Network)
● RNN avec un simple neurone ● RNN avec plusieurs neurones

7 Deep Learning [email protected]


RNN (Recurrent Neural Network)
● RNN avec un simple neurone ● RNN avec plusieurs neurones

● Une couche de plusieurs RNN

8 Deep Learning [email protected]


RNN (Recurrent Neural Network)
▪ Sortie d'une couche de RNN pour une instance
Fonction d'activation

▪ Sortie d'une couche de RNN pour tous les instances d'un batch

9 Deep Learning [email protected]


Apprentissage d'un RNN
▪ Les RNNs réalisent leur apprentissage via la stratégie backpropagation through time
(BPTT) = similaire qu'un MLP ou un CNN

Fonction de coût

Forward
Backward

10 Deep Learning [email protected]


RNN (Recurrent Neural Network)

● RNN en Keras

Nombre de neurones
dans chaque cellule

model = keras.models.Sequential([
keras.layers.SimpleRNN(1, input_shape =[None, 1])
])

La fonction d'activation utilisée par défaut


est la tangente hyperbolique → Elle résout
le problème de l'explosion et de la
disparition du gradient

11 Deep Learning [email protected]


Flexibilité des RNNs

Seq-to-seq
Exemple : prédire le
future prix d'un stock

12 Deep Learning [email protected]


Flexibilité des RNNs

Seq-to-seq
Exemple : prédire le Seq-to-vec
future prix d'un stock Exemple : score
d'un tweet

13 Deep Learning [email protected]


Flexibilité des RNNs

Seq-to-seq
Exemple : prédire le Seq-to-vec
future prix d'un stock Exemple : score
d'un tweet

Vec-to-seq
Exemple : description
d'une image

14 Deep Learning [email protected]


Flexibilité des RNNs

Seq-to-seq
Exemple : prédire le Seq-to-vec
future prix d'un stock Exemple : score
d'un tweet

Vec-to-seq
Exemple : description Encoder-Decoder
d'une image Exemple : traduction
des phrases

Seq-to-vec Vec-to-seq

15 Deep Learning [email protected]


RNN profond
▪ Un RNN profond est un RNN avec plusieurs couches de cellule

Couches

16 Deep Learning [email protected]


RNN profond

Couches

model = keras.models.Sequential([
keras.layers.SimpleRNN(3, return_sequences = True, input_shape =[ None, 1]),
keras.layers.SimpleRNN(3, return_sequences = True),
keras.layers.Dense(1)
])

17 Deep Learning [email protected]


RNN profond
Nombre de neurones
▪ RNN en Keras dans chaque cellule
Problématique : SimpleRNN n'est pas adapté au traitement des longues
séquences à cause du problème Short-Term Memory

La fonction d'activation utilisée par défaut


▪ Un RNN profond est un RNN avec plusieurs couches est la tangente hyperbolique → Elle résout
de cellule le problème de l'explosion et de la
disparition du gradient

model = keras.models.Sequential([
keras.layers.SimpleRNN(3, return_sequences = True, input_shape =[ None, 1]),
keras.layers.SimpleRNN(3, return_sequences = True),
keras.layers.Dense(1)
])
Solution :
- Utilisation du LSTM (Long short-term memory)

18 Deep Learning [email protected]


Long short-term memory (LSTM)

19 Deep Learning [email protected]


LSTM
▪ La méthode Long Short-Term Memory (LSTM) [1] a été proposée par Sepp Hochreiter et
Jürgen Schmidhuber.
▪ Cellule LSTM :

[1] Hochreiter, Sepp, and Jürgen Schmidhuber. "Long short-term memory." Neural computation 9.8 (1997): 1735-1780.
20 Deep Learning [email protected]
Cellule LSTM
● Le réseau peut apprendre ce qu'il faut stocker dans h(t), ce qu'il faut jeter et ce qu'il faut en lire.

Long-term state

Short-term state

21 Deep Learning [email protected]


Cellule LSTM
Supprime quelques Ajoute quelques Filtrage des mémoires
mémoires mémoires

Long-term state

Short-term state

22 Deep Learning [email protected]


Cellule LSTM
Output gate :
quelle partie
doit être lue

Long-term state

Short-term state
Forget gate :
quelle partie
de la cellule
doit être
supprimée

Input gate :
quelle partie de
g(t) doit être FC = Fully Connected Layer
ajoutée à c(t)
23 Deep Learning [email protected]
Cellule LSTM

24 Deep Learning [email protected]


LSTM en Keras

model = tf.keras.Sequential([
tf.keras.layers.LSTM(32, return_sequences=True, input_shape=[None, 5]),
tf.keras.layers.Dense(14)
])

25 Deep Learning [email protected]


Gated Recurrent Unit (GRU)

26 Deep Learning [email protected]


GRU
▪ Gated Recurrent Unit (GRU) est une variante de LSTM proposée par Cho et al. [1]

[1] Cho, Kyunghyun, et al. "Learning phrase representations using RNN encoder-decoder for statistical machine translation." Empirical Methods in
Natural Language Processing (EMNLP) 2014

27 Deep Learning [email protected]


GRU
▪ Gated Recurrent Unit (GRU) est une variante de LSTM proposée par Cho et al. [1]

[1] Cho, Kyunghyun, et al. "Learning phrase representations using RNN encoder-decoder for statistical machine translation." Empirical Methods in
Natural Language Processing (EMNLP) 2014

28 Deep Learning [email protected]


GRU
▪ Gated Recurrent Unit (GRU) est une variante de LSTM proposée par Cho et al. [1]

[1] Cho, Kyunghyun, et al. "Learning phrase representations using RNN encoder-decoder for statistical machine translation." Empirical Methods in
Natural Language Processing (EMNLP) 2014

29 Deep Learning [email protected]


GRU
▪ Gated Recurrent Unit (GRU) est une variante de LSTM proposée par Cho et al. [1]

[1] Cho, Kyunghyun, et al. "Learning phrase representations using RNN encoder-decoder for statistical machine translation." Empirical Methods in
Natural Language Processing (EMNLP) 2014

30 Deep Learning [email protected]


GRU
▪ Gated Recurrent Unit (GRU) est une variante de LSTM proposée par Cho et al. [1]

GRU a moins de paramètres à apprendre


contrairement à LSTM

[1] Cho, Kyunghyun, et al. "Learning phrase representations using RNN encoder-decoder for statistical machine translation." Empirical Methods in
Natural Language Processing (EMNLP) 2014

31 Deep Learning [email protected]


GRU en Keras

model = keras.models.Sequential([
keras.layers.GRU( 20, return_sequences = True, input_shape =[ None, 1]),
keras.layers.GRU( 20, return_sequences = True),
])

32 Deep Learning [email protected]


1D CNN
▪ Problématique : LSTM et GRU ont un temps chronophage pour l'entraînement

▪ Solution : Réduire la taille de la séquence par un 1D CNN

model = keras.models.Sequential([
keras.layers.Conv1D(filters = 20, kernel_size = 4, strides = 2, padding =" valid", input_shape =[ None, 5]),
keras.layers.GRU(32, return_sequences = True),
tf.keras.layers.Dense(14)
])

33 Deep Learning [email protected]


Traitement automatique du langage naturel

34 Deep Learning [email protected]


Définition
▪ Le Traitement Automatique du Langage Naturel (TALN = NLP : Natural language
processing) est un domaine multidisciplinaire impliquant la linguistique, l'informatique
et l'intelligence artificielle, qui vise à créer des outils de traitement de la langue
naturelle pour diverses applications. [1]

▪ Vers 2017, GoogleTranslate utilisait un LSTM avec 6 couches très larges

35 Deep Learning [email protected]


Préparation des données textuelles
1. Standardization : réduire la taille des données
a. Majuscule → Minuscule
b. Supprime la ponctuation (tout dépend de
l'application envisagée)

36 Deep Learning [email protected]


Préparation des données textuelles
1. Standardization

2. Tokenization : Phrase → mots ou groupe de mots.


Elle peut être effectuée avec l'une des trois
méthodes :
a. Word-level tokenization : sequence models
b. N-gram tokenization : bag-of-words models
c. Character-level tokenization

37 Deep Learning [email protected]


Préparation des données textuelles
1. Standardization

2. Tokenization

3. Indexation du vocabulaire
a. Exemple

38 Deep Learning [email protected]


Préparation des données textuelles
1. Standardization

2. Tokenization

3. Indexation du vocabulaire

4. Encodage One-hot ou Word Embedding

39 Deep Learning [email protected]


Préparation des données textuelles
1. Standardization

2. Tokenization

3. Indexation du vocabulaire

4. Encodage One-hot ou Word Embedding

Apprentissage d'une
représentation de mots

40 Deep Learning [email protected]


Préparation des données textuelles
1. Standardization

2. Tokenization

3. Indexation du vocabulaire

4. Encodage One-hot ou Word Embedding

Apprentissage d'une
représentation de mots

41 Deep Learning [email protected]


Standardization + Tokenization
▪ Vectorisation via TextVectorization layer

from tensorflow.keras.layers import TextVectorization

text_vectorization = TextVectorization(output_mode="int")
dataset = [
"I write, erase, rewrite", - Majuscule → Minuscule
"Erase again, and then",
"A poppy blooms.", - Supprimer la ponctuation
] - Sépare les mots en utilisant l'espace
text_vectorization.adapt(dataset)
vocabulary = text_vectorization.get_vocabulary()
print(vocabulary) # ['', '[UNK]', 'erase', 'write', 'then', 'rewrite', 'poppy', 'i', 'blooms', 'and', 'again', 'a']

Je ne suis pas
un mot Unknown word = out of vocabulary (OOV)
42 Deep Learning [email protected]
Standardization + Tokenization
+ Indexation du vocabulaire
▪ Vectorisation via TextVectorization layer

from tensorflow.keras.layers import TextVectorization

text_vectorization = TextVectorization(output_mode="int")
dataset = [
"I write, erase, rewrite",
"Erase again, and then",
"A poppy blooms.",
]
text_vectorization.adapt(dataset)
vocabulary = text_vectorization.get_vocabulary()
print(vocabulary) # ['', '[UNK]', 'erase', 'write', 'then', 'rewrite', 'poppy', 'i', 'blooms', 'and', 'again', 'a']

test_sentence = "I write, rewrite, and still rewrite again"


encoded_sentence = text_vectorization(test_sentence)
print(encoded_sentence) # tf.Tensor([ 7 3 5 9 1 5 10], shape=(7,), dtype=int64)

43 Deep Learning [email protected]


Standardization + Tokenization
+ Indexation du vocabulaire
▪ Vectorisation via TextVectorization layer

from tensorflow.keras.layers import TextVectorization

text_vectorization = TextVectorization(output_mode="int")
dataset = [
"I write, erase, rewrite", TextVectorization peut
"Erase again, and then", être aussi utilisée
"A poppy blooms.", directement comme
]
text_vectorization.adapt(dataset) une couche d'un
vocabulary = text_vectorization.get_vocabulary() réseau de neurones
print(vocabulary) # ['', '[UNK]', 'erase', 'write', 'then', 'rewrite', 'poppy', 'i', 'blooms', 'and', 'again', 'a'] profond (Exemple)
test_sentence = "I write, rewrite, and still rewrite again"
encoded_sentence = text_vectorization(test_sentence)
print(encoded_sentence) # tf.Tensor([ 7 3 5 9 1 5 10], shape=(7,), dtype=int64)

44 Deep Learning [email protected]


Word Embedding
▪ Word Embedding via Embedding Layer

array([[-0.00931244, 0.03682263, -0.04573409, 0.03624215, -0.03655146],


embedding_layer = tf.keras.layers.Embedding(10, 5) [-0.00114477, -0.03821769, 0.03520611, -0.00974722, 0.00306096],
result = embedding_layer(tf.constant([1, 2, 3])) [ 0.02072425, -0.00217276, -0.03132828, -0.01690926, 0.03033217]],
result.numpy() dtype=float32)

45 Deep Learning [email protected]


Word Embedding
▪ Word Embedding via Embedding Layer

array([[-0.00931244, 0.03682263, -0.04573409, 0.03624215, -0.03655146],


embedding_layer = tf.keras.layers.Embedding(10, 5) [-0.00114477, -0.03821769, 0.03520611, -0.00974722, 0.00306096],
result = embedding_layer(tf.constant([1, 2, 3])) [ 0.02072425, -0.00217276, -0.03132828, -0.01690926, 0.03033217]],
result.numpy() dtype=float32)

On peut utiliser une méthode de "Word Embedding" pré-entraînée sur


une grande base de données (même principe que le transfer Learning) :
- Word2Vec
- Global Vectors for Word Representation (GloVe)
- ...

46 Deep Learning [email protected]


Préparation des données textuelles en Keras
▪ Padding : avoir des séquences de même tailles

raw_inputs = [
[711, 632, 71],
[73, 8, 3215, 55, 927],
[83, 91, 1, 645, 1253, 927],
]

padded_inputs = tf.keras.preprocessing.sequence.pad_sequences(
raw_inputs,
padding="post")
print(padded_inputs)

47 Deep Learning [email protected]


Préparation des données textuelles en Keras
▪ Padding : avoir des séquences de même tailles
▪ Masking : informer le modèle des "token" de "padding" à ignorer

embedding = layers.Embedding(input_dim=5000, output_dim=16, mask_zero=True)


masked_output = embedding(padded_inputs)

48 Deep Learning [email protected]

Vous aimerez peut-être aussi