03. Les réseaux récurrents

Seq 05 : Stratégies d’évaluation des modèles et Données creuses et de type textuelles (Embedding)

https://www.youtube.com/watch?v=_zpguGC19UM&list=PLlI0-qAzf2Sa6agSVFbrrzyfNkU5--6b_&index=6

Stratégies d’évaluation des modèles

  • Introduction d’un set de donnée de validation en plus du set de test et de training
    • si on veut améliorer un modèle et qu’on utilise les données de test pour valider le modèle, on introduit un biais
    • on introduit donc un set de validation ou set de dev.
    • Cf Train / Dev / Test sets
  • Finding the right metric (pour évaluer de la pertinance des résultats)
    • quantitatifs vs qualitatifs

Données creuses / textuelles (Embedding)

How to feed a neural network with text ?

  • « I’ve never seen a movie like this before. »
  • How to build a descriptor for this kind of data (text, DNA, …)?

Solution 1 : one hot vector

Solution 2 : Using embedding

Contextual embedding - Keras

Pour par exemple avoir une représentation dense spécialisée dans la critique de cinéma, car construit avec un jeu d’entrainement dédié

Global embedding

Références dans Coursera :

Live coding

Guess whether a film review is positive or not based on the analysis of the text (from IMDB)

Deux versions:

  • Guess whether a film review is positive or not based on the analysis of the text, using One-Hot encoding
  • Guess whether a film review is positive or not based on the analysis of the text, using Keras-embedding.

Seq 06 : Quand les données sont des séquences, les réseaux récurrents (RNN)

https://www.youtube.com/watch?v=naCCxqMD13o&list=PLlI0-qAzf2Sa6agSVFbrrzyfNkU5--6b_&index=7

  • Neurone récurrent (unit)
  • cellule récurrente (plusieurs neurones ou unit)
  • LSTM
    • ht (yt dupliqué) appelé hiddent state est la mémoire court terme
    • ct est la mémoire long terme
  • GRU version plus récente et simplifié
# Serie to vector
inputs= tf.random.normal([32, 20, 8])   # shape (32, 20, 8)    batche de 32 sequences de 20 vecteurs de taille 8 
lstm = tf.keras.layers.LSTM(16)         # 16 units
output = lstm(inputs)                   # shape (32, 16),      batch de 32 Yt de taille 16 (car 16 units) 

# Serie to serie
lstm = tf.keras.layers.LSTM(18, return_sequences=True, return_state=True)
output, memory_state, carry_state = lstm(inputs)    
# output shape   (32, 20, 18)
# Memory state   (32, 18)
# Carry state    (32, 18)

Session de live coding :

Prediction of a 2D ladybug trajectory with a RNN

# Train generator, to genarate sequences fron the global sequence (total of the position)
from tensorflow.keras.preprocessing.sequence import TimeseriesGenerator
train_generator = TimeseriesGenerator(x_train, x_train, length=sequence_len,  batch_size=batch_size)
test_generato
# Create the model with sequential
model = keras.models.Sequential()
model.add( keras.layers.InputLayer(input_shape=(sequence_len, features_len)) )
# GRU with 200 units, return_sequences=False we only want the last position (sequence to vector)
model.add( keras.layers.GRU(200, return_sequences=False, activation='relu') )
# GRU output is a vector of 200 positions (because 200 units), we add Dense layer of 2 (x,y)
model.add( keras.layers.Dense(features_len) )
batch_size  = 512
epochs      =  16
# We pass the generator to fit method
history = model.fit(  x_train, y_train,
                      batch_size      = batch_size,
                      epochs          = epochs,
                      verbose         = fit_verbosity,
                      validation_data = (x_test, y_test))

Guess what the weather will be like !

  • SYNOP meteorological data, can be found on : https://public.opendatasoft.com
  • panda (qui est l’excel en ligne de commande), permet de faire de l’interpolation pour les données manquantes
Last modified August 26, 2023: Add youtube ref (475e9ed)