Les réseaux de neurones récurrents (RNN pour Recurrent Neural Network) permettent de traiter des séquences temporelles (langage, vidéos, données numériques). Ils conservent la mémoire des données du passé pour prédire des séquences de données dans le futur proche. Cet article, qui traite des réseaux les plus utilisés actuellement, les LSTM, complète un précédent article de MetalBlog sur les réseaux de neurones traditionnels auquel on pourra se référer pour la compréhension du principe d’un réseau de neurones.
La production industrielle génère des données cycliques
Les process industriels grande série (fonderie, forge, …) génèrent pour la plupart un grand nombre de données (température d’outillage, pression, vitesse, ouverture ou fermeture d’une machine) qui sont souvent cycliques. La qualité des pièces produites est directement liée à la stabilité de ces paramètres qui peuvent dériver dans le temps. Les machines de production sont équipés de capteurs qui enregistrent ces données en temps réel. La prédiction de dérives ou de comportement anormal constitue un domaine d’intérêt important auquel le Machine Learning et les réseaux de neurones récurrents peuvent répondre.
Les types de réseaux de neurones récurrents
Les réseaux de neurones traditionnels analysent des données labelisées mais ne sont pas conçus pour faire des prédictions de séries temporelles (données évoluant dans le temps). Pour réaliser ce type de calcul, il existe trois grands types de réseaux de neurones récurrents : le RNN simple, le LSTM et enfin le GRU. Le RNN simple (appelé souvent « Vanilla RNN ») est la forme la plus basique de RNN. Il ne possède pas de portes (Gate), ce qui signifie que le flux d’informations n’est pas contrôlé et les informations essentielles à la tâche à accomplir peuvent être écrasées par des informations redondantes ou non pertinentes. En pratique, les RNN vanille ne sont pas utilisés et sont seulement étudiés à des fins d’enseignement. Les LSTM (Long-Short-Term-Memory) et les GRU (Gated Recurrent Unit) se composent de plusieurs portes (respectivement 3 et 2) qui permettent d’oublier ou de mémoriser sélectivement les informations de la séquence temporelle précédente dans une mémoire dynamique.
Comme pour les réseaux de neurones traditionnels, les réseaux de neurones récurrents peuvent contenir plusieurs couches, ce qui leur permet de capturer davantage de non-linéarité parmi les données, mais augmente également le temps de calcul en phase d’apprentissage. On peut également combiner des couches récurrentes avec des couches classiques, telles que des couches denses (MLP) ou des couches de convolution (CNN). Dans la bibliothèque Keras, il existe 7 types de réseaux RNN : LSTM layer, GRU layer, SimpleRNN layer, TimeDistributed layer, Bidirectional layer, ConvLSTM2D layer (pour le traitement de vidéo) et le Base RNN layer.
La limitation des RNN
Les RNN traditionnels (dite Vanilla Recurrent Network) présentaient une limitation dans l’apprentissage et se heurtaient au problème d’évanescence du gradient (Vanish Gradient Problem) ou de l’explosion du gradient lors de la phase d’apprentissage si la séquence temporelle en particulier était était trop longue.
En effet, la fonction d’activation tanh utilisée dans le RNN prend trop de valeur proche de zéro lors des opérations de dérivés pendant la descente du gradient. De plus, les RNNs «classiques » ne sont capables de mémoriser que le passé dit proche, et commencent à «oublier» au bout d’une cinquantaine d’itérations environ. Les LSTM permettent de passer outre ce verrou – par l’utilisation de la fonction sigmoïde – et disposent d’une mémoire interne qui se modifie en permanence de manière dynamique en fonction des séquences des données d’entrée. Sur de très longues périodes de temps, les LSTM peuvent cependant présenter des limitations elles aussi. Les LSTM, inventées en 1997, sont devenues une technologie majeure pour traiter les données temporelles.
Fonctionnement d’une cellule LSTM
Une cellule LSTM des réseaux de neurones récurrents est beaucoup plus complexe qu’une cellule de RNN traditionnelle ou qu’un neurone traditionnel. Une unité LSTM commune est composée d’une cellule, d’une porte d’oubli (Forget Gate), d’une porte d’entrée (Input Gate) et d’une porte de sortie (Output Gate) et gère une mémoire dynamique (notée C) qui évolue en fonction de la séquence de données temporelle. La Forget Gate est une opération amenant une capacité à oublier une information (ou à en diminuer fortement le poids) qui était utile au temps t-1 mais qui ne l’est plus à l’instant t. Input Gate est, à contrario, une opération qui offre à la cellule la capacité de stocker une nouvelle information à l’instant t alors que cette même information était inexistante ou peu pertinente (très faible poids) à l’instant t-1. Enfin, l’output Gate pilote l’information qui sera transmise au temps t+1 en fonction de la mémoire C et de fonction d’activation. La cellule LSTM, grâce à ce vecteur mémoire C, mémorise les valeurs sur des intervalles de temps arbitraires et les trois portes régulent le flux d’informations entrant et sortant de la cellule.
Performances et temps d’apprentissage d’un LSTM
Compte tenu de la structure plus complexe, en particulier la présence de 3 matrices de poids (Forget gate, Input gate et poids de calcul de la mémoire), il est logique que la phase d’apprentissage des LSTM requiert plus de temps que celle d’un réseau de neurones conventionnel ou de RNN. Mais, un LSTM donne de bien meilleures performances. Dans les faits, la plupart des résultats intéressants obtenus aujourd’hui par les réseaux récurrents sont en fait obtenus par des LSTM, en raison de leur capacité à gérer la dépendance à long terme.
Série temporelle
En entreprise, l’intérêt de travailler sur des séries temporelles est d’établir des prévisions. Mais pas seulement. On peut aussi chercher à évaluer l’importance d’une saisonnalité ou à distinguer si une évolution qui vient juste d’être constatée relève d’un mouvement conjoncturel ou structurel. Les séries chronologiques ont une particularité que l’on retrouve fréquemment. Elles obéissent souvent à plusieurs mouvements qui se superposent : une tendance (trend) observée sur une longue durée, un éventuel cycle qui imprime à la tendance une suite de vagues, une ou plusieurs composantes périodiques (ou saisonnières) et des fluctuations conjoncturelles, sinon aléatoires du moins inexpliquées. Ces éléments peuvent s’additionner ou avoir des effets multiplicatifs les uns sur les autres,.
Mesurer le résultat d’un LSTM avec une Metric RMSE
Pour mesurer la justesse de prédiction d’un LSTM, après la phase d’entrainement, on réalise une phase de test pendant laquelle on mesure l’écart entre les observations et la prédiction. On utilise différentes « metrics » de mesure et assez souvent le RMSE (pour Root Mean Square Error) qui est est la moyenne arithmétique des carrés des écarts entre prévisions du modèle et observations. Comme on cherche à prédire une séquence de quelques valeurs dans le temps, à t+1, t+2 et t+3, on mesure le RMSE à ces 3 temps.
Test des LSTM sur des données synthétiques
Nous avons testé un LSTM (optimizer ‘adam’) réalisé avec la librairie TensorFlow- Keras et la fonction « Sequential LSTM » sur plusieurs batch de données synthétiques afin de contrôler finement le data-set. Dans tous les cas, nous nous sommes attachés à prédire les 10 dernières données (le test-set) par série de 3 valeurs (t+1, t+2 et t+3). Cela signifie que le LSTM n’a été configuré que pour prédire 3 valeurs consécutives. Comme pour tout réseau de neurones, les données initiales doivent être normalisées, entre -1 et 1, ce qui se réalise en appliquant l’opération de preprocessing MinMaxScaler de la librairie Scikit-Learn.
Influence du nombre de cycles d’apprentissage sur le RMSE
Sur un cycle fluctuant de manière régulière entre les valeurs 50 et 55 (variation de 5), nous avons étudié tout d’abord l’influence du nombre de cycles d’apprentissage sur la qualité de la prédiction (courbes en rouge dans la suite de cet article). Il ressort que plus le nombre de cycles d’apprentissage est important (entre 1 et 5 dans notre cas) et plus l’erreur (RMSE) est réduite. En effet, pour un seul cycle d’apprentissage, l’erreur moyenne (entre t+1 et t+3) est importante (2.692, soit plus de la moitié de la variation). Alors que pour 5 cycles d’apprentissage, le RMSE moyen est divisé par 10, passant de 2.692 à 0.310. On remarque également que l’erreur de prédiction est toujours plus réduite pour la première valeur (t+1) de la séquence et augmente à t+2 pour doubler en moyenne pour la dernière valeur (t+3).
Apprentissage ou non d’une rampe régulière
Nous avons ensuite comparé le comportement du même LSTM avec dans un premier cas des données d’apprentissage où n’apparait pas la rampe à prédire ultérieurement (dans les 10 dernières valeurs du Test Set) et un second cas où dans les données d’apprentissage apparaît bien la rampe à prédire (parmi d’autres rampes un peu différentes). On s’aperçoit, sans réelle surprise, que l’erreur est bien plus réduite sur la prédiction de 3 valeurs consécutives quand les données d’apprentissage contiennent une rampe identique. Dans l’autre cas, les données prédites ne suivent pas la rampe et se contentent d’osciller à partir du point de début de prédiction en reproduisant les oscillations antérieures de faibles amplitudes des données d’apprentissage.
Influence d’un signal plat intermédiaire sur la prédiction
Nous avons modifié à présent les données d’apprentissage en introduisant des données constantes (signal plat à 50) pendant un certain temps pour un réseau LSTM avec 3 neurones pour appréhender si le LSTM se souviendra bien du signal initial « appris » (cycle entre 50 et 55). Comme on peut le constater, la réponse est relativement bonne avec une erreur réduite et un signal prédit (en rouge) qui suit très bien les courbes. Dans ce cas cependant, les données d’apprentissage initiales sont nombreuses car on a reproduit de multiples fois (à 12 reprises) le cycle entre 50 et 55 avant le signal plat, ce qui a laissé te temps au LSTM d’ajuster des poids avec une forte imprégnation sur ce type de cycle régulier. Le signal plat n’a donc pas effacé le « souvenir » des cycles entre 50 et 55 appris par le LSTM.
Influence du nombre de neurones sur la qualité de la prédiction
Sur un data-set contenant une chute locale brutale des valeurs, nous avons analysé l’influence du nombre de neurones du LSTM sur la qualité de la prédiction. On peut constater que pour 3 neurones, le LSTM se contente de reproduire l’oscillation (entre 50 et 51) en l’adaptant au niveau de valeurs qui chutent mais ne prédit pas du tout la variation brutale. Inversement, le LSTM à 5 neurones reproduit assez bien la chute brutale, puis la remontée des valeurs avec un erreur RMSE plus réduite. Le LSTM avec 7 neurones n’apporte pas de gain manifeste pour un temps de calcul en phase d’apprentissage supérieur. Cependant, dans tous les cas, le LSTM a du mal à prédire les premiers points de la chute brutale et donne de meilleurs résultats en cours de chute ou lors de la remontée.
Influence de l’ancienneté des données d’apprentissage
Enfin, nous avons reproduit 3 calculs identiques, avec le même type de rampe brutale de l’étude de cas précédent et un LSTM avec 5 neurones, mais en éloignant progressivement la rampe d’apprentissage du test set de prédiction. On s’aperçoit que si l’erreur RMSE est sensiblement stable entre un éloignement de 60 et 80 valeurs numériques, cette erreur augmente sensiblement lorsque l’éloignement dans le temps augmente est de 100 valeurs
Les LSTM, un fort potentiel pour la prédiction de séries temporelles
Ces réseaux de neurones récurrents LSTM à large « mémoire court-terme » ont révolutionné la reconnaissance de la voix (Speech Recognition), la compréhension et la génération de texte (Natural Langage Processing) ou la prédiction sur des séries numériques de données temporelles. Il est clair que pour la prédiction de séries temporelles, les LSTM donnent de bien meilleurs résultats que les réseaux de neurones traditionnels qui ne sont pas adaptés à ce type de tâche. Le temps de calcul en phase d’apprentissage est cependant nettement augmenté avec les LSTM du fait d’un nombre de poids du réseau fortement augmenté. A noter que de nouvelles technologies, les Transformers, basés sur le mécanismes d’attention, pourraient à termes, prendre une place de plus en plus importante pour le traitement des séries temporelles.
Bonjour,
Excellent travail.
Est ce que je peux avoir les scripts ?
Bonjour Ahmed. Merci pour votre intérêt pour notre article sur les réseaux de neurones récurrents pour les séries temporelles. Vous trouverez sur le net de nombreux exemples, code et tutoriels sur ce sujet.