2- Architecture du réseau de neurones
récurrents - Recurrent Neural Network (RNN)
Pour une meilleure compréhension, nous utiliserons un
cas d'usage qui consiste à la génération de texte à
partir d'un texte initial en entrée.
Figure 7: Génération de texte
caractère par caractère
Un RNN prend en entrée une séquence (donc une
matrice de taille (T x M)) et retourne en sortie un vecteur de taille R qui est
une représentation compressée de la totalité de la
séquence de caractères. [9 ]
Figure 8 : Traitement d'une séquence de taille T un
réseau de neurone récurrent
Où,
l taille_séquence (T) = nombre (fixe) de
caractères par séquence (dimension temporelle). Le choix de T est
empirique et il y a un compromis à trouver : si T est petit, le
modèle aura la « mémoire courte ». Si T est grand,
l'entraînement sera très long et pas toujours efficace;
l nb_variables (M) = taille de la représentation
vectorielle de chaque caractère. Chaque caractère est donc
représenté par un vecteur de taille M grâce à des
techniques ( one-hot-encoding, word embedding);
l La taille R est fonction du nombre de neurones dans une couche
dense qui est un hyperparamètre à choisir.
Générer le caractère suivant consiste
à choisir le caractère le plus pertinent parmi les M
caractères possibles. Il faut donc que notre modèle produise une
sortie de taille M. Ce vecteur de sortie associe alors à chaque
caractère une probabilité d'être le suivant dans la
séquence, étant donné les T caractères
précédents.
Pour obtenir cette distribution de probabilité, on
empile une couche de neurones classiques (Appelée également
couche dense) de taille M à la suite de la couche RNN et on utilise une
fonction d'activation softmax. Considérons l'exemple ci-dessous : la
séquence d'entrée étant « il fait be »,
la probabilité de sortie la plus élevée pourrait
correspondre à la lettre « a », dans l'optique de
générer la phrase « il fait beau ».
Figure 9 : Prédiction de la distribution de
probabilité du caractère suivant à partir d'une
séquence initiale
Détaillons maintenant ce qui se passe à
l'intérieur-même de la couche RNN. Une couche RNN est une
succession de T cellules. Chaque cellule a deux entrées :
l L'élément correspondant de la séquence :
la tème cellule est associée au tème caractère de
la séquence;
l Le vecteur en sortie de la cellule précédente.
La première cellule, qui n'a pas d'antécédent, prend alors
un vecteur initialisé aléatoirement
Master Data Science - Big Data 20
Master Data Science - Big Data 21
Figure 10 : Une couche RNN, prenant en entrée des
séquences de 10 caractères
Dans une couche RNN, on parcourt donc successivement les
entrées x 1 à xT . À l'instant t, la tème
cellule combine l'entrée courante xt avec la prédiction au pas
précédent ht-1 pour calculer une sortie h t de taille
R.
Le dernier vecteur calculé h T (qui est de taille R) est
la sortie finale de la couche RNN. Une couche RNN définit donc une
relation de récurrence de la forme :
ht = f(xt, ht-1)
Master Data Science - Big Data 22
|