Introduction aux RNN avec Keras

Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras

David Cecchini

Data Scientist

Qu'est-ce que Keras ?

  • API de haut niveau

  • S'exécute sur TensorFlow 2

  • Facile à installer et à utiliser

$pip install tensorflow

Expérimentation rapide :

from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras

keras.models

keras.models.Sequential

Montre une représentation macro de la classe Sequential des modèles Keras. Chaque couche est ajoutée en séquence de l'entrée à la sortie.

keras.models.Model

Montre une représentation macro de la classe Model des modèles Keras. Cette classe peut avoir plusieurs entrées et plusieurs sorties, ce qui permet des architectures plus complexes.

Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras

keras.layers

  1. LSTM
  2. GRU
  3. Dense
  4. Dropout
  5. Embedding
  6. Bidirectional
Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras

keras.preprocessing

keras.preprocessing.sequence.pad_sequences(texts, maxlen=3)

Exemple de remplissage (padding) de textes. Si le texte a moins de mots que la taille de remplissage, un jeton « 0 » est ajouté au début ; s'il a plus de mots, les derniers sont exclus de la phrase.

Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras

keras.datasets

De nombreux jeux de données utiles

  • Critiques de films IMDB
  • Dépêches Reuters

Et plus encore !

Pour la liste complète et des exemples d'utilisation, voir la documentation Keras

Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras

Créer un modèle

# Importer les modules requis
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# Instancier la classe de modèle
model = Sequential()
# Ajouter les couches
model.add(Dense(64, activation='relu', input_dim=100))
model.add(Dense(1, activation='sigmoid'))
# Compiler le modèle
model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras

Entraîner le modèle

La méthode .fit() entraîne le modèle sur l'ensemble d'entraînement

model.fit(X_train, y_train, epochs=10, batch_size=32)
  1. epochs détermine le nombre de mises à jour des poids
  2. batch_size taille des données à chaque étape
Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras

Évaluation et utilisation du modèle

Évaluer le modèle :

model.evaluate(X_test, y_test)
[0.3916562925338745, 0.89324]

Prédire sur de nouvelles données :

model.predict(new_data)
array([[0.91483957],[0.47130653]], dtype=float32)
Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras

Exemple complet : classification des sentiments IMDB

# Construire et compiler le modèle
model = Sequential()

model.add(Embedding(10000, 128)) model.add(LSTM(128, dropout=0.2)) model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Entraînement
model.fit(x_train, y_train, epochs=5)
# Évaluation
score, acc = model.evaluate(x_test, y_test)
Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras

Passons à la pratique !

Réseaux de neurones récurrents (RNN) pour la modélisation du langage avec Keras

Preparing Video For Download...