II- LES RÉSEAUX DE NEURONES
RÉCURRENTS
Les réseaux de neurones constituent aujourd'hui
l'état de l'art pour diverses tâches d'apprentissage automatique.
Ils sont très largement utilisés par exemple dans les domaines de
la vision par ordinateur, classification d'images, détection d'objets,
segmentation et du traitement automatique des langues (traduction automatique,
reconnaissance vocale, modèles de langage...). [ 10 ]
Le but ici c'est de décortiquer le réseau de
neurones récurrent - recurrent neural Network(RNN) afin d'en expliquer
leur fonctionnement.
1- Généralité
L'architecture globale des réseaux de neurones
récurrents tire son fondement de l'architecture du perceptron
multicouches (Multi-Layer Perceptron).
a- généralité sur Le perceptron
multicouches (MLP)
Les MLP sont des algorithmes de machine learning
supervisés. Ils prennent la description d'un objet en entrée, et
fournissent une prédiction en sortie. L'entrée est
représentée par un vecteur numérique, qui décrit
les caractéristiques ( features) de l'objet. Ce vecteur
traverse une succession de couches de neurones, où chaque neurone est
une unité de calcul élémentaire. La prédiction est
fournie en sortie sous la forme d'un vecteur numérique.
Dans le schéma suivant, une couche de MLP
reçoit en entrée un vecteur [a, b, c], et produit en sortie un
vecteur [h1, h2, h3, h4].
De façon simplifiée, nous pouvons
représenter une couche entière sous la forme d'une cellule. Le
schéma précédent devient alors :
Master Data Science - Big Data 18
b- du perceptron multicouche au réseau de
neurone récurrent
Supposons maintenant que nous travaillions sur un objet
dynamique. Nous souhaitions prédire le futur à partir d'une
entrée. Les variables d'entrée [a, b, c] ne sont plus des valeurs
uniques mais des séquences. Par exemple, la variable a est une suite
chronologique de n valeurs (a1, a2, ..., an).
Comment un réseau de neurones peut-il traiter ce genre
d'entrées ?
Une façon naïve de procéder serait de
mettre à plat l'ensemble des valeurs dans un unique vecteur (a1, ...,
an, b1, ..., bn, c1, ..., cn), et de les fournir en entrée de la
première couche d'un MLP. Cependant les MLP ne font aucune distinction
dans l'ordre des valeurs d'une couche. Cette méthode équivaut
ainsi à mélanger toutes les valeurs : la dynamique temporelle
serait annihilée, la relation entre les valeurs successives prises par
a, b et c serait perdue. De plus, le nombre de paramètres à
apprendre sur la première couche augmenterait proportionnellement avec
la longueur des séquences. En bref, la performance ne serait pas au
rendez-vous.
C'est là que les réseaux récurrents
(RNN) entrent en jeu. Un réseau récurrent est un type particulier
de réseaux de neurones, particulièrement adapté aux
données séquentielles. Une couche récurrente est
représentée de cette façon :
L'entrée est une séquence de vecteurs. Chacun
correspond à un incrément de temps. Une flèche en boucle
apparaît sur la cellule. En pratique, le RNN parcourt successivement les
entrées [a i, b i, c i ], et calcule des sorties intermédiaires
[h 1,i, h 2,i, h 3,i, h 4,i ]. Pour ce faire, il utilise non seulement
l'entrée courante, mais également la sortie calculée
précédemment [h 1,i-1 , h 2,i-1 , h 3,i-1 , h 4,i-1 ]. C'est la
signification de la boucle, qui symbolise le caractère récurrent
du RNN.
Master Data Science - Big Data 19
|