Réseau de neurones récurrents

Un article de Wikipédia, l'encyclopédie libre.
Schéma d'un réseau de neurones récurrents à une unité reliant l'entrée et la sortie du réseau. A droite la version dépliée de la structure.

Un réseau de neurones récurrents (RNN pour recurrent neural network en anglais) est un réseau de neurones artificiels présentant des connexions récurrentes. Un réseau de neurones récurrents est constitué d'unités (neurones) interconnectées interagissant non-linéairement et pour lequel il existe au moins un cycle dans la structure. Les unités sont reliées par des arcs (synapses) qui possèdent un poids. La sortie d'un neurone est une combinaison non linéaire de ses entrées.

Les réseaux de neurones récurrents sont adaptés pour des données d'entrée de taille variable. Ils conviennent en particulier pour l'analyse de séries temporelles[1]. Ils sont utilisés en reconnaissance automatique de la parole ou de l'écriture manuscrite - plus généralement en reconnaissance de formes - ou encore en traduction automatique. Dépliés, ils sont comparables à des réseaux de neurones classiques avec des contraintes d'égalité entre les poids du réseau (voir schéma à droite). Les techniques d'entraînement du réseau sont les mêmes que pour les réseaux classiques (rétropropagation du gradient), néanmoins les réseaux de neurones récurrents se heurtent au problème de disparition du gradient pour apprendre à mémoriser des évènements passés. Des architectures particulières répondent à ce dernier problème, on peut citer en particulier les réseaux Long short-term memory. On peut étudier les comportements des réseaux de neurones récurrents avec la théorie des bifurcations, mais la complexité de cette étude augmente très rapidement avec le nombre de neurones.

Réseaux Elman et réseaux Jordan[modifier | modifier le code]

Le réseau Elman

Un réseau Elman est un réseau de 3 couches (x, y, et z dans l'illustration) complété d'un ensemble d'unités de contexte (u dans l'illustration). La couche y du milieu (cachée) est connectée à ces unités de contexte, et a des poids[2]. A chaque étape, l'entrée est retransmise et une règle d'apprentissage est appliquée. Les connexions finales fixées enregistrent une copie des valeurs précédentes des unités cachées dans les unités de contexte (puisqu'elles propagent les connexions avant que la règle d'apprentissage soit appliquée). Donc le réseau peut maintenir une sorte d'état, lui permettant d'exécuter des tâches telles que la prédiction séquentielle qui est au-delà de la puissance d'un perceptron multicouche standard.

Les réseaux Jordan sont similaires aux réseaux Elman. Les unités de contexte sont alimentées par la couche de sortie à la place de la couche cachée. Les unités de contexte dans un réseau Jordan mentionnent aussi la couche d'état. Elles ont une connexion récurrente à elles-mêmes[2].

Les réseaux Elman et Jordan sont aussi connus comme des simples réseaux récurrents (SRN pour simple recurrent networks). Voici les équations pour deux types de réseaux :

Réseau Elman[3]
où :
  • est le vecteur d'entrée à l'instant t
  • est le vecteur de la couche cachée à l'instant t
  • est le vecteur de sortie à l'instant t
  • est la matrice entre la couche d'entrée et la couche cachée, est la matrice entre la couche cachée et elle-même, est la matrice entre la couche cachée et la couche de sortie, et est le vecteur de biais (, , , et sont les paramètres)
  • et sont les fonctions d'activation respectivement au niveau de la couche cachée et de la couche de sortie.
Réseau Jordan[4]

où les notations sont les mêmes sauf que est ici la matrice entre la couche de sortie et la couche cachée.

Problème de disparition du gradient[modifier | modifier le code]

Les réseaux de neurones récurrents classiques sont exposés au problème de disparition de gradient qui les empêche de modifier leurs poids en fonction d'évènements trop anciens[5]. Lors de l'entraînement, le réseau essaie de minimiser une fonction d'erreur dépendant en particulier de la sortie [pas clair]. Pour l'exemple donné ci-dessus, suivant la règle de dérivation en chaîne, la contribution au gradient de l'entrée est

représente la matrice tel que le seul terme non nul est le terme égal à 1. Pour des valeurs standard de la fonction d'activation et des poids du réseau le produit décroît exponentiellement en fonction de . Par conséquent la correction de l'erreur si cela doit faire intervenir un évènement lointain diminuera exponentiellement avec l'intervalle de temps entre cet évènement et le présent. Le réseau sera incapable de prendre en compte les entrées passées.

Architectures[modifier | modifier le code]

Long short-term memory[modifier | modifier le code]

Un réseau Long short-term memory (LSTM), en français réseau récurrent à mémoire court et long terme ou plus explicitement réseau de neurones récurrents à mémoire court-terme et long terme, est l'architecture de réseau de neurones récurrents la plus utilisée en pratique qui permet de répondre au problème de disparition de gradient. Le réseau LSTM a été proposé par Sepp Hochreiter et Jürgen Schmidhuber en 1997[6]. L'idée d'un LSTM est que chaque unité computationnelle est liée non seulement à un état caché mais également à un état de la cellule qui joue le rôle de mémoire. Le passage de à se fait par transfert à gain constant et égal à 1. De cette façon les erreurs se propagent aux pas antérieurs (jusqu'à 1 000 étapes dans le passé) sans phénomène de disparition de gradient. L'état de la cellule peut être modifié à travers une porte qui autorise ou bloque la mise à jour (input gate). De même une porte contrôle si l'état de cellule est communiqué en sortie de l'unité LSTM (output gate). La version la plus répandue des LSTM utilise aussi une porte permettant la remise à zéro de l'état de la cellule (forget gate)[7].

Équations[modifier | modifier le code]

Le schéma suivant indique grossièrement comment on calcule les différents valeurs.

  • Les symboles et représentent respectivement la fonction sigmoïde et la fonction tangente hyperbolique, bien que d'autres fonctions d'activation soient possibles. Chaque boîte et applique la fonction à l'entrée qui est une combinaison affine (les poids ne sont pas indiqués sur le schéma).
  • Chaque porte + correspond à l'addition de vecteurs
  • Chaque porte X correspond au produit matriciel de Hadamard (produit terme à terme).
Schéma d'un réseau LSTM à une unité. Le graphe des opérations est détaillé pour l'étape . Les poids ne sont pas indiqués.

Les valeurs initiales sont et . Dans les équations suivantes, l'opérateur symbolise le produit matriciel de Hadamard (produit terme à terme). Les équations suivantes décrivent précisément les calculs présentés dans le schéma ci-dessus :

Les vecteurs , et pour respectivement les portes d'oubli, d'entrée et de sortie à l'instant t s'obtiennent de la même façon : l'application de la fonction sigmoïde à des combinaisons affines à partir du vecteur d'entrée à l'instant t et du vecteur pour la couche cachée à l'instant t - 1. Ces vecteurs permettent alors de calculer le vecteur et le vecteur de la couche cachée à l'instant t.

Gated Recurrent Unit[modifier | modifier le code]

Un réseau Gated Recurrent Unit (GRU) (en français, réseau récurrent à portes ou plus explicitement réseau de neurones récurrents à portes) est une variante des LSTM introduite en 2014 par Kyunghyun Cho et al[8]. Les réseaux GRU ont des performances comparables aux LSTM pour la prédiction de séries temporelles (ex : partitions musicales, données de parole[9]). Une unité requiert moins de paramètres à apprendre qu'une unité LSTM. Un neurone n'est associé plus qu'à un état caché (plus de cell state) et les portes d'entrée et d'oubli de l'état caché sont fusionnées (update gate). La porte de sortie est remplacée par une porte de réinitialisation (reset gate).

Équations[modifier | modifier le code]

Schéma d'un réseau GRU à une unité.

Valeur initiale : .

Applications industrielles[modifier | modifier le code]

Ces réseaux sont utiles sur des processus temporels (prise en compte du passé d'une séquence) :

Notes et références[modifier | modifier le code]

  1. (en) Moskolai, Rose, Abdou, Wahabou, Dipanda, Albert et Kolyang, « Application of Deep Learning Architectures for Satellite Image Time Series Prediction: A Review », Remote Sensing, vol. 13, no 23,‎ , p. 4822 (lire en ligne).
  2. a et b Cruse, Holk; Neural Networks as Cybernetic Systems, 2nd and revised edition
  3. Jeffrey L. Elman, « Finding Structure in Time », Cognitive Science, vol. 14, no 2,‎ , p. 179–211 (DOI 10.1016/0364-0213(90)90002-E)
  4. Michael I. Jordan, « Serial Order: A Parallel Distributed Processing Approach », Advances in Psychology, vol. 121,‎ , p. 471–495 (ISBN 9780444819314, DOI 10.1016/s0166-4115(97)80111-2)
  5. (en) Hochreiter, Sepp, Bengio, Yoshua, Frasconi, Paolo et Schmidhuber, Jürgen, « Gradient Flow in Recurrent Nets: The Difficulty of Learning Long-Term Dependencies », A Field Guide to Dynamical Recurrent Networks, IEEE,‎
  6. (en) Hochreiter, Sepp et Schmidhuber, Jürgen, « Long Short-Term Memory », Neural Computation, vol. 9, no 8,‎ , p. 1735-1780
  7. (en) Gers, Felix, Schraudolph, Nicol et Schmidhuber, Jürgen, « Learning Precise Timing with LSTM Recurrent Networks », Journal of Machine Learning Research, vol. 3,‎ , p. 115-143
  8. (en) Kyunghyun Cho, Bart van Merrienboer, DZmitry Bahdanau et Yoshua Bengio, « On the Properties of Neural Machine Translation: Encoder-Decoder Approaches », arXiv,‎ (arXiv 1409.1259, lire en ligne)
  9. (en) Chung, Junyoung, Gulcehre, Caglar, Cho, KyungHyun et Bengio, Yoshua, « Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling », arXiv preprint arXiv:1412.3555,‎

Annexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]

Bibliographie[modifier | modifier le code]