Comprendre les modèles séquentiels

Traduction automatique avec Keras

Thushan Ganegedara

Data Scientist and Author

Entrées sérielles et modèles séquentiels

  • Une phrase est une entrée en série temporelle
    • Le mot courant dépend des mots précédents
    • P. ex. Il est allé à la piscine pour une…
  • L'encodeur/décodeur utilise un modèle d'apprentissage automatique
    • Modèles qui apprennent à partir d'entrées sérielles
    • Ces modèles sont des modèles séquentiels
Traduction automatique avec Keras

Modèles séquentiels

  • Modèles séquentiels
    • Parcourent l'entrée et produisent une sortie à chaque pas de temps

Architecture d'un modèle séquentiel

Traduction automatique avec Keras

Encodeur comme modèle séquentiel

  • GRU – unité récurrente à portes

Unités récurrentes à portes

Traduction automatique avec Keras

Introduction à la couche GRU

Au pas de temps 1, la couche GRU :

  • Consomme l'entrée « We »
  • Consomme l'état initial (0,0)
  • Produit le nouvel état (0,8 ; 0,3)

GRU 1

Traduction automatique avec Keras

Introduction à la couche GRU

Au pas de temps 2, la couche GRU :

  • Consomme l'entrée « like »
  • Consomme l'état (0,8 ; 0,3)
  • Produit le nouvel état (0,5 ; 0,9)

L'état caché représente la « mémoire » de ce que le modèle a vu

GRU 2

Traduction automatique avec Keras

Rappel sur Keras (API fonctionnelle)

  • Keras a deux objets clés : Layer et Model.
  • Couche d'entrée
    • inp = keras.layers.Input(shape=(...))
  • Couche cachée
    • layer = keras.layers.GRU(...)
  • Sortie
    • out = layer(inp)
  • Modèle
    • model = Model(inputs=inp, outputs=out)
Traduction automatique avec Keras

Comprendre la forme des données

  • Les données séquentielles sont 3D
    • Dimension lot (p. ex. groupes de phrases)
    • Dimension temps – longueur de séquence
    • Dimension d'entrée (p. ex. longueur du vecteur onehot)
  • Forme d'entrée d'un GRU
    • (Lot, Temps, Entrée)
    • (taille du lot, longueur de séquence, longueur onehot)

Données d'entrée

Traduction automatique avec Keras

Implémenter des GRU avec Keras

Définir des couches Keras

inp = keras.layers.Input(batch_shape=(2,3,4))
gru_out = keras.layers.GRU(10)(inp)

Définir un modèle Keras

model = keras.models.Model(inputs=inp, outputs=gru_out)
Traduction automatique avec Keras

Implémenter des GRU avec Keras

Prédire avec le modèle Keras

x = np.random.normal(size=(2,3,4))
y = model.predict(x)
print("shape (y) =", y.shape, "\ny = \n", y)
shape (y) = (2, 10) 
y = 
[[ 0.2576233   0.01215531  ... -0.32517594  0.4483121 ],
 [ 0.54189587 -0.63834655  ... -0.4339783   0.4043917 ]]
Traduction automatique avec Keras

Implémenter des GRU avec Keras

Un GRU qui accepte un nombre arbitraire d'échantillons par lot

inp = keras.layers.Input(shape=(3,4))
gru_out = keras.layers.GRU(10)(inp)
model = keras.models.Model(inputs=inp, outputs=gru_out)
x = np.random.normal(size=(5,3,4))
y = model.predict(x)
print("y = \n", y)
y = 
 [[-1.3941444e-02 -3.3123985e-02 ... 6.5081201e-02  1.1245312e-01]
 [ 1.1409521e-03  3.6983326e-01 ... -3.4610277e-01 -3.4792548e-01]
 [ 2.5911796e-01 -3.9517123e-01 ... 5.8505309e-01  3.6908010e-01]
 [-2.8727052e-01 -5.1150680e-02 ... -1.9637148e-01 -1.5587148e-01]
 [ 3.1303680e-01  2.3338445e-01 ... 9.1499090e-04 -2.0590121e-01]]
Traduction automatique avec Keras

L'argument return_state de la couche GRU

inp = keras.layers.Input(batch_shape=(2,3,4))
gru_out2, gru_state = keras.layers.GRU(10, return_state=True)(inp)
print("gru_out2.shape = ", gru_out2.shape)
print("gru_state.shape = ", gru_state.shape)
gru_out2.shape =  (2, 10)
gru_state.shape =  (2, 10)

Paramètre return_state de GRU

Traduction automatique avec Keras

L'argument return_sequences de la couche GRU

inp = keras.layers.Input(batch_shape=(2,3,4))
gru_out3 = keras.layers.GRU(10, return_sequences=True)(inp)
print("gru_out3.shape = ", gru_out2.shape)
gru_out3.shape =  (2, 3, 10)

Paramètre return_sequences de GRU

Traduction automatique avec Keras

Passons à la pratique !

Traduction automatique avec Keras

Preparing Video For Download...