Académique Documents
Professionnel Documents
Culture Documents
(RNN)
Ici, "x" est la couche d'entrée, "h" est la couche cachée et "y" est la couche de sortie. A, B et C
sont les paramètres du réseau utilisés pour améliorer la sortie du modèle. À tout moment t,
l'entrée actuelle est une combinaison des entrées x(t) et x(t-1). La sortie à un instant donné est
réinjectée dans le réseau pour améliorer la sortie.
À chaque instant , nous pouvons déplier le réseau pour d'obtenir la sortie à l’instant + 1. Le
réseau déplié est très similaire au réseau neuronal à action directe. Ainsi, par exemple, avec
une fonction d'activation :
ℎ = ,ℎ , , , = + ℎ +
La sortie à l’instant est calculée comme suit
= ℎ, = ∙ℎ +
Dans un réseau neuronal de type feed-forward, les décisions sont basées sur l'entrée actuelle.
Il ne mémorise pas les données passées, et il n'y a pas de portée future. Les réseaux neuronaux
à action directe sont utilisés dans les problèmes généraux de régression et de classification.
3. RNN plusieurs à un
Ce RNN prend une séquence d'entrées et génère une sortie unique. L'analyse des sentiments
est un bon exemple de ce type de réseau, où une phrase donnée peut être classée comme
exprimant des sentiments positifs ou négatifs.
4. RNN plusieurs à plusieurs
Ce RNN prend une séquence d'entrées et génère une séquence de sorties. La traduction
automatique est l'un des exemples
III. Utilisation des RNNs avec Keras :
1. Syntaxe d’utilisation :
Un RNN peut être instancié dans Keras avec la classe SimpleRNN
from keras.models import Sequential
from keras.layers import SimpleRNN
model = Sequential()
model.add(SimpleRNN(units=SIZE_OF_HIDDEN_OUTPUT, input_shape=(TIME_STE
PS,NUMBER_OF_FEATURS), activation=ACTIVATION_FUNCTION))
Avec:
SIZE_OF_HIDDEN_OUTPUT: La taille du vecteur de sortie cachée (ℎ )
TIME_STEPS: Le nombre d’itérations de l’RNN (nombre de couches)
NUMBER_OF_FEATURS: Nombre de données d’entrée
ACTIVATION_FUNCTION: La fonction d’activation (exemple: ReLu,…etc)
Exemple illustré :
2. Exemple :
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, SimpleRNN
model = Sequential()
model.add(SimpleRNN(units=2, input_shape=(3,1), activation='linear'))
model.add(Dense(units=1, activation='linear'))
model.compile(loss='mean_squared_error', optimizer='adam')
x = np.array([1, 2, 3])
# Reshape the input to the required sample_size x time_steps x feature
s
x_input = np.reshape(x, (1, 3, 1))
y_pred_model = model.predict(x_input)
3. Exercice:
En travaillant sur l’exemple précédent, répondez à ce qui suit :
1. Donner les calculs à chaque itération du réseau RNN avec :
h0 = np.zeros(2) (la sortie cachée initiale)
wx le vecteur de poids de l’entrée x
bh le vecteur de poids du biais
wh le vecteur de poids des sorties cachées
wy le vecteur de poids de la prédiction finale
by le vecteur de poids du biais de la prédiction finale
Donner les calculs en fonction de h0, h1, h2 et h3
Indications :
utiliser np.dot(valeur1, valeur2) pour calculer le produit scalaire.
N’oubliez pas que x est un tableau de 3 valeurs