Vous êtes sur la page 1sur 9

Réseau neuronal recurrent “Recurrent Neural Network”

(RNN)

I. Qu'est-ce qu'un réseau neuronal (rappel) ?


Un réseau neuronal se compose de différentes couches connectées les unes aux autres,
fonctionnant sur la structure et la fonction d'un cerveau humain. Il apprend à partir d'énormes
volumes de données et utilise des algorithmes complexes pour former un réseau neuronal.
Voici un exemple de la manière dont les réseaux neuronaux peuvent identifier la race d'un
chien sur la base de leurs caractéristiques
1. Les pixels de l'image de deux races de chiens différentes sont introduits dans la couche
d'entrée du réseau neuronal.
2. Les pixels de l'image sont ensuite traités dans les couches cachées pour l'extraction de
caractéristiques.
3. La couche de sortie produit le résultat pour identifier s'il s'agit d'un berger allemand ou
d'un labrador.
4. De tels réseaux ne nécessitent pas la mémorisation des sorties précédentes.
Plusieurs réseaux neuronaux peuvent aider à résoudre différents problèmes commerciaux.
Examinons-en quelques-uns
Réseau neuronal de type Feed-Forward : Utilisé pour les problèmes généraux de
régression et de classification
Réseau neuronal convolutif : Utilisé pour la détection des objets et la classification
des images
RNN : Utilisé pour la reconnaissance de la parole, la reconnaissance vocale, la
prédiction de séries temporelles et le traitement du langage naturel.
II. Les réseaux neuronaux récurrents (RNN)
1. Qu'est-ce qu'un réseau neuronal récurrent (RNN) ?
Le RNN fonctionne sur le principe de l'enregistrement de la sortie d'une couche particulière et
de sa réinjection dans l'entrée afin de prédire la sortie de la couche. Voici comment convertir
un réseau de neurones à action directe en un réseau de neurones récurrent.
Les nœuds des différentes couches du réseau neuronal sont compressés pour former une seule
couche de réseau neuronal récurrent. A, B et C sont les paramètres du réseau.

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

= ℎ, = ∙ℎ +

2. Pourquoi des réseaux neuronaux récurrents ?


Les RNN ont été créés parce que le réseau neuronal à action directe présentait quelques
problèmes.
Impossible de traiter des données séquentielles
Ne prend en compte que l'entrée actuelle
Ne peut pas mémoriser les entrées précédentes
La solution à ces problèmes est le RNN. Un RNN peut traiter des données séquentielles, en
acceptant les données d'entrée actuelles et les entrées reçues précédemment. Les RNN
peuvent mémoriser les entrées précédentes grâce à leur mémoire interne.

3. Comment fonctionnent les réseaux neuronaux récurrents ?


Dans les réseaux neuronaux récurrents, l'information circule en boucle jusqu'à la couche
cachée intermédiaire.
La couche d'entrée "x" reçoit l'entrée du réseau neuronal, la traite et la transmet à la couche
intermédiaire.
Le réseau neuronal récurrent standardise les différentes fonctions d'activation, les poids et les
biais, de sorte que chaque couche cachée possède les mêmes paramètres. Ensuite, au lieu de
créer plusieurs couches cachées, il en crée une et boucle sur elle autant de fois que nécessaire.

4. Réseaux neuronaux à action directe et réseaux neuronaux récurrents


Un réseau neuronal à action directe permet aux informations de circuler uniquement dans le
sens direct, des nœuds d'entrée aux nœuds de sortie en passant par les couches cachées. Il n'y
a pas de cycles ou de boucles dans le réseau. Voici comment se présente une présentation
simplifiée d'un réseau neuronal de type "feed-forward".

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.

5. Applications des réseaux neuronaux récurrents


Les RNN sont utilisés pour légender une image en analysant les activités présentes.
Prédiction de séries temporelles : Tout problème de série chronologique, comme la
prédiction des prix des actions pour un mois donné, peut être résolu à l'aide d'un RNN.
Traitement du langage naturel : La génération de texte et l'analyse des sentiments peuvent
être réalisées à l'aide d'un RNN pour le traitement du langage naturel (NLP).
Traduction automatique : Étant donné une entrée dans une langue, les RNN peuvent être
utilisés pour traduire l'entrée dans différentes langues en sortie.

6. Types de réseaux neuronaux récurrents


Il existe quatre types de réseaux neuronaux récurrents
1. RNN un à un
Ce type de réseau neuronal est connu sous le nom de réseau neuronal Vanille. Il est utilisé
pour les problèmes généraux d'apprentissage automatique, avec une seule entrée et une seule
sortie.
2. RNN un à plusieurs
Ce type de réseau neuronal possède une entrée unique et des sorties multiples. Un exemple de
ce type de réseau est la génération de la légende d’une image

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)

print("Prediction from RNN:", y_pred_model)

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

2. Quel sera le nombre de paramètres entrainables de :


Réseau RNN ?
Réseau Dense ?
Nombre total des paramètres entrainables ?
3. Même question, cette fois-ci avec SIZE_OF_HIDDEN_OUTPUT = 3
4. Même question, cette fois-ci avec SIZE_OF_HIDDEN_OUTPUT = 3, et
TIME_STEPS = 4

Vous aimerez peut-être aussi